Arduino硬件開發入門點亮LED

原文連接:www.shuaihuajun.com/article/ard…git

我如今手裏有一套Ruff開發板套件和一套Arduino開發板套件。把Ruff開發套件中的全部傳感器用了一個遍以後沒玩夠,因而開始把玩Arduino。沒有對比就沒有傷害真的是,雖然我真正接觸Arduino時間不長,但就我本身的感受來講,Arduino不論從程序角度仍是從硬件角度上來說都比Ruff更底層也就更加靈活,從長遠來看Arduino更具學習和研究價值。因此果斷棄坑Ruff,擁抱Arduino。編程

不過Ruff基於JavaScript語言編寫控制硬件的程序確實勾起我對宏大的物聯網世界的興趣。Ruff更適合快速作出原型,但沒法進入生產環境,這知足不了我對物聯網世界更底層的好奇。因此再見,Ruff,你好,Arduino。bash

Arduino IDE

arduino ide集成開發環境界面

arduino ide集成開發環境界面

Arduino集成開發環境支持語法檢查、上傳程序到開發板、串口監視器等主要功能,最常使用的就是這三個功能。app

一個Arduino程序須要包含一個setup函數和一個loop函數,loop函數會在程序運行期間反覆執行,setup函數只會在程序開始運行時執行一次。學習就是一個不斷循環重複的過程。ide

創意構思

無論作什麼事情,在開始以前,都有在腦海裏先有一個大體的輪廓,雖然在實際操做過程當中會萌生新的想法,但一開始就有一個想法是好的。函數

由於是入門Arduino,因此目的很單純,就是點亮一個LED燈這麼簡單,當成功點亮了一個LED等,能夠試着點亮一排LED燈,還可讓這些LED燈拼成一個符號,不停的閃爍也蠻不錯的,或者一個接着一個的點亮和熄滅。oop

先在腦子裏畫一個電路。學習

對於我這麼個剛入門的小白來講,還能記得初中物理的電路知識,也是很值得鼓勵的。若是我沒有說錯的話,上圖中的狀況叫作並聯電路。之因此加一塊220歐的電阻,是由於LED承受不住太強的電流。ui

能夠把Arduino開發板看做是一塊電池,我將8號引腳的模式設置爲輸出,能夠看做是電池的正極,LED燈並聯起來,聚集到Arduino的負極接地引腳。spa

我先腦子裏有個大體的想法,而後一邊擺弄電路再一邊晚上想法,由於當時鏈接電路的時候也是不斷地嘗試,怎麼鏈接線路能更美觀,最終連成了這個樣子,而且LED燈最終也點亮了。

我認爲學習的過程應該是,理解消化前人總結的東西,真正理解以後再去記憶吸取,而後不斷的模仿和重複,再創新,最後將創新總結起來並分享出去,等待那些識得你所創造的價值的人的理解。創新很難,能走到不斷模仿和重複這一步已經很不簡單。

個人學習過程

個人學習過程

組裝電路

根據腦子裏想象的樣子,摸索着如何鏈接電路,過程當中會不斷改進和完善先前的想法。

一組LED燈插在麪包板上杜邦線鏈接Arduino開發板經過編程線鏈接電腦

一組LED燈插在麪包板上杜邦線鏈接Arduino開發板經過編程線鏈接電腦

鏈接好電路,接下來就是編程。使用pinMode(8, OUTPUT)函數將8號引腳做爲電平的輸出端口即爲正極,在loop函數中不斷變換8號引腳的電平。

編寫程序

由於電路只有通和斷兩個狀態,要麼開,要麼關,因此digitalWrite()第二個參數只有中可能,要麼HIGH要麼LOW。當執行digitalWrite(8, HIGH)的時候,通電,電路中有電壓產生,因此就有運動的電流,電流從LED陽極流向陰極,LED就會發光;當執行digitalWrite(8, LOW)的時候,斷電,電路中沒有電壓,也就沒有運動的電流,LED燈就不亮。

int led = 8;

void setup() {
  // 這裏寫初始化配置,只執行一次:
  pinMode(led, OUTPUT);
}

void loop() {
  // 這裏寫主要代碼,會重複執行:
   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發的光同樣並且很亮。

相關文章
相關標籤/搜索