from machine import Pin
import time
#-----------------------------------------------------------------------------------
pines= [Pin(13, Pin.OUT), Pin(12, Pin.OUT), Pin(14, Pin.OUT),
Pin(27, Pin.OUT), Pin(26, Pin.OUT), Pin(25, Pin.OUT),
Pin(33, Pin.OUT)]
#-----------------------------------------------------------------------------------
comunes = [Pin(16, Pin.OUT), Pin(4, Pin.OUT)]
#-----------------------------------------------------------------------------------
start_stop = Pin(5, Pin.IN, Pin.PULL_UP)
incrementar = Pin(18, Pin.IN, Pin.PULL_UP)
decrementar = Pin(19, Pin.IN, Pin.PULL_UP)
configuracion= Pin(21, Pin.IN, Pin.PULL_UP)
#-----------------------------------------------------------------------------------
led= Pin(17, Pin.OUT)
numeros = [
0b00111111, # 0
0b00000110, # 1
0b01011011, # 2
0b01001111, # 3
0b01100110, # 4
0b01101101, # 5
0b01111101, # 6
0b00000111, # 7
0b01111111, # 8
0b01101111 # 9
]
#-----------------------------------------------------------------------------------
def display(piness, catodo, digito):
desplazamiento = numeros[digito]
for i in range(7):
piness[i].value((desplazamiento >> i) & 0b0001)
catodo.value(0)
time.sleep(0.001)
catodo.value(1)
#-----------------------------------------------------------------------------------
# Definir valor_guardado como una variable global
# Valor inicial predeterminado
def datos():
valor_inicial = 50
contador = valor_inicial # Iniciar desde el valor guardado
configurando = False # Bandera para saber si estamos en modo de configuración
mostrar = False # Inicialmente el contador no está mostrando
boton_anterior_start = start_stop.value()
boton_anterior_decrementar = decrementar.value()
boton_anterior_incrementar = incrementar.value()
boton_anterior_configuracion = configuracion.value() # Botón de configuración
while True:
unidades = contador % 10
decenas = contador // 10
# Leer el estado actual de los botones
boton_actual_start = start_stop.value()
boton_actual_decrementar = decrementar.value()
boton_actual_incrementar = incrementar.value()
boton_actual_configuracion = configuracion.value()
# Detectar cambio en el botón de start/stop
if boton_actual_start == 1 and boton_anterior_start == 0:
mostrar = not mostrar # Alterna entre pausa y reanudar
# Detectar cambio en el botón de configuración cuando el contador está pausado
if mostrar and boton_actual_configuracion == 1 and boton_anterior_configuracion == 0:
configurando = not configurando # Alterna el estado de configuración
if configurando:
led.value(1) # Enciende el LED indicando que estamos configurando
else:
led.value(0) # Apaga el LED indicando que ya no estamos configurando
valor_inicial = contador # Guardar el valor actual cuando salimos de configuración
print(f"Valor guardado: {valor_inicial}") # Muestra el valor guardado en consola
# Si estamos en modo de configuración, permitir incrementar o decrementar
if configurando:
# Detectar cambio en el botón de incrementar
if boton_actual_incrementar == 1 and boton_anterior_incrementar == 0:
contador += 1 # Incrementar el contador
if contador == 100: # Si llega a 100, reiniciar a 0
contador = valor_inicial
# Detectar cambio en el botón de decrementar
if boton_actual_decrementar == 1 and boton_anterior_decrementar == 0:
contador -= 1 # Decrementar el contador
if contador < 0: # Si llega a -1, reiniciar a 99
contador = valor_inicial
# Actualiza el estado anterior de los botones
boton_anterior_start = boton_actual_start
boton_anterior_decrementar = boton_actual_decrementar
boton_anterior_incrementar = boton_actual_incrementar
boton_anterior_configuracion = boton_actual_configuracion
# Mostrar el número en el display
for _ in range(50): # Refresca el display 50 veces para multiplexar correctamente
display(pines, comunes[0], decenas)
display(pines, comunes[1], unidades)
# Si no está pausado, incrementar automáticamente el contador
if not mostrar and not configurando:
contador += 1 # Incrementa normalmente si no se ha presionado ningún botón y no está configurando
if contador == 100:
contador = valor_inicial
# Al reiniciar el código, comenzará desde el valor guardado
datos()