原文連接:https://www.shuaihuajun.com/article/arduino-led/
我現(xiàn)在手里有一套Ruff開發(fā)板套件和一套Arduino開發(fā)板套件。把Ruff開發(fā)套件中的所有傳感器用了一個(gè)遍之后沒玩夠,于是開始把玩Arduino。沒有對比就沒有傷害真的是,雖然我真正接觸Arduino時(shí)間不長,但就我自己的感覺來說,Arduino不論從程序角度還是從硬件角度上來講都比Ruff更底層也就更加靈活,從長遠(yuǎn)來看Arduino更具學(xué)習(xí)和研究價(jià)值。所以果斷棄坑Ruff,擁抱Arduino。
不過Ruff基于JavaScript語言編寫控制硬件的程序確實(shí)勾起我對宏大的物聯(lián)網(wǎng)世界的興趣。Ruff更適合快速做出原型,但無法進(jìn)入生產(chǎn)環(huán)境,這滿足不了我對物聯(lián)網(wǎng)世界更底層的好奇。所以再見,Ruff,你好,Arduino。
Arduino IDE

Arduino集成開發(fā)環(huán)境支持語法檢查、上傳程序到開發(fā)板、串口監(jiān)視器等主要功能,最常使用的就是這三個(gè)功能。
一個(gè)Arduino程序需要包含一個(gè)setup函數(shù)和一個(gè)loop函數(shù),loop函數(shù)會在程序運(yùn)行期間反復(fù)執(zhí)行,setup函數(shù)只會在程序開始運(yùn)行時(shí)執(zhí)行一次。學(xué)習(xí)就是一個(gè)不斷循環(huán)重復(fù)的過程。
創(chuàng)意構(gòu)思
不管做什么事情,在開始之前,都有在腦海里先有一個(gè)大致的輪廓,雖然在實(shí)際操作過程中會萌生新的想法,但一開始就有一個(gè)想法是好的。
因?yàn)槭侨腴TArduino,所以目的很單純,就是點(diǎn)亮一個(gè)LED燈這么簡單,當(dāng)成功點(diǎn)亮了一個(gè)LED等,可以試著點(diǎn)亮一排LED燈,還可以讓這些LED燈拼成一個(gè)符號,不停的閃爍也蠻不錯(cuò)的,或者一個(gè)接著一個(gè)的點(diǎn)亮和熄滅。
先在腦子里畫一個(gè)電路。

對于我這么個(gè)剛?cè)腴T的小白來說,還能記得初中物理的電路知識,也是很值得鼓勵(lì)的。如果我沒有說錯(cuò)的話,上圖中的情況叫做并聯(lián)電路。之所以加一塊220歐的電阻,是因?yàn)長ED承受不住太強(qiáng)的電流。
可以把Arduino開發(fā)板看作是一塊電池,我將8號引腳的模式設(shè)置為輸出,可以看作是電池的正極,LED燈并聯(lián)起來,匯集到Arduino的負(fù)極接地引腳。
我先腦子里有個(gè)大致的想法,然后一邊擺弄電路再一邊晚上想法,因?yàn)楫?dāng)時(shí)連接電路的時(shí)候也是不斷地嘗試,怎么連接線路能更美觀,最終連成了這個(gè)樣子,并且LED燈最終也點(diǎn)亮了。
我認(rèn)為學(xué)習(xí)的過程應(yīng)該是,理解消化前人總結(jié)的東西,真正理解之后再去記憶吸收,然后不斷的模仿和重復(fù),再創(chuàng)新,最后將創(chuàng)新總結(jié)起來并分享出去,等待那些識得你所創(chuàng)造的價(jià)值的人的理解。創(chuàng)新很難,能走到不斷模仿和重復(fù)這一步已經(jīng)很不簡單。

組裝電路
根據(jù)腦子里想象的樣子,摸索著如何連接電路,過程中會不斷改進(jìn)和完善先前的想法。

一組LED燈插在面包板上杜邦線連接Arduino開發(fā)板通過編程線連接電腦
連接好電路,接下來就是編程。使用pinMode(8, OUTPUT)函數(shù)將8號引腳作為電平的輸出端口即為正極,在loop函數(shù)中不斷變換8號引腳的電平。
因?yàn)殡娐分挥型ê蛿鄡蓚€(gè)狀態(tài),要么開,要么關(guān),所以digitalWrite()第二個(gè)參數(shù)只有中可能,要么HIGH要么LOW。當(dāng)執(zhí)行digitalWrite(8, HIGH)的時(shí)候,通電,電路中有電壓產(chǎn)生,所以就有運(yùn)動(dòng)的電流,電流從LED陽極流向陰極,LED就會發(fā)光;當(dāng)執(zhí)行digitalWrite(8, LOW)的時(shí)候,斷電,電路中沒有電壓,也就沒有運(yùn)動(dòng)的電流,LED燈就不亮。
intled =8;voidsetup(){// 這里寫初始化配置,只執(zhí)行一次:pinMode(led, OUTPUT);}voidloop(){// 這里寫主要代碼,會重復(fù)執(zhí)行:digitalWrite(led, HIGH);? delay(500);? digitalWrite(led, LOW);? delay(500);}
digitalWrite(8, HIGH)執(zhí)行后,電路通電,LED亮,此時(shí)執(zhí)行delay(500)函數(shù)主程序會暫停500毫秒在執(zhí)行,LED就會亮500毫秒,然后digitalWrite(8, LOW)執(zhí)行,LED滅,主程序再暫停500毫秒,至此一個(gè)循環(huán)完畢,立即進(jìn)入下一個(gè)循環(huán)。
我就看到面包板上的一排LED燈每1秒完成亮和滅的表演。

我還發(fā)現(xiàn),如果將LED燈門串聯(lián)起來,每一個(gè)LED發(fā)的光都很微弱,將LED燈并聯(lián)起來每一個(gè)LED發(fā)的光一樣而且很亮。