from machine import Pin
from utime import sleep
# Pines conectados al display de 7 segmentos (A, B, C, D, E, F, G, DP)
pins = [
Pin(2, Pin.OUT), # A
Pin(3, Pin.OUT), # B
Pin(4, Pin.OUT), # C
Pin(5, Pin.OUT), # D
Pin(6, Pin.OUT), # E
Pin(8, Pin.OUT), # F
Pin(7, Pin.OUT), # G <-- Aquí está el pin G
Pin(0, Pin.OUT) # DP (no conectado en este caso)
]
# Patrones de dígitos para display de ánodo común
digits = [
[0, 0, 0, 0, 0, 0, 1, 1], # 0
[1, 0, 0, 1, 1, 1, 1, 1], # 1
[0, 0, 1, 0, 0, 1, 0, 1], # 2
[0, 0, 0, 0, 1, 1, 0, 1], # 3
[1, 0, 0, 1, 1, 0, 0, 1], # 4
[0, 1, 0, 0, 1, 0, 0, 1], # 5
[0, 1, 0, 0, 0, 0, 0, 1], # 6
[0, 0, 0, 1, 1, 1, 1, 1], # 7
[0, 0, 0, 0, 0, 0, 0, 1], # 8
[0, 0, 0, 1, 1, 0, 0, 1], # 9
[0, 0, 0, 1, 0, 0, 0, 1], # a
[1, 1, 0, 0, 0, 0, 0, 1], # b
[0, 1, 1, 0, 0, 0, 1, 1], # C
[1, 0, 0, 0, 0, 1, 0, 1], # d
[0, 1, 1, 0, 0, 0, 0, 1], # E
[0, 1, 1, 1, 0, 0, 0, 1], # F
]
# Función para apagar todos los segmentos del display
def reset():
"""Apaga todos los segmentos del display de 7 segmentos."""
for pin in pins:
pin.value(1) # En displays de ánodo común, el valor 1 apaga el segmento
# Inicializa el display apagado
reset()
# Configuración del interruptor
switch = Pin(13, Pin.IN)
while True:
if switch.value() == 1:
# Contador ascendente
for i in range(len(digits)):
if switch.value() == 0: # Si se activa el cambio de dirección
break
# Enciende los segmentos correspondientes al dígito actual
for j in range(len(pins)): # Cambié 'len(pins) - 1' a 'len(pins)'
pins[j].value(digits[i][j])
sleep(0.5) # Pausa de 0.5 segundos entre cambios de dígitos
else:
# Contador descendente
for i in range(len(digits) - 1, -1, -1):
if switch.value() == 1: # Si se activa el cambio de dirección
break
# Enciende los segmentos correspondientes al dígito actual
for j in range(len(pins)):
pins[j].value(digits[i][j])
sleep(0.5) # Pausa de 0.5 segundos entre cambios de dígitos