Wiring Framwork
Arduino 所採用的是一個稱作 Wiring 的架構所設計的程式設計流程,他拿掉 main()
這個制式的主程式進入點,改由 setup()
以及 loop()
來取代。
據說這樣可以更容易理解整個程式的運作,並且提高可閱讀性。現在就讓我們一起來看看這是什麼樣的架構吧~
Wiring-Style 的實作
一般來說,傳統的程式語言在撰寫時都會以 main()
來作為程式的進入點,並把主要執行的程式碼都置於這。
來看看如果我們把 Arduino 的語法改寫成一般程式語言撰寫時的樣子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include "Arduino.h" // 輸出腳位設定 int led = 13; int main() { pinMode(led, OUTPUT); while(1) { digitalWrite(led, HIGH); // HIGH = 1 delay(1000); // 1000 ms digitalWrite(led, LOW); // LOW = 0 delay(1000); // 1000 ms } } |
若進一步實作成 Wiring-style 就會變這樣:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#include "Arduino.h" int led = 13; void setup() { pinMode(led, OUTPUT); } void loop() { digitalWrite(led, HIGH); // HIGH = 1 delay(1000); // 1000 ms digitalWrite(led, LOW); // LOW = 0 delay(1000); // 1000 ms } int main() { setup(); while(1) { loop(); } } |
而 Arduino 中(或稱 Wiring-style),他隱藏掉 main()
,所以在 Arduino 的程式中你只會看到 setup()
與 loop()
。因此你看到的 Arduino 程式碼看起來會變成這樣:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
int led = 13; void setup() { pinMode(led, OUTPUT); } void loop() { digitalWrite(led, HIGH); // HIGH = 1 delay(1000); // 1000 ms digitalWrite(led, LOW); // LOW = 0 delay(1000); // 1000 ms } |
從上面的範例中,我們可以看出 Wiring-style 的架構真的可以讓程式更容易閱讀。只要記得,接通電源後只執行一次的程式指令(如腳位設定等初始設定)就放在 setup()
,而要不斷執行的程式指令則放在 loop()
中,這樣就不用在 main()
複雜凌亂的程式碼中翻找要修改的程式碼了!真是太美好啦!(才怪)
下一篇 Arduino Basic 將從 Hello, World 開始講起,雖然這系列文章有相當多人寫過,但對於我來說算是一些心得與紀錄。未來還會有幾篇較為進階的使用方式,還請各位讀者於每星期四緊密注意我們的粉絲專頁囉~