from machine import Pin, PWM
import time
# LEDs
red = PWM(Pin(16))
yellow = PWM(Pin(17))
green = PWM(Pin(18))
for led in (red, yellow, green):
led.freq(1000)
BRIGHT = 60000
# Button
button = Pin(27, Pin.IN, Pin.PULL_DOWN)
# Track which step we're on
buttonHit = 1
def all_on():
red.duty_u16(BRIGHT)
yellow.duty_u16(BRIGHT)
green.duty_u16(BRIGHT)
def all_off():
red.duty_u16(0)
yellow.duty_u16(0)
green.duty_u16(0)
def flash_led(led, times=1, delay=0.5):
for _ in range(times):
led.duty_u16(BRIGHT)
time.sleep(delay)
led.duty_u16(0)
time.sleep(delay)
def wait_for_release():
while button.value() == 1:
time.sleep(0.01)
time.sleep(0.15) # debounce
while True:
if button.value() == 0:
if buttonHit == 1:
# 2) Red LED blinks
flash_led(red)
buttonHit = 2
elif buttonHit == 2:
# 3) Yellow LED blinks
flash_led(yellow)
buttonHit = 3
elif buttonHit == 3:
# 4) Green LED blinks
flash_led(green)
buttonHit = 4
elif buttonHit == 4:
# 5) All LEDs blink once
flash_led(red)
flash_led(yellow)
flash_led(green)
# 1) All LEDs blink 3 times
for _ in range(3):
all_on()
time.sleep(0.5)
all_off()
time.sleep(0.3)
buttonHit = 1 # Reset to first step
wait_for_release()