from machine import Pin
from time import sleep
# Button pins
button_1 = Pin(0, Pin.IN, Pin.PULL_UP)
button_2 = Pin(1, Pin.IN, Pin.PULL_UP)
button_3 = Pin(2, Pin.IN, Pin.PULL_UP)
button_4 = Pin(3, Pin.IN, Pin.PULL_UP)
# Main traffic light pins for set 1
main_red_1 = Pin(4, Pin.OUT)
main_yellow_1 = Pin(5, Pin.OUT)
main_green_1 = Pin(6, Pin.OUT)
# Pedestrian light pins for set 1
ped_red_1 = Pin(7, Pin.OUT)
ped_green_1 = Pin(8, Pin.OUT)
# Main traffic light pins for set 2
main_red_2 = Pin(9, Pin.OUT)
main_yellow_2 = Pin(10, Pin.OUT)
main_green_2 = Pin(11, Pin.OUT)
# Pedestrian light pins for set 2
ped_red_2 = Pin(12, Pin.OUT)
ped_green_2 = Pin(13, Pin.OUT)
# Main traffic light pins for set 3
main_red_3 = Pin(14, Pin.OUT)
main_yellow_3 = Pin(15, Pin.OUT)
main_green_3 = Pin(16, Pin.OUT)
# Pedestrian light pins for set 3
ped_red_3 = Pin(17, Pin.OUT)
ped_green_3 = Pin(18, Pin.OUT)
# Main traffic light pins for set 4
main_red_4 = Pin(19, Pin.OUT)
main_yellow_4 = Pin(20, Pin.OUT)
main_green_4 = Pin(21, Pin.OUT)
# Pedestrian light pins for set 4
ped_red_4 = Pin(22, Pin.OUT)
ped_green_4 = Pin(26, Pin.OUT)
def turn_on_main_green(set_index):
if set_index == 1:
main_green_1.value(1)
main_yellow_1.value(0)
main_red_1.value(0)
elif set_index == 2:
main_green_2.value(1)
main_yellow_2.value(0)
main_red_2.value(0)
elif set_index == 3:
main_green_3.value(1)
main_yellow_3.value(0)
main_red_3.value(0)
elif set_index == 4:
main_green_4.value(1)
main_yellow_4.value(0)
main_red_4.value(0)
def turn_on_main_yellow(set_index):
if set_index == 1:
main_green_1.value(0)
main_yellow_1.value(1)
main_red_1.value(0)
elif set_index == 2:
main_green_2.value(0)
main_yellow_2.value(1)
main_red_2.value(0)
elif set_index == 3:
main_green_3.value(0)
main_yellow_3.value(1)
main_red_3.value(0)
elif set_index == 4:
main_green_4.value(0)
main_yellow_4.value(1)
main_red_4.value(0)
def turn_on_main_red(set_index):
if set_index == 1:
main_green_1.value(0)
main_yellow_1.value(0)
main_red_1.value(1)
elif set_index == 2:
main_green_2.value(0)
main_yellow_2.value(0)
main_red_2.value(1)
elif set_index == 3:
main_green_3.value(0)
main_yellow_3.value(0)
main_red_3.value(1)
elif set_index == 4:
main_green_4.value(0)
main_yellow_4.value(0)
main_red_4.value(1)
def turn_on_main_red_amber(set_index):
if set_index == 1:
main_green_1.value(0)
main_yellow_1.value(1)
main_red_1.value(1)
elif set_index == 2:
main_green_2.value(0)
main_yellow_2.value(1)
main_red_2.value(1)
elif set_index == 3:
main_green_3.value(0)
main_yellow_3.value(1)
main_red_3.value(1)
elif set_index == 4:
main_green_4.value(0)
main_yellow_4.value(1)
main_red_4.value(1)
def turn_on_ped_red(set_index):
if set_index == 1:
ped_green_1.value(0)
ped_red_1.value(1)
elif set_index == 2:
ped_green_2.value(0)
ped_red_2.value(1)
elif set_index == 3:
ped_green_3.value(0)
ped_red_3.value(1)
elif set_index == 4:
ped_green_4.value(0)
ped_red_4.value(1)
def turn_on_ped_green(set_index):
if set_index == 1:
ped_green_1.value(1)
ped_red_1.value(0)
elif set_index == 2:
ped_green_2.value(1)
ped_red_2.value(0)
elif set_index == 3:
ped_green_3.value(1)
ped_red_3.value(0)
elif set_index == 4:
ped_green_4.value(1)
ped_red_4.value(0)
def turn_off_all_main_lights():
main_green_1.value(0)
main_yellow_1.value(0)
main_red_1.value(0)
main_green_2.value(0)
main_yellow_2.value(0)
main_red_2.value(0)
main_green_3.value(0)
main_yellow_3.value(0)
main_red_3.value(0)
main_green_4.value(0)
main_yellow_4.value(0)
main_red_4.value(0)
def turn_off_all_ped_lights():
ped_red_1.value(0)
ped_green_1.value(0)
ped_red_2.value(0)
ped_green_2.value(0)
ped_red_3.value(0)
ped_green_3.value(0)
ped_red_4.value(0)
ped_green_4.value(0)
def main_sequence():
while True:
# Set 1: Main green light on for 12 seconds, pedestrian red on
turn_on_main_green(1)
turn_on_main_green(3)
turn_on_ped_red(1)
turn_on_ped_red(3)
turn_on_main_red(2)
turn_on_ped_green(2)
turn_on_main_red(4)
turn_on_ped_green(4)
sleep(5)
# Set 1: Main yellow light on for 3 seconds, pedestrian red on, set 2 red and amber on
turn_on_main_yellow(1)
turn_on_main_yellow(3)
turn_on_main_red_amber(2)
turn_on_main_red_amber(4)
sleep(3)
# Set 1: Main red light on, pedestrian red on
turn_on_main_red(1)
turn_on_main_red(3)
# Set 2: Main green light on for 12 seconds, pedestrian red on
turn_on_main_green(2)
turn_on_main_green(4)
turn_on_ped_red(2)
turn_on_ped_red(4)
turn_on_ped_green(1)
turn_on_ped_green(3)
sleep(5)
# Set 2: Main yellow light on for 3 seconds, pedestrian red on, set 3 red and amber on
turn_on_main_yellow(2)
turn_on_main_yellow(4)
turn_on_main_red_amber(1)
turn_on_main_red_amber(3)
sleep(3)
try:
main_sequence()
except KeyboardInterrupt:
turn_off_all_main_lights()
turn_off_all_ped_lights()