from machine import Pin, I2C
import time
# I2C Setup
i2c = I2C(0, scl=Pin(22), sda=Pin(21), freq=400000)
LCD_ADDR = 0x27
# Fungsi kirim data ke LCD
def lcd_send(addr, data, mode):
buf = [(data & 0xF0) | mode | 0x08, (data & 0xF0) | mode | 0x0C, (data & 0xF0) | mode | 0x08]
i2c.writeto(addr, bytes(buf))
buf = [((data << 4) & 0xF0) | mode | 0x08, ((data << 4) & 0xF0) | mode | 0x0C, ((data << 4) & 0xF0) | mode | 0x08]
i2c.writeto(addr, bytes(buf))
def lcd_init(addr):
for cmd in [0x33, 0x32, 0x28, 0x0C, 0x06, 0x01]:
lcd_send(addr, cmd, 0)
time.sleep_ms(5)
# Fungsi tampilkan teks
def lcd_print(text, line):
if line == 1:
lcd_send(LCD_ADDR, 0x80, 0)
if line == 2:
lcd_send(LCD_ADDR, 0xC0, 0)
for char in text:
lcd_send(LCD_ADDR, ord(char), 1)
# Inisialisasi LCD
lcd_init(LCD_ADDR)
# Push Button
tombol_masuk = Pin(18, Pin.IN, Pin.PULL_UP)
tombol_keluar = Pin(19, Pin.IN, Pin.PULL_UP)
jumlah = 0
lcd_print("Counter Orang",1)
lcd_print("Total: 0",2)
while True:
# tombol masuk
if tombol_masuk.value() == 0:
jumlah += 1
print("Masuk, total:", jumlah)
lcd_print("Orang Masuk ",1)
lcd_print("Total: {}".format(jumlah),2)
time.sleep(0.4)
# tombol keluar
if tombol_keluar.value() == 0:
if jumlah > 0:
jumlah -= 1
print("Keluar, total:", jumlah)
lcd_print("Orang Keluar ",1)
lcd_print("Total: {}".format(jumlah),2)
time.sleep(0.4)