Arduino-語(yǔ)法手冊(cè)_第1頁(yè)
Arduino-語(yǔ)法手冊(cè)_第2頁(yè)
Arduino-語(yǔ)法手冊(cè)_第3頁(yè)
Arduino-語(yǔ)法手冊(cè)_第4頁(yè)
Arduino-語(yǔ)法手冊(cè)_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1 / 15結(jié)構(gòu)部分一、結(jié)構(gòu)1.1 setup()1.2 loop()二、結(jié)構(gòu)控制2.1 if2.2 if.else2.3 for2.4 switch case2.5 while2.6 do. while2.7 break2.8 continue2.9 return2.10 goto三、擴(kuò)展語(yǔ)法3.1;(分號(hào))3.2 (花括號(hào))3.3(單行注釋?zhuān)?.4/* */ (多行注釋?zhuān)?.5 #define3.6 #include四、算數(shù)運(yùn)算符4.1=(賦值運(yùn)算符)4.2 + (加)4.3 -(減)4.4* (乘)4.5 / (除)4.6% (模)五、比較運(yùn)算符5.1=(等于)5.2 !=(不等于)5.

2、3 (大于)5.5 =(大于等于)六、布爾運(yùn)算符6.1& (與)Arduino語(yǔ)法手冊(cè)Arduino的程序可以劃分為三個(gè)主要部分:結(jié)構(gòu)、變量(變量與常量)、函數(shù)。6.2 | (或)6.3 !(非)七、指針運(yùn)算符7.1*取消引用運(yùn)算符7.2 &引用運(yùn)算符八、位運(yùn)算符8.1 & (bitwise and)8.2 | (bitwise or)8.3A (bitwise xor)8.4 z (bitwise not)8.5 (bitshift left)8.6 (bitshift right)九、復(fù)合運(yùn)算符9.1 + (increment)9.2 - (decrement)9.3 += (compou

3、nd addition)9.4 -= (compound subtraction)9.5 *= (compound multiplication)9.6 /= (compound division)9.6 &二(compound bitwise and)9.8 |= (compound bitwise or)變量部分十、常量10.1 HIGH I LOW (引腳電壓立義)10.2 INPUT|OUTPUT (數(shù)字引腳 (Digital pins)定義)10.3 true | false (邏輯層定義)10.4 integer constants (整數(shù)常量)10.5 floating poin

4、t constants (浮點(diǎn)常十一、數(shù)據(jù)類(lèi)型11.1 void11.2 boolean (布爾)113 char (有號(hào)數(shù)據(jù)類(lèi)型)11.4 unsigned char (無(wú)符號(hào)數(shù)據(jù)類(lèi)型)11.5 byte (無(wú)符號(hào)數(shù))2/1511.6 int (整型)18.2 micros()11.7 unsigned int (無(wú)符號(hào)整型)18.3 delay()11.8 word18.4 delayMicroseconds()11.9 long (長(zhǎng)整數(shù)型)十九、數(shù)學(xué)運(yùn)算11.10 unsigned long(無(wú)符號(hào)長(zhǎng)整數(shù)型)19.1 min()11.11 float (浮點(diǎn)型數(shù))19.2 max()1

5、1.12 double (雙精度浮點(diǎn)數(shù))19.3 abs)11.13 string (char array/字符串)19.4 constrain()11.14 String object (String 類(lèi))19.5 map()11.15 array (數(shù)組)19.6 pow)十二、數(shù)據(jù)類(lèi)型轉(zhuǎn)換19.7 sqrt()12.1 char()19.8 ceil()12.2 byte()19.9 exp()12.3 int()19.10 fabs()12.4 word()19.11 floor()12.5 long()19.12 fma()12.6 float()19.13 fmax()十三、變量作

6、用域&修飾符19.14 fmin()13.1 variable scope (變量的作用域)19.15 fmod()13.2 static (靜態(tài)變量)19.16 ldexp()13.3 volatile19.17 log()13.4 const19.18 Iogl0()十四、輔助工具19.19 round()14.1 sizeof()Tg半E八19.20 signbit()19.21 sq()19.22 squared19.23 trunc()二十、三角函數(shù)十五、數(shù)字I/O20.1 sin)15.1 pinMode()20.2 cos)15.2 digitalWrite()203 tan)1

