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 DISPLAY 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:# SUMAR DOS LISTAS E ITERAR CADA LED EN PINOUT
machine.Pin(pin, machine.Pin.OUT)
# Función para mostrar un dígito en el display
def mostrar_digito(digito, valor):
# Apaga todos los dígitos
for d in digitos:
machine.Pin(d, machine.Pin.OUT).value(0)#itera y apaga digitos
# Obtén la configuración de segmentos para el número
configuracion = digitos_segmentos[valor]# igual a la lista
# Enciende los segmentos correspondientes
for i, estado in enumerate(configuracion):#COGE EL ORDEN DE LA LISTA CONFIGURACION con sus estados
print(i, estado)
machine.Pin(segmentos[i], machine.Pin.OUT).value(estado)#PRIMER ITERACION 0,3
# 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):#itera en digito[0,1,2,3]
digito = numero % 10#vale 0;
print(digito)
mostrar_digito(i, digito)#otra funcion arriba
numero //= 10
print(numero)
# Programa principal para contar
while True:
mostrar_numero(contador)
time.sleep(1)
contador += 1
if contador > 9999:
contador = 0
#Problema: Debe hacer que el contador se mueva menos rapido sin perjudicar la
#visualización