#Semaforo
import utime
from machine import Pin
luz_roja = Pin(11, Pin.OUT)
luz_amarilla = Pin(8, Pin.OUT)
luz_verde = Pin(5, Pin.OUT)
#funciones para cada luz
def semaforo_rojo():
luz_roja.value(1)
luz_amarilla.value(0)
luz_verde.value(0)
def semaforo_amarillo():
luz_roja.value(0)
luz_amarilla.value(1)
luz_verde.value(0)
def semaforo_verde():
luz_roja.value(0)
luz_amarilla.value(0)
luz_verde.value(1)
def semaforo_amarillo_corto():
luz_roja.value(0)
luz_amarilla.value(1)
luz_verde.value(0)
#lista de estados y tiempos
estado_luz = [
(semaforo_rojo, 5000),
(semaforo_amarillo, 3000),
(semaforo_verde, 5000),
(semaforo_amarillo_corto, 2000)
]
def semaforo():
estado = 0
while True:
data_luz_actual = estado_luz[estado]
luz_actual = data_luz_actual[0]
tiempo_actual = data_luz_actual[1]
#mostrar luz acutal
luz_actual()
utime.sleep_ms(tiempo_actual)
estado = (estado + 1) % len(estado_luz)
semaforo()