7、5.3 digitalRead()20.4 acos()十六、模擬I/O20.5 asin()16.1 analogReference()20.6 atan()16.2 analogRead()20.7 atan2()16.3 analogWrite() PWM20.8 cosh()十七、高級(jí)I/O20.9 degrees()17.1 tone()20.10 hypot()17.2 noTone()20.11 radiansf)17.3 shiftOut()20.12 sinh()17.4 shiftlnf)20.13 tanh()17.5 pulseln()二十一、隨機(jī)數(shù)十八、時(shí)間21.1

8、randomSeed()18.1 millisO21.2 random()3/15二十二位操作22.1 lowByte()22.2 highByte()22.3 bitRead()22.4 bitWrite()22.5 bitSet)22.6 bitClear()22.7 bit()二十三、設(shè)置中斷函數(shù)23.1 attachlnterrupt()23.2 detachlnterrupt()二十四、開(kāi)關(guān)中斷24.1 interrupts()(中斷)24.2 nolnterrupts()(禁止中斷) 二十五、通訊25.1 Serial25.1.1if (Serial)25.1.2 Serial.a

9、vailable()25.1.3 Serial.beginf)25.1.4 Serial.end()25.1.5 Serial.find()25.1.6 Serial.findllntil()25.1.7 Serial.flush()25.1.8 Serial.parseFloat()25.1.9 Serial.parselnt()25.1.10 Serial.peek()25.1.11 Serial.print()25.1.12 Serial.println()25.1.13 Serial.read()25.1.14 Serial.readBytes()25.1.15 Serial.read

10、BytesUntil()25.1.16 Serial.setTimeout()25.1.17 Serial.write()25.1.18 Serial.SerialEvent()25.2 Stream二十六、USB (僅適用于Leonardo和 Due)26.1 Mouse (鍵盤(pán))26.2 Keyboard (鼠標(biāo))結(jié)構(gòu)部分一、結(jié)構(gòu)L 1 setu p()在Arduino中程序運(yùn)行時(shí)將首先調(diào)用setup()函數(shù)。用于初始化變量、設(shè)置針腳的輸出 輸入類(lèi)型、配置串口、引入類(lèi)庫(kù)文件等等。每次Arduino上電或重啟后,setup函數(shù)只運(yùn)行 一次。4/ 15示例int buttonPin 二 3;v

11、oid setupf)Serial.begin(9600);pinModefbuttonPin, INPUT);void loop()/.L 2 loop ()在setup()函數(shù)中初始化和定義了變量,然后執(zhí)行l(wèi)oop()函數(shù)。顧名思義,該函數(shù)在程序 運(yùn)行過(guò)程中不斷的循環(huán),根據(jù)一些反饋,相應(yīng)改變執(zhí)行情況。通過(guò)該函數(shù)動(dòng)態(tài)控制Arduino 主控板。示例int buttonPin = 3; / setup中初始化串口和按鍵針腳.void setup()beginSerial(9600);pinMode(buttonPin, INPUT);/ loop中每次都檢查按鈕,如果按鈕被按下,就發(fā)送信息到串

12、口void loop()if (digitalRead(buttonPin) = HIGH)serialWriteCH);elseserialWriteCL);delay(lOOO);二. 結(jié)構(gòu)控制2.1ifif (條件判斷語(yǔ)句)和乂、匸、s (比較運(yùn)算符)if語(yǔ)句與比較運(yùn)算符一起用于檢測(cè)某個(gè)條件是否達(dá)成,如某輸入值是否在特定值之上 等 if語(yǔ)句的語(yǔ)法是:if (someVariable 50)執(zhí)行某些語(yǔ)句本程序測(cè)試someVariable變量的值是否大于50。當(dāng)大于50時(shí),執(zhí)行一些語(yǔ)句。換句 話說(shuō),只要if后而括號(hào)里的結(jié)果(稱之為測(cè)試表達(dá)式)為貞,則執(zhí)行大括號(hào)中的語(yǔ)句(稱 之為執(zhí)行語(yǔ)句塊);

