import time
from machine import Pin
time.sleep(0.1)
# Botones
incremento = Pin(28, Pin.IN, Pin.PULL_DOWN)
decremento = Pin(27, Pin.IN, Pin.PULL_DOWN)
reset = Pin(26, Pin.IN, Pin.PULL_DOWN)
display = Pin(22, Pin.IN, Pin.PULL_DOWN)
# Segmentos
segmentos = [
Pin(2, Pin.OUT),
Pin(3, Pin.OUT),
Pin(4, Pin.OUT),
Pin(5, Pin.OUT),
Pin(6, Pin.OUT),
Pin(7, Pin.OUT),
Pin(8, Pin.OUT)
]
numeros = [
[1,1,1,1,1,1,0], # 0
[0,1,1,0,0,0,0], # 1
[1,1,0,1,1,0,1], # 2
[1,1,1,1,0,0,1], # 3
[0,1,1,0,0,1,1], # 4
[1,0,1,1,0,1,1], # 5
[1,0,1,1,1,1,1], # 6
[1,1,1,0,0,0,0], # 7
[1,1,1,1,1,1,1], # 8
[1,1,1,1,0,1,1] # 9
]
digitos_display = [
Pin(10, Pin.OUT),
Pin(11, Pin.OUT),
Pin(12, Pin.OUT),
Pin(13, Pin.OUT)
]
sonido = Pin(0, Pin.OUT)
turno = 0
estado_incremento = 0
estado_decremento = 0
estado_reset = 0
estado_boton_display = 0
display_encendido = True
def pulsado(boton, estado_anterior):
estado_actual = boton.value()
presionado = False
if estado_anterior == 0 and estado_actual == 1:
presionado = True
estado_anterior = estado_actual
return presionado, estado_anterior
def mostrar_numero(numero, indice):
for d in digitos_display:
d.on()
for i in range(7):
segmentos[i].value(numeros[numero][i])
digitos_display[indice - 1].off()
time.sleep_ms(2)
def mostrar_guion(indice):
for d in digitos_display:
d.on()
guion = [0,0,0,0,0,0,1]
for i in range(7):
segmentos[i].value(guion[i])
digitos_display[indice - 1].off()
time.sleep_ms(2)
while True:
# Incremento
presionado, estado_incremento = pulsado(incremento, estado_incremento)
if presionado:
if turno < 9999:
turno += 1
print("Incremento:", turno)
sonido.on()
time.sleep_ms(1000)
sonido.off()
# Decremento
presionado, estado_decremento = pulsado(decremento, estado_decremento)
if presionado:
if turno > 0:
turno -= 1
print("Decremento:", turno)
sonido.on()
time.sleep_ms(1000)
sonido.off()
# Reset
presionado, estado_reset = pulsado(reset, estado_reset)
if presionado:
turno = 0
print("----")
# Encender / apagar display
presionado, estado_boton_display = pulsado(display, estado_boton_display)
if presionado:
print("apagado")
display_encendido = not display_encendido
# Separar dígitos
unidad = turno % 10
decena = (turno // 10) % 10
centena = (turno // 100) % 10
milar = (turno // 1000) % 10
# Mostrar
if display_encendido:
if turno == 0:
mostrar_guion(1)
mostrar_guion(2)
mostrar_guion(3)
mostrar_guion(4)
else:
mostrar_numero(milar,1)
mostrar_numero(centena,2)
mostrar_numero(decena,3)
mostrar_numero(unidad,4)
else:
for d in digitos_display:
d.off()