import machine
from machine import I2C, Pin
from lcd_api import LcdApi
from pico_i2c_lcd import I2cLcd
import utime
# Configura la pantalla LCD I2C (ajusta la dirección I2C según tu pantalla)
i2c = I2C(0, sda=machine.Pin(0), scl=machine.Pin(1), freq=400000)
I2C_ADDR = i2c.scan()[0]
lcd = I2cLcd(i2c, I2C_ADDR, 2, 16)
# Lista de opciones del menú
opciones = ["Opción 1", "Opción 2", "Opción 3", "Salir"]
seleccion_actual = 0
# Función para mostrar el menú en la pantalla LCD
def mostrar_menu():
lcd.clear()
lcd.putstr("Seleccione una opción:")
for i, opcion in enumerate(opciones):
if i == seleccion_actual:
lcd.putstr("\n> " + opcion)
else:
lcd.putstr("\n " + opcion)
boton_arriba = machine.Pin(4, machine.Pin.IN, machine.Pin.PULL_UP)
boton_abajo = machine.Pin(5, machine.Pin.IN, machine.Pin.PULL_UP)
boton_seleccion = machine.Pin(6, machine.Pin.IN, machine.Pin.PULL_UP)
# Bucle principal
while True:
mostrar_menu()
# Esperar a que se presione un botón
while True:
if not boton_arriba.value():
seleccion_actual = (seleccion_actual - 1) % len(opciones)
break
elif not boton_abajo.value():
seleccion_actual = (seleccion_actual + 1) % len(opciones)
break
elif not boton_seleccion.value():
if seleccion_actual == len(opciones) - 1:
# Salir del programa si se selecciona "Salir"
machine.reset()
else:
# Realizar la acción correspondiente a la opción seleccionada
lcd.clear()
lcd.putstr("Realizando acción\npara: " + opciones[seleccion_actual])
utime.sleep(2) # Simular una acción
break
utime.sleep(0.1) # Pequeña pausa para evitar la repetición