Arduino Lesson I
先說明這習題想要達到的目標,請先參考以下的電路圖(用draw.io畫出來的)
按鍵開關未按壓時,綠燈閃爍,按下之後,紅燈1與紅燈2交相閃爍,依照我小小腦袋瓜的分析,可以歸納出幾點
- 當開關按下去時,腳位2就會有電,未按壓時,腳位2就沒有電
- 腳位2有電時,腳位3要間歇的供電,腳位4、5不供電
- 腳位2沒電時,腳位4、5要輪流供電,腳位3不供電
大概知道規則後,依照電路圖來佈置開發版,佈置的有點醜,請勿見怪
再來就是要準備我們的Sketch,打開IDE,選擇「NEW SKETCH」新增一支程式
預設檔案名稱會以時間命名,我把它改成eric_arduino_lesson_2,另外我也把畫好的電路圖、接好的電路圖上傳上去(明明講Lesson 1,怎麼又變Lesson 2?因為原來的Lesson 1實在太簡單,講出來侮辱了大家的智慧.)
按最右邊倒三角的Tab,就能選擇匯入檔案
回到主要的程式碼,會發現預建立好的程式只有兩個function:setup()跟loop(),簡單說setup就是初始化的設定動作,loop就是主要的邏輯迴圈了(其實我自己在這邊是有個疑問,要讓LED有閃爍效果,會稍微延遲一下,所以這時間內放開又按下按鈕,這事件會queue下來嗎?還是沒法反應就忽略掉了?)
- 腳位2要判斷有沒有電,所以是輸入模式
- 腳位3、4、5要供電,所以是輸出模式
設定腳位輸出入模式要用pinMode這個函式
再來就是主迴圈了,當腳位2有電時,腳位4、5不供電,腳位3要間歇供電,這邊間歇我們用250毫秒
- 讀取腳位有沒有電,用digitalRead(腳位號碼)這個函式.
- 腳位是否要給電,用digitalWrite(腳位號碼,高/低電位)這個函式.
- 沒電的電位常數是LOW(低電位)
- 有電的電位常數是HIGH(高電位)
- 間歇延遲用delay(毫秒)這個函式
反之,當腳位2沒有電時,腳位3不供電,腳位4、5輪流供電
接上Arduino Uno開發版並上傳程式看執行的結果,在實驗的過程,我剛剛的疑問似乎得到了解答,新的事件會中斷loop執行再重新loop,後續再來確認這點推論是否正確.
最後是執行的結果
https://youtu.be/hSI815FlGbo
本文章以 CC BY 4.0 授權