13、若為假,則跳過(guò)大括號(hào)中的語(yǔ)句。if語(yǔ)句后的大括號(hào)可以省略。若省 略大括號(hào),則只有一條語(yǔ)句(以分號(hào)結(jié)尾)成為執(zhí)行語(yǔ)句。if (x 120) digitalWritefLEDpin, HIGH);if (x 120)5/15digitalWrite(LEDpin, HIGH);if (x 120) digitalWrite(LEDpin, HIGH);if (x 120)digitalWrite(LEDpinl, HIGH);digitalWrite(LEDpin2z HIGH);/以上所有書(shū)寫(xiě)方式都正確在小括號(hào)里求值的表達(dá)式,需要以下操作符:比較運(yùn)算操作符:x=y (x 等于 y)x !=y (

14、x不等于y)x y (x 大于 y)x=y (x大于等于y)警告:警告:注意使用賦值運(yùn)算符的情況(如if(x = 10). 一個(gè)“二”表示的是賦值運(yùn)算符,作用是 將x的值設(shè)為10 (將值10放入x變量的內(nèi)存中)。兩個(gè)表示的是比較運(yùn)算符(如if (x=10),用于測(cè)試x和10是否相等。后而這個(gè)語(yǔ)句只有x是20時(shí)才為貞,而前而賦值 的那個(gè)語(yǔ)句則永遠(yuǎn)為真。這是因?yàn)镃語(yǔ)言按以卜規(guī)則進(jìn)行運(yùn)算if(x=10): 10賦值給x (只要非0的數(shù)賦值的語(yǔ) 句,其賦值表達(dá)式的值永遠(yuǎn)為貞),因此x現(xiàn)在值為10。此時(shí)if的測(cè)試表達(dá)式值為10,該 值永遠(yuǎn)為貞因?yàn)榉?值永遠(yuǎn)為貞所以,if (x = 10)將永遠(yuǎn)為貞,這就

15、不是我們運(yùn)行if所 期待的結(jié)果。另外,x被賦值為10,這也不是我們所期待的結(jié)果。if的另外一種分支條件控制結(jié)構(gòu)是if.else形式。2. 2 ifelseif/else是比if更為高級(jí)的流程控制語(yǔ)句,它可以進(jìn)行多次條件測(cè)試。比如,檢測(cè)模擬 輸入的值,當(dāng)它小于500時(shí)該執(zhí)行哪些操作,大于或等于500時(shí)執(zhí)行另外的操作。代碼如 下:if (pinFivelnput 500)/執(zhí)行A操作else執(zhí)行B操作else可以進(jìn)行額外的if檢測(cè),所以多個(gè)互斥的條件可以同時(shí)進(jìn)行檢測(cè)。測(cè)試將一個(gè)一個(gè)進(jìn)行下去,直到某個(gè)測(cè)試結(jié)果為真,此時(shí)該測(cè)試相關(guān)的執(zhí)行語(yǔ)句塊將 被運(yùn)行,然后程序就跳過(guò)剩下的檢測(cè),直接執(zhí)行到if/els

16、e的下一條語(yǔ)句。當(dāng)所有檢測(cè)都為 假時(shí),若存在else語(yǔ)句塊,將執(zhí)行默認(rèn)的else語(yǔ)句塊。注意else if語(yǔ)句塊可以沒(méi)有else語(yǔ)句塊。else if分支語(yǔ)句的數(shù)量無(wú)限制。if (pinFivelnput = 1000)6/ 1599執(zhí)行B操作else執(zhí)行C操作另外一種進(jìn)行多種條件分支判斷的語(yǔ)句是switch case語(yǔ)句。2. 3 forfor語(yǔ)句 描述for語(yǔ)句用于重復(fù)執(zhí)行一段在花括號(hào)之內(nèi)的代碼。通常使用一個(gè)增量計(jì)數(shù)器汁數(shù)并終止 循環(huán)。for語(yǔ)句用于重復(fù)性的操作非常有效,通常與數(shù)組結(jié)合起來(lái)使用來(lái)操作數(shù)據(jù)、引腳。for循環(huán)開(kāi)頭有3個(gè)部分:(初始化;條件;增量計(jì)數(shù))語(yǔ)句“初始化”只在循環(huán)開(kāi)始執(zhí)

