from machine import Pin #引入module:machine,在此只引入"Pin"功能
import time #引入module:time
LED = Pin(21, Pin.OUT) #GPIO.21設定為輸出接腳,定義名稱:LED
SW1 = Pin(32, Pin.IN, Pin.PULL_UP) #GPIO.32設定為輸入接腳,內部設定上拉電阻,定義名稱:SW1
SW2 = Pin(14, Pin.IN) #GPIO.14設定為輸入接腳,定義名稱:SW2
LED.value(0) #復歸LED狀態
"""
名稱:LED_shine
功能說明:LED閃爍,可調整閃爍次數
細項:
run_times可依需求設定閃爍次數
對於LED設定其value數值來表示接腳高/低態,以控制LED亮/滅
使用內建module:time 的sleep程式達成delay同等功能
"""
def LED_shine(run_times):
for times in range(run_times):
LED.value(1)
time.sleep(3)
LED.value(0)
time.sleep(1.5)
"""
名稱:key_scan
功能說明:檢測SW1、SW2按鍵觸發狀態,並返回當前按鍵狀態
細項:
key_state 來表示按鍵狀態
0=無按鍵觸發,1=SW1觸發,2=SW2觸發
因SW1、SW2皆使用上拉電阻(SW1使用內建上拉電阻),故按鍵未觸發時為高態(bool=1),所以檢測當接腳value為0時判定為"觸發"
為返回觸發狀態使用return指令回傳key_state以達成"返回觸發狀態"
"""
def key_scan():
key_state=0
if(SW1.value()==0):
key_state=1
if(SW2.value()==0):
key_state=2
return key_state
#告知是否完成初始化(目前已暫停告知功能)
#print("ready!")
"""
主程式
功能:
當SW1觸發:顯示"End Program!",並結束程式
當SW2觸發:使LED規律地亮3秒、滅1.5秒共7次
"""
while True:
if(key_scan()==1):
print("End Program!")
break
elif(key_scan()==2):
time.sleep_ms(20) #忽略彈跳週期
if(key_scan()==2):
LED_shine(7)
while(key_scan()==2): #確保按鍵已放開,未放開:不動作
pass