# 4 way traffic light using Micropython
from machine import Pin
from time import sleep
# Define the traffic lights pins
d_red = Pin(27, Pin.OUT)
d_yellow = Pin(26, Pin.OUT)
d_green = Pin(25, Pin.OUT)
r_red = Pin(21, Pin.OUT)
r_yellow = Pin(23, Pin.OUT)
r_green = Pin(22, Pin.OUT)
l_red = Pin(19, Pin.OUT)
l_yellow = Pin(17, Pin.OUT)
l_green = Pin(18, Pin.OUT)
u_red = Pin(16, Pin.OUT)
u_yellow = Pin(5, Pin.OUT)
u_green = Pin(4, Pin.OUT)
# Function to control a single traffic light
def change_lights():
# Start (all yellow)
u_red.off()
d_red.off()
r_red.off()
l_green.off()
u_yellow.on()
d_yellow.on()
r_yellow.on()
l_yellow.on()
sleep(5)
# left lane go
u_yellow.off()
d_yellow.off()
r_yellow.off()
l_yellow.off()
u_green.on()
r_red.on()
l_red.on()
d_red.on()
sleep(10)
# All yellow
u_yellow.on()
d_yellow.on()
r_yellow.on()
l_yellow.on()
u_green.off()
r_red.off()
l_red.off()
d_red.off()
sleep(5)
# Right lane go
u_yellow.off()
d_yellow.off()
r_yellow.off()
l_yellow.off()
u_red.on()
l_red.on()
d_red.on()
r_green.on()
sleep(10)
# All yellow on
u_yellow.on()
d_yellow.on()
r_yellow.on()
l_yellow.on()
u_red.off()
l_red.off()
d_red.off()
r_green.off()
sleep(5)
# top lane go
u_yellow.off()
d_yellow.off()
r_yellow.off()
l_yellow.off()
u_red.on()
l_red.on()
r_red.on()
d_green.on()
sleep(10)
# All yellow
u_yellow.on()
d_yellow.on()
r_yellow.on()
l_yellow.on()
u_red.off()
l_red.off()
r_red.off()
d_green.off()
sleep(5)
# bottom lane go
u_yellow.off()
d_yellow.off()
r_yellow.off()
l_yellow.off()
u_red.on()
d_red.on()
r_red.on()
l_green.on()
sleep(10)
while True:
change_lights()