# import machine
# import time
from machine import Pin
from time import sleep
print("test traffic lights - flashing light")
red_led_1 = Pin(18,Pin.OUT)
orange_led_1 = Pin(19,Pin.OUT)
green_led_1 = Pin(21,Pin.OUT)
# the LEDs with suffix 2 are located on the right of the breadboard
red_led_2 = Pin(25,Pin.OUT)
orange_led_2 = Pin(26,Pin.OUT)
green_led_2 = Pin(27,Pin.OUT)
blue_led = Pin(2,Pin.OUT)
# Switch 1: Will make the traffic light run slow (0) or fast (1).
# Switch 2: Will make the traffic light flash amber (1) or normal operation (0)
switch_1 = Pin(33, Pin.IN, Pin.PULL_UP)# right button if button under ESP32 is FAST / SLOW
switch_2 = Pin(32, Pin.IN, Pin.PULL_UP) # flasher
switch_1_previous_value = 1
switch_2_previous_value = 1
# time if the lights need to function quickly
time_orange = 1
time_green_red = 2
def orange_blink():
print("switch_2 status" , switch_2.value() , "=> orange flashing light mode")
orange_led_1.value(1) # orange on
orange_led_2.value(1) # orange on
sleep(time_orange)
orange_led_1.value(0) # orange off
orange_led_2.value(0)
sleep(time_orange)
if not switch_2.value() == 1:
orange_blink()
def traffic_lights(time_orange , time_green_red):
print("Switch 1 value:", switch_1.value())
print("Switch 2 value:", switch_2.value())
# start with red on the left and green on the right (on the breadboard)
time_green_red = 2
time_orange = 1
time_green_red = 2
if not switch_1.value() == 1:
# print("fast traffic light")
time_green_red = (time_green_red / 2)
time_orange = (time_orange / 1)
blue_led.value(1)
print("traffic lights normal mode on FAST")
red_led_1.value(1) # turn red on on the left
if red_led_1.value() == 1: # if it is red on the left then the code below is executed
green_led_2.value(1) # green right turns on
sleep(time_green_red)
green_led_2.value(0) # green right off
sleep(0)
orange_led_2.value(1) # orange right on
sleep(time_orange)
orange_led_2.value(0) # orange right off
sleep(0)
red_led_2.value(1) # red right on (safety margin)
sleep(time_green_red)
red_led_1.value(0) # red left off
sleep(0)
if red_led_2.value() == 1: # in the first block of code in the while loop
# the red LED on the right was turned on and the code below will now be executed
green_led_1.value(1) # green light on left
sleep(time_green_red)
green_led_1.value(0) # green light left off
sleep(0)
orange_led_1.value(1) # orange light on left
sleep(time_orange)
orange_led_1.value(0) # orange light on the left off
sleep(0)
red_led_1.value(1) # red light on left (safety margin)
sleep(time_green_red)
red_led_1.value(0) # red light left off
sleep(0)
red_led_2.value(0) # red light on right off
sleep(0)
if switch_1.value() == 1:
blue_led.value(0)
# print("slow traffic light")
time_green_red = time_green_red
time_orange = time_orange
print("traffic lights normal mode on SLOW")
red_led_1.value(1) # turn red on on the left
if red_led_1.value() == 1: # if it is red on the left then the code below is executed
green_led_2.value(1) # green right turns on
sleep(time_green_red)
green_led_2.value(0) # green right off
sleep(0)
orange_led_2.value(1) # orange right on
sleep(time_orange)
orange_led_2.value(0) # orange right off
sleep(0)
red_led_2.value(1) # red right on (safety margin)
sleep(time_green_red)
red_led_1.value(0) # red left off
sleep(0)
if red_led_2.value() == 1: # in the first block of code in the while loop
# the red LED on the right was turned on and the code below will now be executed
green_led_1.value(1) # green light on left
sleep(time_green_red)
green_led_1.value(0) # green light left off
sleep(0)
orange_led_1.value(1) # orange light on left
sleep(time_orange)
orange_led_1.value(0) # orange light on the left off
sleep(0)
red_led_1.value(1) # red light left on (safety margin)
sleep(time_green_red)
red_led_1.value(0) # red light left off
sleep(0)
red_led_2.value(0) # red light on right off
sleep(0)
while True:
if switch_1.value() == 1:
traffic_lights(time_orange , time_green_red)
print("now the traffic light must come on QUICKLY")
if switch_1.value() == 0:
traffic_lights(time_orange , time_green_red)
print("now the traffic light must burn SLOWLY")
if not switch_2.value() == 1:
orange_blink()