原文連接:www.shuaihuajun.com/article/ard…git
我如今手裏有一套Ruff開發板套件和一套Arduino開發板套件。把Ruff開發套件中的全部傳感器用了一個遍以後沒玩夠,因而開始把玩Arduino。沒有對比就沒有傷害真的是,雖然我真正接觸Arduino時間不長,但就我本身的感受來講,Arduino不論從程序角度仍是從硬件角度上來說都比Ruff更底層也就更加靈活,從長遠來看Arduino更具學習和研究價值。因此果斷棄坑Ruff,擁抱Arduino。編程
不過Ruff基於JavaScript語言編寫控制硬件的程序確實勾起我對宏大的物聯網世界的興趣。Ruff更適合快速作出原型,但沒法進入生產環境,這知足不了我對物聯網世界更底層的好奇。因此再見,Ruff,你好,Arduino。bash
Arduino集成開發環境支持語法檢查、上傳程序到開發板、串口監視器等主要功能,最常使用的就是這三個功能。app
一個Arduino程序須要包含一個setup
函數和一個loop
函數,loop
函數會在程序運行期間反覆執行,setup
函數只會在程序開始運行時執行一次。學習就是一個不斷循環重複的過程。ide
無論作什麼事情,在開始以前,都有在腦海裏先有一個大體的輪廓,雖然在實際操做過程當中會萌生新的想法,但一開始就有一個想法是好的。函數
由於是入門Arduino,因此目的很單純,就是點亮一個LED燈這麼簡單,當成功點亮了一個LED等,能夠試着點亮一排LED燈,還可讓這些LED燈拼成一個符號,不停的閃爍也蠻不錯的,或者一個接着一個的點亮和熄滅。oop
先在腦子裏畫一個電路。學習
對於我這麼個剛入門的小白來講,還能記得初中物理的電路知識,也是很值得鼓勵的。若是我沒有說錯的話,上圖中的狀況叫作並聯電路。之因此加一塊220歐的電阻,是由於LED承受不住太強的電流。ui
能夠把Arduino開發板看做是一塊電池,我將8號引腳的模式設置爲輸出,能夠看做是電池的正極,LED燈並聯起來,聚集到Arduino的負極接地引腳。spa
我先腦子裏有個大體的想法,而後一邊擺弄電路再一邊晚上想法,由於當時鏈接電路的時候也是不斷地嘗試,怎麼鏈接線路能更美觀,最終連成了這個樣子,而且LED燈最終也點亮了。
我認爲學習的過程應該是,理解消化前人總結的東西,真正理解以後再去記憶吸取,而後不斷的模仿和重複,再創新,最後將創新總結起來並分享出去,等待那些識得你所創造的價值的人的理解。創新很難,能走到不斷模仿和重複這一步已經很不簡單。
根據腦子裏想象的樣子,摸索着如何鏈接電路,過程當中會不斷改進和完善先前的想法。
鏈接好電路,接下來就是編程。使用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發的光同樣並且很亮。