原文連接:https://www.shuaihuajun.com/article/arduino-led/
我現在手里有一套Ruff開發板套件和一套Arduino開發板套件。把Ruff開發套件中的所有傳感器用了一個遍之后沒玩夠,于是開始把玩Arduino。沒有對比就沒有傷害真的是,雖然我真正接觸Arduino時間不長,但就我自己的感覺來說,Arduino不論從程序角度還是從硬件角度上來講都比Ruff更底層也就更加靈活,從長遠來看Arduino更具學習和研究價值。所以果斷棄坑Ruff,擁抱Arduino。
不過Ruff基于JavaScript語言編寫控制硬件的程序確實勾起我對宏大的物聯網世界的興趣。Ruff更適合快速做出原型,但無法進入生產環境,這滿足不了我對物聯網世界更底層的好奇。所以再見,Ruff,你好,Arduino。
Arduino IDE
Arduino集成開發環境支持語法檢查、上傳程序到開發板、串口監視器等主要功能,最常使用的就是這三個功能。
一個Arduino程序需要包含一個setup函數和一個loop函數,loop函數會在程序運行期間反復執行,setup函數只會在程序開始運行時執行一次。學習就是一個不斷循環重復的過程。
創意構思
不管做什么事情,在開始之前,都有在腦海里先有一個大致的輪廓,雖然在實際操作過程中會萌生新的想法,但一開始就有一個想法是好的。
因為是入門Arduino,所以目的很單純,就是點亮一個LED燈這么簡單,當成功點亮了一個LED等,可以試著點亮一排LED燈,還可以讓這些LED燈拼成一個符號,不停的閃爍也蠻不錯的,或者一個接著一個的點亮和熄滅。
先在腦子里畫一個電路。
對于我這么個剛入門的小白來說,還能記得初中物理的電路知識,也是很值得鼓勵的。如果我沒有說錯的話,上圖中的情況叫做并聯電路。之所以加一塊220歐的電阻,是因為LED承受不住太強的電流。
可以把Arduino開發板看作是一塊電池,我將8號引腳的模式設置為輸出,可以看作是電池的正極,LED燈并聯起來,匯集到Arduino的負極接地引腳。
我先腦子里有個大致的想法,然后一邊擺弄電路再一邊晚上想法,因為當時連接電路的時候也是不斷地嘗試,怎么連接線路能更美觀,最終連成了這個樣子,并且LED燈最終也點亮了。
我認為學習的過程應該是,理解消化前人總結的東西,真正理解之后再去記憶吸收,然后不斷的模仿和重復,再創新,最后將創新總結起來并分享出去,等待那些識得你所創造的價值的人的理解。創新很難,能走到不斷模仿和重復這一步已經很不簡單。
組裝電路
根據腦子里想象的樣子,摸索著如何連接電路,過程中會不斷改進和完善先前的想法。
一組LED燈插在面包板上杜邦線連接Arduino開發板通過編程線連接電腦
連接好電路,接下來就是編程。使用pinMode(8, OUTPUT)函數將8號引腳作為電平的輸出端口即為正極,在loop函數中不斷變換8號引腳的電平。
因為電路只有通和斷兩個狀態,要么開,要么關,所以digitalWrite()第二個參數只有中可能,要么HIGH要么LOW。當執行digitalWrite(8, HIGH)的時候,通電,電路中有電壓產生,所以就有運動的電流,電流從LED陽極流向陰極,LED就會發光;當執行digitalWrite(8, LOW)的時候,斷電,電路中沒有電壓,也就沒有運動的電流,LED燈就不亮。
intled =8;voidsetup(){// 這里寫初始化配置,只執行一次:pinMode(led, OUTPUT);}voidloop(){// 這里寫主要代碼,會重復執行:digitalWrite(led, HIGH);? delay(500);? digitalWrite(led, LOW);? delay(500);}
digitalWrite(8, HIGH)執行后,電路通電,LED亮,此時執行delay(500)函數主程序會暫停500毫秒在執行,LED就會亮500毫秒,然后digitalWrite(8, LOW)執行,LED滅,主程序再暫停500毫秒,至此一個循環完畢,立即進入下一個循環。
我就看到面包板上的一排LED燈每1秒完成亮和滅的表演。
我還發現,如果將LED燈門串聯起來,每一個LED發的光都很微弱,將LED燈并聯起來每一個LED發的光一樣而且很亮。