from machine import Pin, Timer
import time
color_and_pin_list = [('red', 23), ('yellow', 21), ('green', 4)]
color2_and_pin2_list = [('red', 35), ('yellow', 33), ('green', 26)]
#設置按鈕的腳位與顏色
leds = {color: Pin(pin, Pin.OUT) for color, pin in color_and_pin_list}
btns = {color: Pin(pin, Pin.IN) for color, pin in color2_and_pin2_list}
sw = Pin(12,Pin.IN) #設置開關按鈕(灰色)的腳位
switch = 0 #設置一個參數作為通道並使通道為關閉狀態
while True:
if sw.value()==1:
switch = 1 - switch #當按下按鈕時,切換swtich狀態(開/關)
print(switch)
if switch == 1: #當switch等於1時啟動計時器
timer = Timer(0)
def change_light(t):
if leds['red'].value(): #如果紅LED是亮著的
leds['red'].off() #把紅LED關掉
leds['green'].on() #打開綠LED,每0.7秒做一次
timer.init(period=700, mode=Timer.ONE_SHOT, callback=change_light)
elif leds['green'].value(): #如果綠LED是亮著的
leds['green'].off() #關閉綠LED
leds['yellow'].on() #打開黃LED,每O.2秒做一次
timer.init(period=200, mode=Timer.ONE_SHOT, callback=change_light)
else: #如果黃LED是亮著的
leds['yellow'].off() #關閉黃LED
leds['red'].on() #打開紅LED,每0.5秒做一次
timer.init(period=500, mode=Timer.ONE_SHOT, callback=change_light)
leds['green'].on()
timer.init(period=700, mode=Timer.ONE_SHOT, callback=change_light)
#為了讓Timer不斷循環,先打開綠LED
else: #否則LED會隨按鈕狀態打開/關閉
leds['green'].off()
if btns['red'].value() == 1:
leds['red'].on()
else:
leds['red'].off()
if btns['yellow'].value() == 1:
leds['yellow'].on()
else:
leds['yellow'].off()
if btns['green'].value() == 1:
leds['green'].on()
else:
leds['green'].off()