import machine
import time
# Define los pines GPIO para los segmentos y los dígitos
segmentos = [4, 2, 19, 18, 5, 22, 23] # Pines GPIO para los segmentos a, b, c, d, e, f, g, dp
digitos = [26, 25, 33, 32] # Pines GPIO para los dígitos 1, 2, 3, 4
contador = 0
# Diccionario para mapear dígitos a segmentos (cada número representa un segmento encendido)
digitos_segmentos = {
0: (0, 0, 0, 0, 0, 0, 1),
1: (1, 0, 0, 1, 1, 1, 1),
2: (0, 0, 1, 0, 0, 1, 0),
3: (0, 0, 0, 0, 1, 1, 0),
4: (1, 0, 0, 1, 1, 0, 0),
5: (0, 1, 0, 0, 1, 0, 0),
6: (0, 1, 0, 0, 0, 0, 0),
7: (0, 0, 0, 1, 1, 1, 1),
8: (0, 0, 0, 0, 0, 0, 0),
9: (0, 0, 0, 0, 1, 0, 0)
}
# Inicializa los pines como salidas
for pin in segmentos + digitos:
machine.Pin(pin, machine.Pin.OUT)
# Función para mostrar un dígito en el display
def mostrar_digito(digito=3, valor=0):
# Apaga todos los dígitos
for d in digitos:
machine.Pin(d, machine.Pin.OUT).value(0)#apaga digitos
# Obtén la configuración de segmentos para el número
configuracion = digitos_segmentos[valor]
# Enciende los segmentos correspondientes
for i, estado in enumerate(configuracion):#cuando itero 2 variables sobre una lista una me guarda la posicion y la otra el valor que hay en la posicion
print(i, estado)
machine.Pin(segmentos[i], machine.Pin.OUT).value(estado)
# Enciende el dígito actual
machine.Pin(digitos[digito], machine.Pin.OUT).value(1)#activa digito
# Función para mostrar un número de 4 dígitos
def mostrar_numero(numero):
if 0 <= numero <= 9999:
for i in range(4):
digito = numero % 10
print(digito)
mostrar_digito(i, digito)
numero //= 10 #division entera
print(numero)
# Programa principal para contar
while True:
mostrar_numero(contador)
time.sleep_ms(50)
contador += 1
if contador > 9999:
contador = 0
#Problema: Debe hacer que el contador se mueva menos rapido sin perjudicar la
#visualización