一、程式大架構
接下來來認識arduino程式的基本架構。Arduino的程式架構,分為void
setup()以及{}void loop(){}這兩個區塊,這些區塊的專有名詞叫做”函數”,當你要撰寫arduino的程式時,這兩個東西是不可或缺的東西,也就是當你在撰寫arduino程式時,一定要出現void setup()以及{}void loop(){}這一些東西,而且也只能出現一次!
void setup()和{}void loop(){}就是一種函數,void代表函數執行完後不回傳數值(聽不懂沒關係),void後面的setup和loop代表該函數的名字(聽不懂沒關係),但一定要在函數名字後面加一組小括弧和一組大括弧,並把程式寫到大括弧內
setup函數的大括號裡面要放置什麼呢?, set up就是”建立”的意思,顧名思義,裡面就是要放一些有關剛開始建立程式所需的東西,像是設定參數、接腳設定、函數初始化等等,或者你只想要他做一次的程式都可以放在setup函數裡。
Loop就是”循環”的意思,就是要在裡面就是要放需要arduino一直做的程式,例如說一直偵測溫度、讓LED不停地閃爍等等……
二、基本指令
1.digitalWrite
語法:digitalWrite(腳位編號,輸出準位);
腳位:範圍從0~13,A0~A7都可以(不過盡量不要用到0,1,A6,A7)因為0,1是Arduino專用來通訊的腳位,若真的需要使用,要先拔除插在0,1腳上的接腳,等Arduino程式上傳完畢後再插上去;而不用A6,A7是因為Arduino開發版並沒有將這兩個腳位拉接口出來
輸出準位:有”HIGH”和”LOW”兩種選擇,HIGH代表輸出5V;而LOW代表輸出0V,但可以用1和0代替HIGH和LOW
例如:
(1)要使第13腳輸出5V→digitalWrite(13,1); 或digitalWrite(13,HIGH);
(2)要使第A2腳輸出0V→digitalWrite(A2,0); 或digitalWrite(A2,LOW);
digitalWrite(14,0); 或digitalWrite(14,LOW);
A0也是第14腳,A1是第15腳……
到後面編譯時,會利用#define將A0換置為14,所以要寫A0或14都沒關係
2.pinMode
語法:pinMode(腳位編號,工作模式);
腳位:範圍從0~13,A0~A7都可以(不過盡量不要用到0,1,A6,A7)
工作模式:”OUTPUT”和”INPUT”,若設為” INPUT”代表此接腳將用來偵測電壓;反之設為” OUTPUT”,則此接腳將用來輸出電壓
例如:
(1)將A5設定為偵測輸入電壓:pinMode(A5,INPUT);
(2)將9設為輸出電壓:pinMode(9,OUTPUT);
若沒有設定pinMode,DDRX暫存器會把三態閘控制在高阻抗狀態,即使PORTX暫存器(及digitalWrite)有輸出,也會因為三態閘內部阻抗串聯電路造成輸出電流變小,因此沒宣告pinMode,該接腳照常動作但輸出電流不足
3.delay
Arduino將會保持現態,發呆且什麼都不做,直到計時時間到
語法:delay(毫秒數);
毫秒數:若需要延遲一秒,一秒=1000毫秒
例如:需要延遲3秒 delay(3000);
需要延遲1.8秒 delay(1800);
但撰寫龐大程式時,儘量利用millis()代替delay(),這樣方便模擬多工且能達到計時效果
4.//註解
在程式中,難免複雜難以理解,在程式的最後面加入兩撇斜線或者以/* */這兩個符號夾著註解內容,如:
(1)digitalWrite(13,1); //將13腳輸出5V
(2)pinMode(13,OUTPUT); /*將13腳設為輸出腳*/
注意:
1.Arduino程式指令會區分大小寫,所以pinmode不等於pinMode;input不等於INPUT
2.除了{}之外以及少數例外,幾乎每一行指令敘述都要加 ;
反正除了void setup(){}和void loop(){}的結尾不用加以外,給他加下去就對了 例如:pinMode(13,OUTPUT);
3. Arduino有保持性,也就是說若使Arduino輸出5V電壓讓LED亮,若沒有用程式使該接腳輸出0V,arduion會一直輸出5V電壓,所以LED會一直亮著,直到下一次指定該腳位輸出0V,LED方才熄滅
4.請不要將中文的標點符號和英文的標點符號搞混,因為中文的標點符號Arduino看不懂阿
學會上的指令,使用arduino來讓LED閃爍吧!
由於arduino執行一行程式的速度非常快,如果用arduino來讓LED亮
而沒有延遲的話,LED會閃一下就滅了,而且速度快到不要不要的。因此要使arduino點亮LED後暫停一下,才看的到LED閃爍
因為要重複→使LED亮→延遲一秒→使LED暗→延遲一秒的動作,所以這些程式要放在loop裡面;至於 設定(或者是宣告)接腳模式 是屬於設定的一種,而且也只需要做一次,因此要放在setup裡。
所以將arduino
ide打開,並鍵入以下程式:
void
setup()
{
pinMode(13,OUTPUT);
}
void loop()
{
digitalWrite(13,HIGH);
delay(1000);
digitalWrite(13,LOW);
delay(1000);
}
將程式上傳後應該就可以看到LED在閃爍了
沒有留言:
張貼留言