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_I2C_ADDR = 0x27
LCD_COLUMNS = 16
LCD_ROWS = 2
v=Pin(15,Pin.OUT)
r=Pin(2,Pin.OUT)
g1=0
g2=0
g3=0
g4=0
f=1
c=0
e=0
lcd = I2cLcd(i2c, LCD_I2C_ADDR, LCD_ROWS, LCD_COLUMNS)
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()
# Mensaje inicial en la pantalla LCD
lcd.putstr("Introduce Pin: ")
#v.value(1)
last_key = None # Variable para almacenar la última tecla presionada
try:
while True:
key = keypad.get_key()
if key and key != last_key:# Si hay una nueva tecla presionada
c+=1
lcd.move_to(c, f) # Mueve el cursor a donde comenzará el mensaje de la tecla
# lcd.putstr(" ") # Limpia la posición de la tecla anterior
#lcd.move_to(1, 1) # Vuelve a mover el cursor al inicio de la posición de la tecla
lcd.putstr("*") # Muestra la nueva tecla presionada
last_key = key # Actualiza la última tecla presionada
if c<5:
if key=="1" or g1==1:
g1=1
if key=="2" or g2==1:
g2=1
if key=="3" or g3==1:
g3=1
if key=="4" or g4==1:
g4=1
if c>=3:
c=3
if key=="*":
lcd.clear() # Limpia la posición de la tecla anterior
lcd.putstr("Introduce Pin: ")
v.value(0)
r.value(0)
c=0
g1=0
g2=0
g3=0
g4=0
if key=="#":
if g1==1 and g2==1 and g3==1 and g4==1:
lcd.move_to(1, 1) # Mueve el cursor a donde comenzará el mensaje de la tecla
lcd.putstr(" ") # Limpia la posición de la tecla anterior
lcd.move_to(1, 1) # Vuelve a mover el cursor al inicio de la posición de la tecla
lcd.putstr("Clave Correcta") # Muestra la nueva tecla presionada
v.value(1)
if g1!=1 or g2!=1 or g3!=1 or g4!=1:
#lcd.move_to(1, 1) # Mueve el cursor a donde comenzará el mensaje de la tecla
lcd.clear()
#lcd.putstr(" ") # Limpia la posición de la tecla anterior
lcd.move_to(0, 1) # Vuelve a mover el cursor al inicio de la posición de la tecla
lcd.putstr("Clave incorrecta") # Muestra la nueva tecla presionada
sleep(2)
lcd.clear()
lcd.putstr("Introduce Pin: ")
e+=1
c=0
g1=0
g2=0
g3=0
g4=0
if e==4:
#lcd.move_to(1, 1) # Mueve el cursor a donde comenzará el mensaje de la tecla
lcd.clear()
#lcd.putstr(" ") # Limpia la posición de la tecla anterior
lcd.move_to(5, 1) # Vuelve a mover el cursor al inicio de la posición de la tecla
lcd.putstr("Bloqueado ") # Muestra la nueva tecla presionada
r.value(1)
sleep(20)
lcd.clear()
lcd.putstr("Introduce Pin: ")
r.value(0)
c=0
g1=0
g2=0
g3=0
g4=0
print(key)
print(c)
print(g1)
print(g2)
print(g3)
print(g4)
sleep(0.1)
finally:
keypad.stop()