from machine import Pin
import utime
# Definir pines
data_pin = Pin(0, Pin.OUT) # GP0
clock_pin = Pin(1, Pin.OUT) # GP1
latch_pin = Pin(2, Pin.OUT) # GP2
# Números en binario para el display de 7 segmentos común cátodo
numeros_binarios = [
0b00111111, # 0
0b00000110, # 1
0b01011011, # 2
0b01001111, # 3
0b01100110, # 4
0b01101101, # 5
0b01111101, # 6
0b00000111, # 7
0b01111111, # 8
0b01101111 # 9
]
# Agregar el bit del punto decimal a cada número
numeros_binarios_con_punto = [numero | 0b10000000 for numero in numeros_binarios]
# Función para enviar datos al registro de desplazamiento
def enviar_datos(valor):
for _ in range(8):
data_pin.value(valor & 1)
valor >>= 1
clock_pin.on()
clock_pin.off()
# Función para actualizar el display con un número y el punto decimal
def actualizar_display(numero, punto_decimal):
if punto_decimal:
valor = numeros_binarios_con_punto[numero]
else:
valor = numeros_binarios[numero]
latch_pin.off()
enviar_datos(valor)
latch_pin.on()
# Bucle principal
while True:
for i in range(10):
# Mostrar el número con el punto decimal activado
actualizar_display(i, True)
utime.sleep(1)
# Mostrar el número sin el punto decimal
actualizar_display(i, False)
utime.sleep(1)