17、行一次。每次循環(huán),都會(huì)檢測(cè)一次條件:如果條件為貞, 則執(zhí)行語(yǔ)句和“增量計(jì)數(shù)”,之后再檢測(cè)條件。當(dāng)條件為假時(shí),循環(huán)終止。例子用PWM引腳將LED變暗int PWMpin二i0; /將一個(gè)LED與47 Q電阻串聯(lián)接在10腳void setup()無(wú)需設(shè)置void loop()for (int i=0; i = 255; i+)analogWritefPWMpin, i);delay(lO);7/15編程提示C語(yǔ)言的for循環(huán)語(yǔ)句比BASIC和其他電腦編程語(yǔ)言的for語(yǔ)句更靈活。除了分號(hào)以 外,英他3個(gè)元素都能省略。同時(shí),初始化,條件,增量計(jì)算可以是任何包括無(wú)關(guān)變量的 有效C語(yǔ)句.任何C數(shù)據(jù)類(lèi)型包括

18、floato這些不尋常的for語(yǔ)句可能會(huì)解決一些困難的編 程問(wèn)題。例如,在增量計(jì)數(shù)中使用乘法可以得到一個(gè)等比數(shù)列:for(lnt x = 2; x -1; i = i + x)analogWritefPWMpin, i);if (i = 255) x = -1;/在峰值轉(zhuǎn)變方向delay(lO);2.4switch caseswitch / case 語(yǔ)句和if語(yǔ)句相同,switch-case通過(guò)程序員設(shè)立的在不同條件卜執(zhí)行的代碼控制程序的 流程。特別地,switch語(yǔ)句將變量值和case語(yǔ)句中設(shè)圧的值進(jìn)行比較。當(dāng)一個(gè)case語(yǔ)句中 的設(shè)左值與變量值相同時(shí),這條case語(yǔ)句將被執(zhí)行。關(guān)鍵字br

19、eak町用于退出switch語(yǔ)句,通常每條case語(yǔ)句都以break結(jié)尾。如果沒(méi)有 break語(yǔ)句,switch語(yǔ)句將會(huì)一直執(zhí)行接卜來(lái)的語(yǔ)句(一直向下)直到遇見(jiàn)一個(gè)break,或 者直到switch語(yǔ)句結(jié)尾。例子switch (var) case 1:當(dāng)var等于1時(shí),執(zhí)行一些語(yǔ)句break;case 2當(dāng)var等于2時(shí),執(zhí)行一些語(yǔ)句break;default:如果沒(méi)有任何匹配,執(zhí)行default/default可有可不有語(yǔ)法switch (var) case label:聲明break;case label:聲明8/15break;default:聲明參數(shù)var:用于與下而的case中的標(biāo)簽

20、進(jìn)行比較的變量值label:與變量進(jìn)行比較的值2. 5 whilewhile循環(huán)描述while循環(huán)會(huì)無(wú)限的循環(huán),直到括號(hào)內(nèi)的判斷語(yǔ)句變?yōu)榧佟1仨氁心芨淖兣袛嗾Z(yǔ)句的 東西,要不然while循環(huán)將永遠(yuǎn)不會(huì)結(jié)束。這在您的代碼表現(xiàn)為一個(gè)遞增的變量,或一個(gè) 外部條件,如傳感器的返回值。語(yǔ)法while(表達(dá))語(yǔ)句參數(shù)表達(dá):為真或?yàn)榧俚囊粋€(gè)計(jì)算結(jié)果例子var = 0;whilefvar 200)重復(fù)一件事200遍var+2. 6 do. whiledo-while循環(huán)與while循環(huán)運(yùn)行的方式是相近的,不過(guò)它的條件判斷是在每個(gè)循環(huán)的 最后,所以這個(gè)語(yǔ)句至少會(huì)被運(yùn)行一次,然后才被結(jié)束。do語(yǔ)句while (

21、測(cè)試條件);例子dodelay (50); 等待傳感器穩(wěn)定X = readSensors (); 檢查傳感器取值Jwhlle (X100 ); 當(dāng)x小于100時(shí),繼續(xù)運(yùn)行2. 7 breakbreak用于退出do, for. while循環(huán),能繞過(guò)一般的判斷條件。它也能夠用于退出 switch 語(yǔ)句 例子for (x = 0; x threshold/ 超出探測(cè)范圍x = 0;break;delay(50);2. 8 continuecontinue語(yǔ)句跳過(guò)當(dāng)前循環(huán)中剩余的迭代部分(do, for或while )。它通過(guò)檢査循環(huán) 條件表達(dá)式,并繼續(xù)進(jìn)行任何后續(xù)迭代。例子for (x = 0;

22、x 40& x 400) return 1;elsereturn 0;return關(guān)鍵字可以很方便的測(cè)試一段代碼,而無(wú)需“comment out(注釋掉廠 大段的可 能存在bug的代碼。void loop()寫(xiě)入漂亮的代碼來(lái)測(cè)試這里。retur n;剩下的功能異常的程序/return后的代碼永遠(yuǎn)不會(huì)被執(zhí)行2.10 goto程序?qū)?huì)從程序中已有的標(biāo)記點(diǎn)開(kāi)始運(yùn)行10/15語(yǔ)法label:goto label; 從label處開(kāi)始運(yùn)行提示不要在C語(yǔ)言中使用goto編程,某些C編程作者認(rèn)為goto語(yǔ)句永遠(yuǎn)是不必要的,但 用得好,它可以簡(jiǎn)化某些特定的程序。許多程序員不同意使用goto的原因是,通過(guò)亳無(wú)

