from machine import Pin
import time
# pulsadores para codigo
boton1 = Pin(19, Pin.IN) # amarillo
boton2 = Pin(21, Pin.IN) # azul
boton3 = Pin(22, Pin.IN) # rojo
boton4 = Pin(23, Pin.IN) # gris
# pulsadores extra
botonEnter = Pin(17, Pin.IN) # verde
botonCambiar = Pin(18, Pin.IN) # negro
# luces
led_ok = Pin(2, Pin.OUT) # verde = ok
led_error = Pin(4, Pin.OUT) # rojo = error
# Variable global para el codigo
codigo_uci = []
# Función para pedir codigo al principio
def pedir_primer_codigo():
codigo_temp = []
print("Hola! Ingresa el codigo de acceso de la UCI:")
print("Usa los botones 1-4 y luego Enter")
while True:
# Revisamos si apretaron enter y ya hay numeros
if botonEnter.value() == 1 and len(codigo_temp) > 0:
print("Listo! Codigo guardado")
time.sleep(0.3) # esperar para evitar rebotes
return codigo_temp
# Revisamos cada boton
if boton1.value() == 1:
codigo_temp.append(1)
print("Presionaste: 1")
time.sleep(0.3) # evitar rebotes
if boton2.value() == 1:
codigo_temp.append(2)
print("Presionaste: 2")
time.sleep(0.3)
if boton3.value() == 1:
codigo_temp.append(3)
print("Presionaste: 3")
time.sleep(0.3)
if boton4.value() == 1:
codigo_temp.append(4)
print("Presionaste: 4")
time.sleep(0.3)
# Para leer cuando alguien ingresa codigo
def leer_botones():
entrada = []
print("Ingresa el codigo con los botones y luego Enter:")
while True:
# Si apretaron Enter y ya hay algo ingresado
if botonEnter.value() == 1 and len(entrada) > 0:
print("Verificando codigo:", entrada)
time.sleep(0.3)
return entrada
# Los botones numericos
if boton1.value() == 1:
entrada.append(1)
print("1")
time.sleep(0.3)
if boton2.value() == 1:
entrada.append(2)
print("2")
time.sleep(0.3)
if boton3.value() == 1:
entrada.append(3)
print("3")
time.sleep(0.3)
if boton4.value() == 1:
entrada.append(4)
print("4")
time.sleep(0.3)
# Funcion para ver si el codigo es correcto
def revisar_codigo(codigo_ingresado):
# Comparamos con el guardado
if codigo_ingresado == codigo_uci:
led_ok.value(1) # luz verde
print("Acceso concedido! Bienvenido")
time.sleep(2)
led_ok.value(0)
return True
else:
led_error.value(1) # luz roja
print("Acceso denegado, intenta otra vez")
time.sleep(2)
led_error.value(0)
return False
# INICIO DEL PROGRAMA
# Pedir el primer codigo
codigo_uci = pedir_primer_codigo()
print("Sistema listo!")
# BUCLE PRINCIPAL
while True:
# Ver si quieren cambiar el codigo
if botonCambiar.value() == 1:
print("Modo: CAMBIO DE CODIGO")
print("Ingresa el nuevo codigo:")
nuevo = leer_botones()
codigo_uci = nuevo # guardamos el nuevo
print("Codigo cambiado correctamente!")
time.sleep(1)
intento = leer_botones()
revisar_codigo(intento)
# Pequeña pausa para no saturar
time.sleep(0.1)