#紅綠燈 ``` 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() ```