23、巧制地使用goto語(yǔ)句,很容易創(chuàng)建一個(gè)程序,這種程序擁有不確龍的運(yùn)行流程,因而無(wú)法 進(jìn)行調(diào)試。的確在有的實(shí)例中g(shù)oto語(yǔ)句可以派上用場(chǎng),并簡(jiǎn)化代碼。例如在一左的條件用if語(yǔ)句 來(lái)跳岀高度嵌入的for循環(huán)。例子for(byte r = 0; r -1; g-)for(byte b = 0; b 250)goto bailout;更多的語(yǔ)句bailout:三. 擴(kuò)展語(yǔ)法3.1;(分號(hào))用于表示一句代碼的結(jié)朿。例子int a = 13;提示在每一行忘記使用分號(hào)作為結(jié)尾,將導(dǎo)致一個(gè)編譯錯(cuò)誤。錯(cuò)誤提示可能會(huì)淸晰的指向 缺少分號(hào)的那行,也可能不會(huì)如果彈出一個(gè)令人費(fèi)解或看似不合邏輯的編譯器錯(cuò)誤,第 一件事就

24、是在錯(cuò)誤附近檢查是否缺少分號(hào)。3.2(花括號(hào))大括號(hào)(也稱為“括號(hào)”或大括號(hào)”)是c編程語(yǔ)言中的一個(gè)重要組成部分。它們 被用來(lái)區(qū)分幾個(gè)不同的結(jié)構(gòu),下而列出的,有時(shí)可能使初學(xué)者混亂。左大括號(hào)“V必須與一個(gè)右大括號(hào)“”形成閉合。這是一個(gè)常常被稱為括號(hào)平衡的 條件。在Arduino IDE (集成開(kāi)發(fā)環(huán)境)中有一個(gè)方便的功能來(lái)檢査大括號(hào)是否平衡。只需 選擇一個(gè)括號(hào),甚至單擊緊接括號(hào)的插入點(diǎn),就能知道這個(gè)括號(hào)的“伴侶括號(hào)”。目前此功能稍微有些錯(cuò)誤,因?yàn)镮DE會(huì)經(jīng)常會(huì)認(rèn)為在注釋中的括號(hào)是不正確的。對(duì)于初學(xué)者,以及由BASIC語(yǔ)言轉(zhuǎn)向?qū)W習(xí)C語(yǔ)言的程序員,經(jīng)常不淸楚如何使用括 號(hào)。畢竟,大括號(hào)還會(huì)在M re

