#Importamos la funciónes
from machine import Pin
from time import sleep
#Definimos las luces del semaforo 1
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 semaforo 2
led_2_rojo = Pin(21, Pin.OUT)
led_2_amarillo = Pin(18, Pin.OUT)
led_2_verde = Pin(4, Pin.OUT)
#Definimos los sensores de carril
boton_1 = Pin(13, Pin.IN)
boton_2 = Pin(2, Pin.IN)
#Enpezamos poniendo en Rojo ambos semaforos
led_1_rojo.on()
led_2_rojo.on()
while True:
#Evaluamos 3 posibles casos
#CASO 1: Evaluamos si solamente hay autos en el carril 1
if boton_1.value()==1 and boton_2.value()==0:
#El semaforo 2 permanecera en Rojo
led_2_rojo.on()
led_2_amarillo.off()
led_2_verde.off()
#El semaforo 1 permanecera en Verde
led_1_rojo.off()
led_1_amarillo.off()
led_1_verde.on()
sleep(1)
#CASO 2: Evaluamos si solamente hay autos en el carril 2
elif boton_1.value()==0 and boton_2.value()==1:
#El semaforo 1 permanecera en Rojo
led_1_rojo.on()
led_1_verde.off()
led_1_amarillo.off()
#El semaforo 2 permanecera en Verde
led_2_rojo.off()
led_2_amarillo.off()
led_2_verde.on()
sleep(1)
#CASO 3: Evaluamos si hay autos en ambos carrilles o si no los hay
elif boton_1.value() == 0 and boton_2.value() == 0:
#Evaluamos 3 posibles casos con respecto a las luces de los semaforos
#CASO 1: Evaluamos si ambos semaforos estan en rojo
if led_1_rojo.value()==1 and led_2_rojo.value()==1:
#Terminamos el cilo del semaforo 2 y lo dejamos en Rojo
led_2_rojo.off()
led_2_amarillo.on()
sleep(1)
led_2_amarillo.off()
led_2_verde.on()
sleep(1)
led_2_verde.off()
led_2_amarillo.on()
sleep(1)
led_2_amarillo.off()
led_2_rojo.on()
sleep(1)
#Volvemos a evaluar si hay autos en ambos carrilles o si no los hay
if boton_1.value()==0 and boton_2.value()==0:
#Continuamos el ciclo del semaforo 1
led_1_rojo.off()
led_1_amarillo.on()
sleep(1)
led_1_amarillo.off()
led_1_verde.on()
sleep(1)
led_1_verde.off()
led_1_amarillo.on()
sleep(1)
led_1_amarillo.off()
led_1_rojo.on()
sleep(1)
#Volvemos a evaluar si solamente hay autos en el carril 2
elif boton_1.value()==0 and boton_2.value()==1:
#El semaforo 2 permanecera en verde
led_2_rojo.off()
led_2_verde.on()
sleep(1)
#Volvemos a evaluar si solamente hay autos en el carril 1
elif boton_1.value()==1 and boton_2.value()==0:
#El semaforo 1 permanecera en verde
led_1_rojo.off()
led_1_verde.on()
sleep(1)
#CASO 2: Evaluamos si el semaforo 1 esta en rojo, y si el semaforo 2 esta en verde
elif led_1_rojo.value()==1 and led_2_verde.value()==1:
#Terminamos el ciclo del semaforo 2 y lo dejamos en rojo
led_2_verde.off()
led_2_amarillo.on()
sleep(1)
led_2_amarillo.off()
led_2_rojo.on()
sleep(1)
#Volvemos a evaluar si hay autos en ambos carriles
if boton_1.value()==0 and boton_2.value()==0:
#Continuamos el ciclo del primer semaforo
led_1_rojo.off()
led_1_amarillo.on()
sleep(1)
led_1_amarillo.off()
led_1_verde.on()
sleep(1)
led_1_verde.off()
led_1_amarillo.on()
sleep(1)
led_1_amarillo.off()
led_1_rojo.on()
sleep(1)
#Volvemos a evaluar si solamente hay autos en el carril 2
elif boton_1.value()==0 and boton_2.value()==1:
#El semaforo 2 permanecera en verde
led_2_rojo.off()
led_2_verde.on()
sleep(1)
#Volvemos a evaluar si solamente hay autos en el carril 1
elif boton_1.value()==1 and boton_2.value()==0:
#El semaforo 1 permanecera en verde
led_1_rojo.off()
led_1_verde.on()
sleep(1)
#CASO 3: Evaluamos si el semaforo 1 esta en verde, y si el semaforo 2 esta en rojo
elif led_1_verde.value()==1 and led_2_rojo.value()==1:
#Terminamos el ciclo del semaforo 1 y lo dejamos en rojo
led_1_verde.off()
led_1_amarillo.on()
sleep(1)
led_1_amarillo.off()
led_1_rojo.on()
sleep(1)
#Volvemos a evaluar si hay autos en ambos carriles o si no los hay
if boton_1.value()==0 and boton_2.value()==0:
#Continuamos el ciclo del segundo semaforo
led_2_rojo.off()
led_2_amarillo.on()
sleep(1)
led_2_amarillo.off()
led_2_verde.on()
sleep(1)
led_2_verde.off()
led_2_amarillo.on()
sleep(1)
led_2_amarillo.off()
led_2_rojo.on()
sleep(1)
#Volvemos a evaluar si solamente hay autos en el carril 1
elif boton_1.value()==1 and boton_2.value()==0:
#El semaforo 1 permanecera en verde
led_1_rojo.off()
led_1_verde.on()
sleep(1)
#Volvemos a evaluar si solamente hay autos en el carril 2
elif boton_1.value()==0 and boton_2.value()==1:
#El semaforo 2 permanecera en verde
led_2_rojo.off()
led_2_verde.on()
sleep(1)