#Programa contador y semaforo 2026
#Hecho por Fabian ndres Ruiz Ruiz 20252673087
from machine import Pin
import time
# -------- CONFIGURACIÓN DE PINES --------
pin_a = 0
pin_b = 1
pin_c = 2
pin_d = 3
pin_e = 4
pin_f = 5
pin_g = 6
# - SEMÁFORO
rojo = Pin(15, Pin.OUT)
amarillo = Pin(14, Pin.OUT)
verde = Pin(13, Pin.OUT)
# - DISPLAY
a = Pin(pin_a, Pin.OUT)
b = Pin(pin_b, Pin.OUT)
c = Pin(pin_c, Pin.OUT)
d = Pin(pin_d, Pin.OUT)
e = Pin(pin_e, Pin.OUT)
f = Pin(pin_f, Pin.OUT)
g = Pin(pin_g, Pin.OUT)
# -FUNCIÓN PARA MOSTRAR NÚMEROS
def mostrar_num(num):
# Apagar todo (1 apaga en cátodo común)
a.value(1)
b.value(1)
c.value(1)
d.value(1)
e.value(1)
f.value(1)
g.value(1)
if num == 0:
a.value(0); b.value(0); c.value(0)
d.value(0); e.value(0); f.value(0)
elif num == 1:
b.value(0); c.value(0)
elif num == 2:
a.value(0); b.value(0); d.value(0)
e.value(0); g.value(0)
elif num == 3:
a.value(0); b.value(0); c.value(0)
d.value(0); g.value(0)
elif num == 4:
b.value(0); c.value(0); f.value(0); g.value(0)
elif num == 5:
a.value(0); c.value(0); d.value(0)
f.value(0); g.value(0)
elif num == 6:
a.value(0); c.value(0); d.value(0)
e.value(0); f.value(0); g.value(0)
elif num == 7:
a.value(0); b.value(0); c.value(0)
elif num == 8:
a.value(0); b.value(0); c.value(0)
d.value(0); e.value(0); f.value(0); g.value(0)
elif num == 9:
a.value(0); b.value(0); c.value(0)
d.value(0); f.value(0); g.value(0)
# -CUENTA REGRESIVA CON IMPRESIÓN
def cuenta_regresiva(segundos, estado):
for i in range(segundos, -1, -1):
mostrar_num(i)
print(estado, i)
time.sleep(1)
# - PRINCIPAL
while True:
# ROJO
rojo.value(1)
amarillo.value(0)
verde.value(0)
cuenta_regresiva(5, "ROJO")
# ROJO + AMARILLO
rojo.value(1)
amarillo.value(1)
verde.value(0)
cuenta_regresiva(2, "ROJO+AMARILLO")
# VERDE
rojo.value(0)
amarillo.value(0)
verde.value(1)
cuenta_regresiva(7, "VERDE")
# AMARILLO
rojo.value(0)
amarillo.value(1)
verde.value(0)
cuenta_regresiva(2, "AMARILLO")