25、turn函數(shù)”、“endif條件句”以及“l(fā)oop函數(shù)”中被使用 到。由于大括號(hào)被用在不同的地方,這有一種很好的編程習(xí)慣以避免錯(cuò)誤:輸入一個(gè)大括 號(hào)后,同時(shí)也輸入另一個(gè)大括號(hào)以達(dá)到平衡。然后在你的括號(hào)之間輸入回車(chē),然后再插入 語(yǔ)句。這樣一來(lái),你的括號(hào)就不會(huì)變得不平衡了。不平衡的括號(hào)常可導(dǎo)致許多錯(cuò)誤,比如令人費(fèi)解的編譯器錯(cuò)誤,有時(shí)很難在一個(gè)程序 找到這個(gè)錯(cuò)誤。由于其不同的用法,括號(hào)也是一個(gè)程序中非常重要的語(yǔ)法,如果括號(hào)發(fā)生 11/15錯(cuò)誤,往往會(huì)極大地影響了程序的意義。大括號(hào)中的主要用途 功能void myfunctio“(datatype argument)statements(s)循環(huán)whi

26、le (boolean expression)statement(s)dostatement(s)while (boolean expression);for (initialisation; termination condition; incrementing expr)statement(s)條件語(yǔ)句if (boolean expression)statement(s)else if (boolean expression)statement(s)elsestateme nt(s)3.3/ (單行注釋?zhuān)〤omments (注釋?zhuān)┳⑨層糜谔嵝炎约夯蛩顺绦蚴侨绾喂ぷ鞯?。它們?huì)被編譯器忽略掉

