from machine import Pin
from time import ticks_ms, sleep
# Traffic light 1: Red, Orange, Green
light1_red = Pin(4, Pin.OUT)
light1_orange = Pin(2, Pin.OUT)
light1_green = Pin(15, Pin.OUT)
# Traffic light 2: Red, Orange, Green
light2_red = Pin(21, Pin.OUT)
light2_orange = Pin(19, Pin.OUT)
light2_green = Pin(18, Pin.OUT)
# Buttons
button_faster = Pin(12, Pin.IN, Pin.PULL_UP) # Speed up button
button_faster_status_earlier = 1 # Initialize to current button state
# Initial settings
normal_interval = 1000 # Normal interval (in milliseconds)
fast_interval = 500 # Fast interval when button is pressed
interval = normal_interval
state_lights = 0 # Initial state in the sequence
timestamp = 0 # Initialize timestamp
while True:
# Check button press to toggle speed
button_faster_now = button_faster.value()
if button_faster_now != button_faster_status_earlier:
button_faster_status_earlier = button_faster_now
if button_faster_now == 0: # Button pressed
if interval == normal_interval:
interval = fast_interval
else:
interval = normal_interval
print(f"Button pressed, interval set to {interval} ms")
sleep(0.005) # Small debounce delay
# Traffic light sequence logic based on elapsed time
if ticks_ms() - timestamp >= interval:
timestamp = ticks_ms() # Update timestamp
# Increment state and reset if it exceeds 6
state_lights += 1
if state_lights > 6:
state_lights = 1
print("6 seconds passed, resetting sequence.")
print(f"Current state: {state_lights}")
# Change light states based on state_lights
if state_lights == 1:
light1_red.value(0)
light1_orange.value(1)
light1_green.value(0)
light2_red.value(1)
light2_orange.value(0)
light2_green.value(0)
elif state_lights == 2:
light1_red.value(1)
light1_orange.value(0)
light1_green.value(0)
light2_red.value(0)
light2_orange.value(0)
light2_green.value(1)
elif state_lights == 3:
light1_red.value(1)
light1_orange.value(0)
light1_green.value(0)
light2_red.value(0)
light2_orange.value(0)
light2_green.value(1)
elif state_lights == 4:
light1_red.value(1)
light1_orange.value(0)
light1_green.value(0)
light2_red.value(0)
light2_orange.value(1)
light2_green.value(0)
elif state_lights == 5:
light1_red.value(0)
light1_orange.value(0)
light1_green.value(1)
light2_red.value(1)
light2_orange.value(0)
light2_green.value(0)
elif state_lights == 6:
light1_red.value(0)
light1_orange.value(0)
light1_green.value(1)
light2_red.value(1)
light2_orange.value(0)
light2_green.value(0)