import max7219
from machine import Pin, SPI
import time
# Configuración de la pantalla max7219
spi = SPI(1, baudrate=10000000, polarity=1, phase=0, sck=Pin(4), mosi=Pin(2))
ss = Pin(5, Pin.OUT)
display = max7219.Matrix8x8(spi, ss, 4)
# Configuración de los pines para los botones
boton_ascendente = Pin(13, Pin.IN, Pin.PULL_UP) # Pin 13 como botón de conteo ascendente
boton_descendente = Pin(12, Pin.IN, Pin.PULL_UP) # Pin 12 como botón de conteo descendente
boton_reiniciar = Pin(14, Pin.IN, Pin.PULL_UP) # Pin 14 como botón de reiniciar
boton_pausa = Pin(27, Pin.IN, Pin.PULL_UP) # Pin 27 como botón de pausa
contador = 0
congelado = False
modo = "ascendente" # Modo inicial del contador
debounce_time = 0.05 # Tiempo de debounce para los botones
def mostrar_contador():
display.fill(0)
display.text(str(contador), 0, 0, 1)
display.show()
def debounce(pin):
if not pin.value():
time.sleep(debounce_time)
if not pin.value():
return True
return False
while True:
if debounce(boton_ascendente):
modo = "ascendente"
congelado = False
if debounce(boton_descendente):
modo = "descendente"
congelado = False
if debounce(boton_reiniciar):
contador = 0
mostrar_contador()
if debounce(boton_pausa):
congelado = not congelado
if not congelado:
if modo == "ascendente":
contador += 1
if contador > 9999: # Reiniciar si supera 9999
contador = 0
elif modo == "descendente":
contador -= 1
if contador < 0:
contador = 9999
mostrar_contador()
time.sleep(0.05) # Ajustar la velocidad del conteo a 0.05 segundos
time.sleep(0.01) # Pequeña pausa para reducir la carga del bucle