#紅綠燈
```
from machine import Pin, Timer
red = Pin(23, Pin.OUT)
red.value(0)
yellow = Pin(25, Pin.OUT)
yellow.value(0)
green = Pin(26, Pin.OUT)
green.value(0)
leds = [red, yellow, green]
led_time = [200, 100, 300]
led_num = 0
def Led_toggle(t): #紅綠燈自動閃
global leds, led_num
led = leds[led_num]
led.value(not led.value())
led_num = (led_num+1)%3
leds[led_num].value(1)
timer.init(period=led_time[led_num], mode=Timer.ONE_SHOT, callback=Led_toggle)
leds[led_num].value(1)
button_switch = Pin(32,Pin.IN, Pin.PULL_UP) #black button
button_manual = Pin(33,Pin.IN, Pin.PULL_UP) #blue button
pressed = False
mode = 1
a=0 #a=1:red , a=2:yellow , a=3:green
b=0 #使切手動時紅綠燈只會關掉一次
on_timer = False
On_timer = False
timer = Timer(0) #紅綠燈自動閃
timer1 = Timer(1) #防彈跳
timer2 = Timer(2) #防彈跳
def mycallback(t): #防彈跳(1)
global on_timer, pressed
on_timer = False
pressed = False
def Mycallback(t): #防彈跳(2)
global On_timer
On_timer = False
def led_toggle(pin): #切換模式
global mode,pressed,b,a
if pressed == False:
mode = not mode
a=0
b=1
pressed = True
button_switch.irq(handler = led_toggle, trigger = Pin.IRQ_FALLING)
def Red():
if a==1:
red.value(1)
yellow.value(0)
green.value(0)
def Yellow():
if a==2:
red.value(0)
yellow.value(1)
green.value(0)
def Green():
if a==3:
red.value(0)
yellow.value(0)
green.value(1)
while True:
if mode == 1 and on_timer == False:
red.value(0)
yellow.value(0)
green.value(0)
leds[led_num].value(1)
timer.init(period=led_time[led_num], mode=Timer.ONE_SHOT, callback=Led_toggle)
timer1.init(mode=Timer.ONE_SHOT, period=700, callback=mycallback)
on_timer = True
#避免多次打開timer.init
if mode == 0 :
if b==1:
timer.deinit()
red.value(0)
yellow.value(0)
green.value(0)
if button_manual.value() == 0 and On_timer == False:
if a<3:
a+=1
b=2
timer2.init(mode=Timer.ONE_SHOT, period=200, callback=Mycallback)
On_timer = True
print(a)
else:
a=0
Red()
Yellow()
Green()
```