#Importamos las funciones
from machine import Pin
from time import sleep
#Definimos las luces del pimer semaforo
led_1_rojo = Pin(32, Pin.OUT)
led_1_amarillo = Pin(25, Pin.OUT)
led_1_verde = Pin(12, Pin.OUT)
#Definimos las luces del segundo semaforo
led_2_rojo = Pin(21, Pin.OUT)
led_2_amarillo = Pin(18, Pin.OUT)
led_2_verde = Pin(4, Pin.OUT)
#Definimos los interrumptores, que serviran como sensores de carril
boton_1 = Pin(13, Pin.IN)
boton_2 = Pin(2, Pin.IN)
#Comenzamos el codigo de los dos semaforos
while True:
#CASO 1: Evaluamos en simultaneo si hay autos en los dos carriles o si no los hay
if boton_1.value()==1 and boton_2.value==1 or boton_1.value()==0 and boton_2.value()==0:
if led_2_verde.value()==1:
#Evaluamos si el semaforo 2 esta en verde
led_2_verde.off()
led_2_amarillo.on()
sleep(2)
led_2_amarillo.off()
led_2_rojo.on()
else:
#Evaluamos si el semaforo 2 esta en amarillo
led_2_amarillo.off()
led_2_rojo.on()
#comenzamos el ciclo del PRIMER semaforo mientra el Segundo permanece en rojo
led_2_rojo.on()
led_1_verde.on()
sleep(2)
led_1_verde.off()
led_1_amarillo.on()
sleep(2)
led_1_amarillo.off()
led_1_rojo.on()
#cuando el primer semaforo esta en rojo, comienza el ciclo del segundo
while led_1_rojo.value()==1:
#mientras el semaforo 1 este en rojo se da el ciclo del semaforo 2
led_2_rojo.off()
led_2_amarillo.on()
sleep(2)
led_2_amarillo.off()
led_2_verde.on()
sleep(2)
led_2_verde.off()
led_2_amarillo.on()
sleep(2)
led_2_amarillo.off()
led_2_rojo.on()
led_1_rojo.off()
#termina el ciclo del segundo semaforo y se queda en rojo
#continua el ciclo del primer semaforo
led_1_amarillo.on()
sleep(2)
led_1_amarillo.off()
#CASO 2: Evaluamos si hay autos en el carril 1, y si no hay autos en el carril 2
elif boton_1.value()==1 and boton_2.value()==0:
if led_2_verde.value()==1:
#Evaluamos si el semaforo 2 esta en verde
led_2_verde.off()
led_2_amarillo.on()
led_2_amarillo.off()
led_2_rojo.on()
else:
#Evaluamos si el semaforo 2 esta en amarillo
led_2_amarillo.off()
led_2_rojo.on()
#Comenzamos el ciclo del semaforo 1
led_1_verde.on()
sleep(2)
#CASO 3: Evaluamos si hay no autos en el carril 1, y si hay autos en el carril 2
elif boton_1.value()==0 and boton_2.value()==1:
if led_1_verde.value()==1:
#Eavaluamos si el semaforo 1 esta en verde
led_1_verde.off()
led_1_amarillo.on()
led_1_amarillo.off()
led_1_rojo.on()
else:
#Evaluamos si el semaforo 1 esta en amarillo
led_1_amarillo.off()
led_1_rojo.on()
#Comienza el ciclo del semaforo 2
led_2_verde.on()
sleep (2)