27、,也不會(huì)傳送給 處理器.所以它們?cè)贏tmega芯片上不占用體積。注釋的唯一作用就是使你自己理解或幫 你回憶你的程序是怎么工作的或提醒他人你的程序是如何工作的。編寫(xiě)注釋有兩種寫(xiě)法: 例子x = 5; 這是一條注釋斜杠后面本行內(nèi)的所有東西是注釋/*這是多行注釋用于注釋一段代碼if(gwb =0) 在多行注釋內(nèi)可使用單行注釋x = 3;/*但不允許使用新的多行注釋這是無(wú)效的/別忘了注釋的結(jié)尾符號(hào)它們是成對(duì)出現(xiàn)的!7小提示當(dāng)測(cè)試代碼的時(shí)候,注釋掉一段可能有問(wèn)題的代碼是非常有效的方法。這能使這段代 碼成為注釋而保留在程序中,而編譯器能忽略它們。這個(gè)方法用于尋找問(wèn)題代碼或當(dāng)編譯 器提示岀錯(cuò)或錯(cuò)誤很隱蔽時(shí)很

28、有效。12/153.4/* */ (多行注釋?zhuān)〤omments (注釋?zhuān)┳⑨層糜谔嵝炎约夯蛩顺绦蚴侨绾喂ぷ鞯?。它們?huì)被編譯器忽略掉,也不會(huì)傳送給 處理器,所以它們Atmega芯片上不占用體積。注釋的唯一作用就是使你自己理解或幫 你回憶你的程序是怎么工作的或提醒他人你的程序是如何工作的。編寫(xiě)注釋有兩種寫(xiě)法: 例子x = 5; 這是一條注釋斜杠后而本行內(nèi)的所有東西是注釋嚴(yán)這是多行注釋用于注釋一段代碼if(gwb = 0) 在多行注釋內(nèi)可使用單行注釋x = 3;/*但不允許使用新的多行注釋這是無(wú)效的/別忘了注釋的結(jié)尾符號(hào)它們是成對(duì)出現(xiàn)的!7小提示當(dāng)測(cè)試代碼的時(shí)候,注釋掉一段可能有問(wèn)題的代碼是非常有

29、效的方法。這能使這段代 碼成為注釋而保留在程序中,而編譯器能忽略它們。這個(gè)方法用于尋找問(wèn)題代碼或當(dāng)編譯 器提示出錯(cuò)或錯(cuò)誤很隱蔽時(shí)很有效。3.5#define#define是一個(gè)很有用的C語(yǔ)法,它允許程序員在程序編譯之前給常量命名。在 Arduino中,上義的常量不會(huì)占用芯片上的任何程序內(nèi)存空間。在編譯時(shí)編譯器會(huì)用事先上 義的值來(lái)取代這些常量。然而這樣做會(huì)產(chǎn)生一些副作用,例如,一個(gè)已被左義的常量名已經(jīng)包含在了其他常量 名或者變量需中。在這種情況下,文本將被#defined 義的數(shù)字或文本所取代。通常情況下,優(yōu)先考慮使用const關(guān)鍵字替代#define來(lái)左義常量。Arduino擁有和C相同的語(yǔ)法

30、規(guī)范。 語(yǔ)法#define常量名常量值注意,#是必須的。例子#define ledPin 3在編譯時(shí),編譯器將使用數(shù)值3取代任何用到ledPin的地方。 提示在#define聲明后不能有分號(hào)。如果存在分號(hào),編譯器會(huì)拋出語(yǔ)義不明的錯(cuò)誤,甚至關(guān) 閉頁(yè)面。#define ledPin 3; /這是一種錯(cuò)誤寫(xiě)法類(lèi)似的,在#define聲明中包含等號(hào)也會(huì)產(chǎn)生語(yǔ)義不明的編譯錯(cuò)誤從而導(dǎo)致關(guān)閉頁(yè)而。#define ledPin = 3 這是一種錯(cuò)誤寫(xiě)法3.6ttincludeinclude用于調(diào)用程序以外的庫(kù)。這使得程序能夠訪問(wèn)大量標(biāo)準(zhǔn)C庫(kù),也能訪問(wèn)用于 arduino的庫(kù)。AVR C庫(kù)(Arduino基于A

31、VR標(biāo)準(zhǔn)語(yǔ)法)語(yǔ)法手冊(cè)請(qǐng)點(diǎn)擊這里。注意 #include和#09伽6樣,不能在結(jié)尾加分號(hào),如果你加了分號(hào)編譯器將會(huì)報(bào)錯(cuò)。例子此例包含了一個(gè)庫(kù),用于將數(shù)據(jù)存放在flash空間內(nèi)而不是ram內(nèi)。這為動(dòng)態(tài)內(nèi)存節(jié) 約了空間,大型表格查表更容易實(shí)現(xiàn)。#include prog_uintl6_t myConstants PROGMEM = 0, 21140z 702 , 9128, 0, 25764, 8456, 0O0Q0O0Q29810,8968,29762,29762,4500;四、算數(shù)運(yùn)算符4.1=(賦值運(yùn)算符)二賦值運(yùn)算符(單等號(hào))13/15賦值運(yùn)算符(單等號(hào))將等號(hào)右邊的數(shù)值賦值給等號(hào)左邊的變

32、量在c語(yǔ)言中,單等號(hào)被稱為賦值運(yùn)算符,它與數(shù)學(xué)上的等號(hào)含義不同,賦值運(yùn)算符告 訴單片機(jī),將等號(hào)的右邊的數(shù)值或計(jì)算表達(dá)式的結(jié)果,存儲(chǔ)在等號(hào)左邊的變量中。 例子int sensVal; 聲明一個(gè)名為sensVal的整型變量senVal = analogRead (0); 將模擬引腳0的輸入電壓存儲(chǔ)在SensVal變雖:中 編程技巧要確保賦值運(yùn)算符(二符號(hào))左側(cè)的變量能夠儲(chǔ)存右邊的數(shù)值匚如果沒(méi)有大到足以容納 右邊的值,存儲(chǔ)在變量中的值將會(huì)發(fā)生錯(cuò)誤。不要混淆賦值運(yùn)算符(單等號(hào))與比較運(yùn)算符=(雙等號(hào)),認(rèn)為這兩個(gè)表達(dá)式 是相等的。4.2+ (加)加減乘除描述這些運(yùn)算符返回兩個(gè)操作數(shù)的和,差,乘積,商。這些運(yùn)算是根據(jù)操作數(shù)的數(shù)據(jù)類(lèi)型來(lái)計(jì) 算的,比如9和4都是int類(lèi)型,所以9 / 4結(jié)果是2這也就代表如果運(yùn)算結(jié)果比數(shù)據(jù)類(lèi)型所能 容納的范囤要大的話,就會(huì)出現(xiàn)溢出(例如1加上一個(gè)整數(shù)int類(lèi)型32,767結(jié)果變成 32,768).如果操作數(shù)是不同類(lèi)型的,結(jié)果是”更大”的那種數(shù)據(jù)類(lèi)型。如果操作數(shù)中的英中 一個(gè)是float類(lèi)型或者double類(lèi)型,就變成了浮點(diǎn)數(shù)運(yùn)算。例子y = y + 3;x = x - 7;i = j * 6;r = r/5;Syn taxresult = valuel + value2; result = valuel value2;r

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論