就上網找了一些語法的網站來看,如下:
1. 官方:http://arduino.cc/en/Reference/HomePage
2. 中文語法手冊:http://www.game7777.net/doku.php?id=arduino:arduinoreference
因為自己不太懂,所以給自己留一點筆記:
一般會先做(1) Pin腳的宣告,(2) void setup (),(3) void loop ()
然後跟資料定義有關的:int, unsigned int, log, const, #define
跟loop結構有關的:if...else架構,while迴圈,for迴圈
int
整數是基底資料型別,佔用2位元組。
整數的範圍為-32,768到32,767( -2^15 ~(2^15)-1)。
整數的範圍為-32,768到32,767( -2^15 ~(2^15)-1)。
整數類型使用2的補數方式存儲負數。
最高位元通常為符號位元,表示數的正負。
其餘位被“取反加1”(此處請參考補數相關資料,不再贅述)
最高位元通常為符號位元,表示數的正負。
其餘位被“取反加1”(此處請參考補數相關資料,不再贅述)
unsigned
int
unsigned int(無符號整型)與整型資料同樣大小,佔據2位元組。
它只能用於存儲正數而不能存儲負數,範圍 0~65,535 (2^16) - 1)。
它只能用於存儲正數而不能存儲負數,範圍 0~65,535 (2^16) - 1)。
無符號整型和整型最重要的區別是它們的最高位元不同,既符號位元。
在Arduino整型類型中,如果最高位是1,則此數被認為是負數,
剩下的15位為按2的補數計算所得值。
在Arduino整型類型中,如果最高位是1,則此數被認為是負數,
剩下的15位為按2的補數計算所得值。
long
長整數型變數是擴展的數位存儲變數,它可以存儲32位元(4位元組)大小的變數,
從-2,147,483,648到2,147,483,647。
從-2,147,483,648到2,147,483,647。
const
const關鍵字代表常數。
它是一個變數限定詞,用於修改變數的性質,使其變為唯讀狀態。
這表示該變數就像任何相同類型的其他變數一樣使用,但不能改變其值。
如果嘗試為一個const變數賦值,編譯時將會報錯。
它是一個變數限定詞,用於修改變數的性質,使其變為唯讀狀態。
這表示該變數就像任何相同類型的其他變數一樣使用,但不能改變其值。
如果嘗試為一個const變數賦值,編譯時將會報錯。
const關鍵字定義的常數,遵守 variable
scoping 管轄的其他變數的規則。
這一點加上使用 #define 的易犯錯誤,使 const 關鍵字成為定義常量的一個的首選方法。
這一點加上使用 #define 的易犯錯誤,使 const 關鍵字成為定義常量的一個的首選方法。
#define
#define它允許程式設計師在程式編譯之前給常數命名。
在Arduino中,定義的常數不會佔用晶片上的任何程式記憶體空間。
在編譯時編譯器會用事先定義的值來取代這些常數。
在Arduino中,定義的常數不會佔用晶片上的任何程式記憶體空間。
在編譯時編譯器會用事先定義的值來取代這些常數。
然而這樣做會產生一些副作用, 例如,一個已被定義的常量名已經包含在了其他常數名或者變數名中。 在這種情況下,程式內的常數將被 #defined 定義的數值或字串所取代。
通常情況下,優先考慮使用 const 關鍵字替代 #define 來定義常數。
例子
#define ledPin 3
//在編譯時,編譯器將使用數值 3 取代任何用到 ledPin 的地方。
注意:
在#define 聲明後不能有分號。
如果存在分號,編譯器會拋出語義不明的錯誤,甚至關閉程式。
如果存在分號,編譯器會拋出語義不明的錯誤,甚至關閉程式。
#define ledPin 3; //這是一種錯誤寫法
同樣的,在 #define 聲明中包含等號也會產生語義不明的編譯錯誤從而導致關閉程式。
#define ledPin = 3 //這是一種錯誤寫法
if(條件判斷語句)和 ==、!=、<、>(比較運算子)
if (someVariable > 50);
{
// 執行某些語句;
}
本程式測試 someVariable 變數的值是否大於 50。 當大於 50 時,執行一些語句。
換句話說,只要 if 後面括弧裡的結果(稱之為測試運算式)為真, 則執行大括弧中的語句(稱之為執行語句塊); 若為假,則跳過大括弧中的語句。
換句話說,只要 if 後面括弧裡的結果(稱之為測試運算式)為真, 則執行大括弧中的語句(稱之為執行語句塊); 若為假,則跳過大括弧中的語句。
在小括弧裡求值的運算式,需要以下操作符:
比較運算操作符
x == y(x 等於 y)
x != y(x 不等於 y)
x <
y(x 小於 y)
x >
y(x 大於 y)
x <= y(x 小於等於 y)
x >= y(x 大於等於 y)
警告:
注意使用設定運算子的情況(如 if (x = 10))。
一個“=”表示的是設定運算子,作用是將 x 的值設為 10(將值 10 放入 x 變數的記憶體中)。
兩個“==”表示的是比較運算子(如 if (x == 10)),用於測試 x 和 10 是否相等。
後面這個語句只有 x 是 10 時才為真,而前面賦值的那個語句則永遠為真。
一個“=”表示的是設定運算子,作用是將 x 的值設為 10(將值 10 放入 x 變數的記憶體中)。
兩個“==”表示的是比較運算子(如 if (x == 10)),用於測試 x 和 10 是否相等。
後面這個語句只有 x 是 10 時才為真,而前面賦值的那個語句則永遠為真。
這是因為 C 語言按以下規則進行運算
if (x=10)
10 賦值給x(只要非 0 的數賦值的語句,其賦值運算式的值永遠為真)。
10 賦值給x(只要非 0 的數賦值的語句,其賦值運算式的值永遠為真)。
if / else
if/else是比if更為高級的流程控制語句,它可以進行多次條件測試。 比如,檢測模擬輸入的值,當它小於500時該執行哪些操作, 大於或等於500時執行另外的操作。代碼如下:
if (pinFiveInput < 500)
{
// 執行A操作;
}
else
{
// 執行B操作;
}
警告:
此時該測試相關的執行語句塊將被運行,然後程式就跳過剩下的檢測, 直接執行到if/else的下一條語句。注意: 當所有檢測都為假時,若存在else語句塊,將執行預設的else語句塊。
注意else if語句塊可以沒有else語句塊。else if分支語句的數量無限制。
if (pinFiveInput < 500) {
// 執行A操作;
}
else if (pinFiveInput >= 1000) {
// 執行B操作;
}
else {
// 執行C操作;
}
while迴圈
while迴圈會無限的循環,直到括弧內的判斷語句變為假。
必須要有能改變判斷語句的程式,要不然 while迴圈 將永遠不會結束。
這在您的程式裡面表現為一個遞增的變數,或一個外部條件,如感測器的返回值。
必須要有能改變判斷語句的程式,要不然 while迴圈 將永遠不會結束。
這在您的程式裡面表現為一個遞增的變數,或一個外部條件,如感測器的返回值。
語法
while(expression){
//語句
}
參數
expression:為真或為假的一個計算結果
例子
var = 0;
while(var < 200){
//重複一件事200遍
var++
}
for迴圈
for語句用於重複執行一段在花括弧之內的代碼。
通常使用一個增量計數器計數並終止迴圈。
for語句用於重複性的操作非常有效,通常與陣列結合起來使用來運算數據、針腳。
通常使用一個增量計數器計數並終止迴圈。
for語句用於重複性的操作非常有效,通常與陣列結合起來使用來運算數據、針腳。
for迴圈開頭有3個部分:
for (初始化;條件;增量計數){
//語句
}
“初始化”只在迴圈開始執行一次。
每次迴圈,都會檢測一次條件;如果條件為真,則執行語句和“增量計數”,
之後再檢測條件。當條件為假時,迴圈終止。
每次迴圈,都會檢測一次條件;如果條件為真,則執行語句和“增量計數”,
之後再檢測條件。當條件為假時,迴圈終止。
例子://用PWM引腳將LED變暗
int PWMpin = 10; //將一個LED與47Ω電阻串聯接在10腳
void setup() { //無需設置
}
void loop() {
for
(int i=0; i <= 255; i++){
analogWrite(PWMpin,
i);
delay(10);
}
}
程式設計提示
1. 增量計數不只可以"++",還有其它做法,例如
for(int
x = 2; x < 100; x = x * 1.5)
2. 另使用if 在for迴圈裡,可以產生持續反轉的效果。
int
x = 1;
for
(int i = 0; i > -1; i = i + x) {
analogWrite(PWMpin,
i);
if (i == 255) x = -1; // 在峰值轉變方向
}
你好請問
回覆刪除你知道哪裡可以有人為人解釋arduino code的嗎, 付費諮詢的也可以 ,
有一組手電同程式很想做來實驗 ,但看不懂程式 ,國外公開的網站的分享沒有版權問題
麻煩你 無限感激
聯絡:eddie5492001t@yahoo.com.tw
讚
回覆刪除OPERWQEQWEQ
回覆刪除!~@#$%^&*()_+_)))))(*&^%$#!@#$%^&*@#$%^&*@#$%^&*&^%$#@$%^&
回覆刪除???
刪除
回覆刪除.
.
.
.
.
.
..
.
.
.
.
.
..
回覆刪除22
23
刪除24
回覆刪除25
刪除.................................................................................................................................................................................................................................................................
回覆刪除...............................................................