from machine import I2C, Pin
from lcd_api import LcdApi
from pico_i2c_lcd import I2cLcd # Asume que i2c_lcd es parte de tu biblioteca lcd_api
from keypad_utp import KeyPad
from time import sleep
# Configuración inicial de I2C y LCD
i2c = I2C(scl=Pin(22), sda=Pin(21))
lcd = I2cLcd(i2c, 0x27, 2, 16)
LEDR = Pin(26,Pin.OUT)
LEDG = Pin(25,Pin.OUT)
Teclas = [
'1', '2', '3', 'A',
'4', '5', '6', 'B',
'7', '8', '9', 'C',
'*', '0', '#', 'D',
]
keypad = KeyPad(r1=19, r2=18, r3=5, r4=4, c1=13, c2=12, c3=14, c4=27, keys=Teclas)
keypad.start()
password = 4743
pos = 0
intentos = 0
def INICIO():
lcd.move_to(0, 0)
lcd.putstr("CLAVE:")
lcd.move_to(0, 1)
def BIPGREEN():
LEDG.value(1)
sleep(0.2)
LEDG.value(0)
sleep(0.2)
LEDG.value(1)
sleep(0.2)
LEDG.value(0)
sleep(0.2)
LEDG.value(1)
sleep(0.2)
LEDG.value(0)
sleep(0.2)
def BIPRED():
LEDR.value(1)
sleep(0.2)
LEDR.value(0)
sleep(0.2)
LEDR.value(1)
sleep(0.2)
LEDR.value(0)
sleep(0.2)
LEDR.value(1)
sleep(0.2)
LEDR.value(0)
sleep(0.2)
try:
while True:
INICIO()
key = keypad.get_key()
if key:
if pos <= 3:
lcd.move_to(pos, 1)
lcd.putstr(key) # Muestra la nueva tecla presionada
if pos == 0:
d0 = key
if pos == 1:
d1 = key
if pos == 2:
d2 = key
if pos == 3:
d3 = key
if key == '*':
lcd.clear()
pos = 0
if pos == 3:
d3 = key
while True:
if keypad.get_key() == '#':
lcd.clear()
break
pos = pos + 1
if key == '*':
lcd.clear()
pos = 0
if pos > 3:
user = d0 + d1 + d2 + d3
userINGRE = int(user)
sleep(0.2)
lcd.clear()
if userINGRE == password:
lcd.move_to(0, 0)
lcd.putstr(" >> OK << ")
BIPGREEN()
if userINGRE != password:
lcd.move_to(0, 0)
lcd.putstr(" ERROR!!! ")
intentos = intentos + 1
BIPRED()
if intentos >= 3:
lcd.move_to(0, 0)
lcd.putstr("> User blocked <")
LEDR.value(1)
sleep(1000)
LEDR.value(0)
sleep(0.2)
lcd.clear()
pos = 0
sleep(0.1)
finally:
keypad.stop()