from machine import Pin, I2C
import utime
from i2c_lcd import I2cLcd
# Inicialización del botón (GPIO 11 con PULL_DOWN)
boton = Pin(11, Pin.IN, Pin.PULL_DOWN)
# Configuración del bus I2C (GPIO20 = SDA, GPIO21 = SCL)
i2c = I2C(0, sda=Pin(20), scl=Pin(21), freq=400000)
# Escanear dispositivos I2C conectados
direcciones = i2c.scan()
if not direcciones:
print("No se encontró ningún dispositivo I2C.")
while True:
pass
# Usamos la primera dirección detectada
direccion_lcd = direcciones[0]
# Inicializar LCD de 16x2
lcd = I2cLcd(i2c, direccion_lcd, 2, 16)
# Contador de pulsaciones
contador = 0
tiempo_antirrebote = 200 # ms
ultimo_tiempo = 0
# Mostrar mensaje inicial
lcd.clear()
lcd.putstr("Contador listo")
while True:
if boton.value() == 1:
tiempo_actual = utime.ticks_ms()
if utime.ticks_diff(tiempo_actual, ultimo_tiempo) > tiempo_antirrebote:
contador += 1
lcd.clear()
lcd.putstr("Pulsaciones:\n{}".format(contador))
ultimo_tiempo = tiempo_actual
# Esperar a que el botón se suelte
while boton.value() == 1:
pass