Arduino的程序语言一一个Arduino脚本程式码(SKETCH)由两部分组成voidsetup()在这个函数范围内放置初始化Arduino板子的程式-在主要程式开始撰写前,使Arduino板子装置妥当的指令。voidloop()在此放置你的Arduino脚本。这部份的程式会一直重复的被执行,直到Arduino板子被关闭。特殊符号Arduino语言用了一些符号描绘程式码,例如注释和程式区块。;//(分号)Arduino语言每一行程序都是以分号为结尾。这样的语法让你可以自由地安排代码,你可以将两个指令放置在同一行,只要中间用分号隔开。(但这样做可能降低程式的可读性。)范例:delay(100);{}(大括号)大括号用来将程式代码分成一个又一个的区块,如以下范例所示,在loop()函数的前、后,必须用大括号括起来。范例:voidloop(){Serial.pritln(cial);}注释程式的注释就是对代码的解释和说明,编写注释有助于程式设计师(或其他人)了解代码的功能。Arduino处理器在对程式码进行编译时会忽略注释的部份。Arduino语言中的编写注释有两种方式//单行注释:这整行的文字会被处理器忽略/*多行注释:在这个范围内你可以写一整首诗*/常数在Arduino语言中事先定义了一些具特殊用途的保留字。HIGH和LOW用来表示你开启或是关闭了一个Arduino的脚位(pin)。INPUT和OUTPUT用来指示这个Arduino的脚位(pin)是属于输入或是输出用途。true和false用来指示一个条件或表示式为真或是假。变数变数用来指定Arduino记忆体中的一个位置,变数可以用来储存资料,程式人员可以透过脚本代码去不限次数的操作变数的值。因为Arduino是一个非常简易的微处理器,但你要宣告一个变数时必须先定义他的资料型态,好让微处理器知道准备多大的空间以储存这个变数值。Arduino語言支援的變數型態:布林boolean布林變數的值只能為真(true)或是假(false)字元char單一字元例如A,和一般的電腦做法一樣Arduino將字元儲存成一個數字,即使你看到的明明就是一個文字。用數字表示一個字元時,它的值有效範圍為-128到127。-----------------------------------------------------------------------------------------------------------------注意:有兩種主流的電腦編碼系統ASCII和UNICODE。ASCII表示了127個字元,用來在序列終端機和分時計算機之間傳輸文字。UNICODE可表示的字元量比較多,在現代電腦作業系統內它可以用來表示多國語言。在位元數需求較少的資訊傳輸時,例如義大利文或英文這類由拉丁文,阿拉伯數字和一般常見符號構成的語言,ASCII仍是目前主要用來交換資訊的編碼法。-----------------------------------------------------------------------------------------------------------------位元組byte儲存的數值範圍為0到255。如同字元一樣位元組型態的變數只需要用一個位元組(8位元)的記憶體空間儲存。整數int整數資料型態用到2位元組的記憶體空間,可表示的整數範圍為–32,768到32,767;整數變數是Arduino內最常用到的資料型態。整數unsignedint無號整數同樣利用2位元組的記憶體空間,無號意謂著它不能儲存負的數值,因此無號整數可表示的整數範圍為0到65,535。長整數long長整數利用到的記憶體大小是整數的兩倍,因此它可表示的整數範圍從–2,147,483,648到2,147,483,647。長整數unsignedlong無號長整數可表示的整數範圍為0到4,294,967,295。浮點數float浮點數就是用來表達有小數點的數值,每個浮點數會用掉四位元組的RAM,注意晶片記憶體空間的限制,謹慎的使用浮點數。雙精準度浮點數double雙精度浮點數可表達最大值為1.7976931348623157x10308。字串string字串用來表達文字信息,它是由多個ASCII字元組成(你可以透過序串埠發送一個文字訊息或者將之顯示在液晶顯示器上)。字串中的每一個字元都用一個組元組空間儲存,並且在字串的最尾端加上一個空字元以提示Ardunio處理器字串的結束。下面兩種宣告方式是相同的。charstring1[]=Arduino;//7字元+1空字元charstring2[8]=Arduino;//與上行相同陣列array一串變數可以透過索引去直接取得。假如你想要儲存不同程度的LED亮度時,你可以宣告六個變數light01,light02,light03,light04,light05,light06,但其實你有更好的選擇,例如宣告一個整數陣列變數如下:intlight[6]={0,20,50,75,100};array這個字為沒有直接用在變數宣告,而是[]和{}宣告陣列。控制指令Ardunio利用一些關鍵字控制程式碼的邏輯。if…elseIf必須緊接著一個問題表示式(expression),若這個表示式為真,緊連著表示式後的代碼就會被執行。若這個表示式為假,則執行緊接著else之後的代碼.只使用if不搭配else是被允許的。範例:if(val==1){digitalWrite(LED,HIGH);}for用來明定一段區域代碼重覆指行的次數。範例:for(inti=0;i10;i++){Serial.print(ciao);}switchcaseif敘述是程式裡的分叉路口,switchcase是更多選項的路口。Swithcase根據變數值讓程式有更多的選擇,比起一串冗長的if敘述,使用swithcase可使程式代碼看起來比較簡潔。範例:switch(sensorValue){case23:digitalWrite(13,HIGH);break;case46:digitalWrite(12,HIGH);break;default://以上條件都不符合時,預設執行的動作digitalWrite(12,LOW);digitalWrite(13,LOW);}while當while之後的條件成立時,執行括號內的程式碼。範例://當sensor值小於512,閃爍LED燈sensorValue=analogRead(1);while(sensorValue512){digitalWrite(13,HIGH);delay(100);digitalWrite(13,HIGH);delay(100);sensorValue=analogRead(1);}do…while和while相似,不同的是while前的那段程式碼會先被執行一次,不管特定的條件式為真或為假。因此若有一段程式代碼至少需要被執行一次,就可以使用do…while架構。範例:do{digitalWrite(13,HIGH);delay(100);digitalWrite(13,HIGH);delay(100);sensorValue=analogRead(1);}while(sensorValue512);breakBreak讓程式碼跳離迴圈,並繼續執行這個迴圈之後的程式碼。此外,在break也用於分隔switchcase不同的敘述。範例://當sensor值小於512,閃爍LED燈do{//按下按鈕離開迴圈if(digitalRead(7)==HIGH)break;digitalWrite(13,HIGH);delay(100);digitalWrite(13,HIGH);delay(100);sensorValue=analogRead(1);}while(sensorValue512);continuecontinue用於迴圈之內,它可以強制跳離接下來的程式,並直接執行下一個迴圈。範例:for(light=0;light255;light++){//忽略數值介於140到200之間if((x140)&&(x200))continue;analogWrite(PWMpin,light);delay(10);}return函數的結尾可以透過return回傳一個數值。例如,有一個計算現在溫度的函數叫computeTemperature(),你想要回傳現在的溫度給temperature變數,你可以這樣寫:inttemperature=computeTemperature();intcomputeTemperature(){inttemperature=0;temperature=(analogRead(0)+45)/100;returntemperature;}算術運算和方程式你可以透過特殊的語法用Arduino去做一些複雜的計算。+和–就是一般學校教的加減法,乘法用*示,而除法用/表示。另外餘數除法(%),用於計算整數除法的餘數值。你可以透過多層次的括弧去指定算術之間的循序。和數學函式不一樣,中括號和大括號在此被保留在不同的用途(分別為陣列索引,和宣告區域程式碼)。範例:a=2+2;light=((12*sensorValue)-5)/2;remainder=3%2;比較運算符號當你在指定if,while,for敘述句時,可以運用下面這個運算符號:==等於!=不等於小於大於=小於等於=大於等於布林運算符號當你想要結合多個條件式時,可以使用布林運算符號。例如你想要檢查從感測器傳回的數值是否於5到10,你可以這樣寫:if((sensor=5)&&(sensor=10))這裡有三個運算符號:交集(and)用&&表示;聯集(or)用||表示;反相(finallynot)用!表示。復合運算符號有一般特殊的運算符號可以使程式碼比較簡潔,例如累加運算符號。例如將一個值加1,你可以這樣寫:value=value+1;你也可以用一個復合運算符號累加(++):value++;累加和遞減(++和--)當你在累加1或遞減1到一個數值時。請小心i++和++i之間的不同。如果你用的是i++,i會被累加並且i的值等於i+1;但當你使用++i時,i的值等於i,直到這行指令被執行完時i再加1。同理應用於––。+=,–=,*=and/=這些運算符號可讓表示式更精簡,下面二個表示式是等價的:a=a+5;a+=5;