from machine import Pin
from time import ticks_ms
# 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_waarde = button_faster.value() # Initialize to current button state
# Initial settings
interval = 2000 # Default time interval (milliseconds)
timestamp = ticks_ms() # Start timing
state = 0 # Initial traffic light state
while True:
# Check if the faster button has been pressed
button_faster_nu = button_faster.value()
# Detect a button press when transitioning from not pressed to pressed
if button_faster_nu == 0 and button_faster_waarde == 1: # Button just pressed
# Toggle between normal speed and fast speed
if interval == 2000:
interval = 500 # Switch to fast speed
else:
interval = 2000 # Switch back to normal speed
button_faster_waarde = button_faster_nu # Update to current button state
# Normal traffic light operation
if ticks_ms() - timestamp >= interval:
timestamp = ticks_ms() # Reset timestamp
state = (state + 1) % 4 # Cycle through states (0, 1, 2, 3)
# Set traffic light states based on current state
if state == 0: # State 0: Light 1 Green, Light 2 Red
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 == 1: # State 1: Light 1 Orange, Light 2 Red
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 == 2: # State 2: Light 1 Red, Light 2 Green
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 == 3: # State 3: Light 1 Red, Light 2 Orange
light1_red.value(1)
light1_orange.value(0)
light1_green.value(0)
light2_red.value(0)
light2_orange.value(1)
light2_green.value(0)