setup() 和 loop() 函式
所有 Arduino 程式都是由 setup 和 loop 兩大區塊所組成,這個「區塊」的正式名稱叫做函式 (function)。以下為最基本的 Arduino 程式:
void setup(){
}
void loop(){
}
※函式名稱後面一定跟著小括號 ex. setup()
※大括號用於界定程式區塊的起始範圍 ex. 上方綠色部分
setup()
此函式的作用式式設定程式參數,例如,指定哪一個接腳是「輸出」或「輸入」,而且 setup() 裡的程式碼從頭到尾只會被執行一次。
loop()
在此函式裡的程式敘述,將不停地重複執行,直到電源關閉為止。
※"void" 代表「沒有傳回值」
設定接腳的工作模式:輸入或輸出
若是要控制某個數位接腳的元件,必須先把該接腳設定成「輸出 (output)」模式;若是要接收來自感應器的輸入值,則要把該接腳設定成「輸入 (input)」模式。
設定接腳狀態的程式碼要放在 setup() 函式裡面。
pinMode()
此函式用於設定接腳模式,格式如下:
pinMode(接腳編號, 模式);
接腳編號:可能值為1~19 (數位腳) 或者 A0~A5 (類比腳)
模式:可能值為 OUTPUT (輸出,全部大寫) 或 INPUT (輸入)
例如:
pinMode(13, OUTPUT);
※Arduino 的程式指令會區分大小寫,所以不能擅自改大小寫,像 "pinMode" 不能寫成 "pinmode";"INPUT" 也不能寫成 "input"。※除了大括號 '{' 及 '}' 以及少數例外,幾乎每一行指令敘述都要用分號 ';' 結尾。
輸出類比訊號
digitalWrite()Arduino 的每個數位和類比接腳都能輸出「高電位 (HIGH 或 1),代表輸出 5V」和「低電位 (LOW 或 0)」訊號,輸出數位訊號的函是指令是 digitalWrite (digital 是數位,write 代表寫入)。格式如下:
digitalWrite(接腳編號, 輸出訊號);
接腳編號:可能值為1~19 (數位腳) 或者 A0~A5 (類比腳)
輸出訊號:可能值為 HIGH (高電位) 或 LOW (低電位),或寫成數字 1 或 0。
例如:
digitalWrite(13, HIGH);
※採用 ATmega328 處理器的 Arduino 板子上的 A0~A5 類比腳位,也相當於數位 14~19腳,因此底下兩行敘述都代表在 A1 腳位輸出「高電位」:
digitalWrite(A1, HIGH);
digitalWrite(15, HIGH);
延遲與凍結時間
delay()
Arduino 具有一個延遲毫秒 (ms,千分一秒) 的函式指令,叫做 delay():
delay(延遲毫秒數);
延遲毫秒數:1/1000秒,亦即10-3秒。如要延遲一秒,即填入1000。
例如:
delay(1000);
delayMicroseconds()
Arduino 還有另一個延遲微秒 (μs) 的指令,能精確延遲 3μs~16383μs,但超過 16383 以上的微秒值就不太準確了:
delayMicroseconds(延遲微秒數);
延遲微秒數:1/1000000秒,亦即10-6秒。此值不要超過16383。
程式基本規則
語法1:縮排
程式的語法類似英文,每個指令之間用空白隔開,像 void 和 setup 之間要插入空格 (要插入幾個空格都可以)。
void setup(){
pinMode(13, OUTPUT);
}
習慣上會在大括弧內的敘述前面加上許多空白 (在每一行前面按一下 "Tab鍵" 即可插入許多空白) 產生縮排效果,這是為了方便閱讀。
語法2:註解
當程式碼越來越長,越來越複雜時,為幫助自己或其他人能迅速了解其程式片段的功能,我們可以在其中留下註解 (comment),也就是程式的說明文字
註解的語法是在說明文字的最前面加上雙斜線 "//",或者在數行註解文字的前後加上 /* 和 */,例如:
/*
LED閃閃
作者:Roger
LED燈接在第13腳
*/
void setup(){
//第13腳設定成「輸出」
pinMode(13, OUTPUT);
}
深綠色字即為註解。
程式編譯器不會理會註解內容。
小試身手:LED燈閃爍程式
請在 Arduino 程式開發工具,在程式編輯窗口輸入程式碼。
void setup(){
pinMode(13, OUTPUT);
}
void loop(){
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000):
}
初學常見錯誤原因:
1. 在 loop() 函式寫完後少了大括弧。
2. 指令拼寫錯誤,例如,digitalWrite() 寫成 digitalwrite。
3. 缺手分號結尾:幾乎每一行敘述後面都要加上分號。
裡面的函數可以自己改改看喔~~ 看看會發生什麼變化。
以下為講解影片LED閃爍的講解影片~~
以下為講解影片LED閃爍的講解影片~~
有什麼問題或建議,可以在留言區留言呦~~
留言
張貼留言