創(chuàng)客教育5-arduino編程語(yǔ)言基礎(chǔ)_第1頁(yè)
創(chuàng)客教育5-arduino編程語(yǔ)言基礎(chǔ)_第2頁(yè)
創(chuàng)客教育5-arduino編程語(yǔ)言基礎(chǔ)_第3頁(yè)
創(chuàng)客教育5-arduino編程語(yǔ)言基礎(chǔ)_第4頁(yè)
創(chuàng)客教育5-arduino編程語(yǔ)言基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩10頁(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、Arduino 程序的總體結(jié)構(gòu)Arduino 程序基本結(jié)構(gòu)由setup() 和loop() 兩個(gè)函數(shù)組成:Arduino 控制器通電或復(fù)位后,即會(huì)開(kāi)始執(zhí)行 setup() 函數(shù)中的程序,該部分只會(huì)執(zhí)行一次。通常會(huì)在 setup() 函數(shù)中完成 Arduino 的初始化設(shè)置,如配置 I/O 口狀態(tài),初始化串口等操作。在 setup() 函數(shù)中的程序執(zhí)行完后,Arduino 會(huì)接著執(zhí)行 loop() 函數(shù)中的程序。而loop()函數(shù)是一個(gè)死循環(huán),其中的程序會(huì)不斷的重復(fù)運(yùn)行。通常loop() 函數(shù)中完成程序的主要功能。會(huì)在loop()函數(shù)的功能相當(dāng)于 MSC-51 語(yǔ)言里 main()函數(shù)中的 wh

2、ile(1)死循環(huán)。 Arduino 語(yǔ)言中不需要編寫(xiě) main()函數(shù),它已經(jīng)通過(guò)上述兩個(gè)函數(shù)封裝了,對(duì)程序員是不可見(jiàn)的。數(shù)據(jù)類型整數(shù)與字符類型類型整數(shù)是數(shù)值的主要類型。類型的長(zhǎng)度在 8 位 Arduino 板中為 16 位(2字節(jié)),表示范圍為-32,768 至 32,767(-215 到 215-1)。在 16 位 Arduino 板(如 Due)中,類型的長(zhǎng)度為 32 位(4 字節(jié))。short 類型short 類型同類型一樣,長(zhǎng)度為 16 位(2 字節(jié))。short 類型在所有 Arduino板(8 位及 16 位)中的長(zhǎng)度都是 16 位(2 字節(jié))。counter = 32 ;vo

3、id setup()/ 在這里加入你的 setup 代碼,它只會(huì)運(yùn)行一次:void loop()/ 在這里加入你的 loop 代碼,它會(huì)不斷重復(fù)運(yùn)行:unsigned類型無(wú)符號(hào)整數(shù),長(zhǎng)度與相同,在 8 位 Arduino 板中為 16 位(2 字節(jié)),在16 位 Arduino 板(如 Due、Zero)中,類型的長(zhǎng)度為 32 位(4 字節(jié))。由于為無(wú)符號(hào)數(shù),故 16 位的unsigned類型表示范圍為 0 到 65,535(216-1)。long 類型長(zhǎng)整型,長(zhǎng)度為 32 位(4 字節(jié)),從-2,147,483,648 到 2,147,483,647,約20億的范圍。unsigned lon

4、g 類型無(wú)符號(hào)長(zhǎng)整型,長(zhǎng)度與 long 類型相同,32 位(4 字節(jié)),由于是無(wú)符號(hào)數(shù),表示范圍為 0 到 4,294,967,295 (232 1),約 42 億。這產(chǎn)生-32,768 至 32,767 的范圍(最小值為-2 15,最大值為(2 15)-1)。char 類型字符類型,長(zhǎng)度為 1 個(gè)字節(jié),本質(zhì)為 8 位整型,表示范圍為-128 到 127,可被賦值為字符或上述范圍內(nèi)的整數(shù)。unsigned char 類型無(wú)符號(hào)字符類型,長(zhǎng)度為 1 個(gè)字節(jié),相當(dāng)于 8 位無(wú)符號(hào)數(shù),表示范圍為 0 到255,可被賦值為字符或上述范圍內(nèi)的整數(shù)。雖然 Arduino 所采用的單片機(jī)RAM 容量高于 M

5、CS-51 單片機(jī),但相比Char chr_a = a ;Char chr_c = 97 ;unsigned Long velocity = 101006 ;long velocity = 102346 ;unsignedcounter = 60 ;short counter = 32 ;PC 仍然是非常有限的,因此,依然要遵照單片機(jī)程序設(shè)計(jì)中對(duì)變量的使用“能省則省”的原則,根據(jù)變量可能的取值范圍合理選擇變量類型。浮點(diǎn)類型float 類型浮點(diǎn)數(shù)是指具有小數(shù)點(diǎn)的數(shù)字,浮點(diǎn)數(shù)通常用于近似模擬值和連續(xù)值,因?yàn)樗鼈兊姆直媛矢哂谡麛?shù)。Arduino 中的浮點(diǎn)數(shù)長(zhǎng)度為 32 位(4 字節(jié)),表示范圍為 3

6、.4028235E + 38 到 3.4028235E - 38。double 類型在 16 位 Arduino 板上,double 與float 類型的長(zhǎng)度相同,因此表示范圍和精度也完全相同。在 32 位 Arduino 板(如 Due)上,雙精度長(zhǎng)度為 64 位(8 字節(jié)),精度更高。類型類型C 語(yǔ)言中是沒(méi)有類型的,C 語(yǔ)言使用 0 或NULL 代表“邏輯假”(false),使用非零值代表“邏輯真”(true)。Arduino 里設(shè)置了類型,每個(gè)變量占用 1 字節(jié)的內(nèi)存,取值為 true 或false類型使得邏輯表達(dá)式或代碼更易讀。字節(jié)與字類型byte 類型byte 類型等同于 unsig

7、ned char 類型,長(zhǎng)度為 1 字節(jié),數(shù),表示范圍從 0 到 255。一個(gè) 8 位無(wú)符號(hào)word 類型byte m = 25 ;val = false ;se = true ;double num = 45.352 ;float num = 1.352;與unsigned類型相同。在 8 位 Arduino 板中為 16 位(2 字節(jié)),在 16 位Arduino 板(如 Due、Zero)中,長(zhǎng)度為 32 位(4 字節(jié))。空類型voidvoid 關(guān)鍵字僅用于函數(shù)。它表示該函數(shù)不會(huì)向調(diào)用它的函數(shù)返回任何信息。數(shù)組類型arrayArduino 中數(shù)組的定義與使用與C 語(yǔ)言完全相同。字符串(字

8、符數(shù)組)stringArduino 對(duì)字符串的處理有兩種方式:一是與傳統(tǒng) C 語(yǔ)言完全相同的字符數(shù)組方式,二是String 對(duì)象方式。也可以使用二維數(shù)組的形式來(lái)實(shí)現(xiàn)多行字符串的:char* myStrings=This is string 1, This is string 2, This is string 3,This is string 4, This is string 5,This is string 6;void setup() Serial.begin(9600);void loop()for (i = 0; i 6; i+) Serial.prln(myStringsi); d

9、elay(500);char Str115;char Str28 = a, r, d, u, i, n, o;char Str38 = a, r, d, u, i, n, o, 0;char Str4 = arduino; char Str58 = arduino; char Str615 = arduino;mys6;myPins = 2, 4, 8, 3, 6;mySensVals6 = 2, 4, -8, 3, 2;char message6 = o;word w = 10000 ;常量和變量變量Arduino 的變量命名規(guī)則與C 語(yǔ)言完全相同,變量名只能由字母、數(shù)字和下劃線組成,且只能

10、由字母和下劃線開(kāi)頭。與 C 語(yǔ)言一樣,變量名是大小寫(xiě)敏感的。與C 語(yǔ)言相同,Arduino 的變量按照作用范圍分為全局變量和局部變量,全局變量在所有函數(shù)的外部,所有函數(shù)都可以全局變量的值,局部變量在函數(shù)形參及函數(shù)體內(nèi)部,僅在的函數(shù)體內(nèi)部可以。全局變量在整個(gè)程序運(yùn)行過(guò)程中始終存在,而局部變量在函數(shù)調(diào)用結(jié)束后其所占用的空間就會(huì)被,其值將隨之常量。常量名規(guī)則同變量。按照 C 語(yǔ)言的編程規(guī)約,一般常量名用全大寫(xiě)字母,以便于與變量名區(qū)分。Arduino 有一些內(nèi)置的常量定義:1. HIGH | LOW通常用于表示某個(gè)引腳的高低電平,HIGH 表示,LOW 表示低電平。這對(duì)常量經(jīng)常配合數(shù)字引腳輸入輸出函數(shù)

11、(digitalWrite()、digitalRead())使用。2. INPUT | OUTPUT | INPUT_PULLUP用于表示某個(gè)引腳工作在輸入或輸出模式,INPUT 表示輸入,OUTPUT 表示輸出,INPUT_PULLUP 表示啟用內(nèi)部上拉電阻的輸入。當(dāng)某引腳被設(shè)定為INPUT 后,如果外接到電源的上拉電阻(一般阻值為10K),則按鍵按下后該引腳的輸入值為 LOW,按鍵斷開(kāi)時(shí)該引腳的輸入值為 HIGH,如果接到地的下拉電阻,則相反。如果沒(méi)有外接的上拉或下拉電阻,當(dāng)按鍵斷開(kāi)時(shí),引腳將處于“浮空”狀態(tài),輸入究竟是還是低電平是不確定的。為了避免這種不確定性,可以將該引腳輸入模式設(shè)定為

12、 INPUT_PULLUP,這時(shí)將會(huì)啟用單片機(jī)內(nèi)部的上拉電阻,起到與外接上拉電阻同樣的作用。上述三個(gè)常量與pode()函數(shù)配合使用,綜合舉例如下:ledPin = 13;/將 LED 連接到 13 號(hào)引腳void setup()整型常量浮點(diǎn)常量運(yùn)算符Arduino 的運(yùn)算符類型與用法與C 語(yǔ)言完全相同。類型運(yùn)算符算術(shù)運(yùn)算符=、+、-、*、/、%類型舉例格式純小數(shù).123純小數(shù)可以省略小數(shù)點(diǎn)前的 0普通浮點(diǎn)數(shù)1.234科學(xué)1.23e4、1.23E-4E 或 e 均可數(shù)制舉例格式十進(jìn)制123二進(jìn)制B11010011以“B”開(kāi)頭,八個(gè) 0、1 組成八進(jìn)制0123以“0”開(kāi)頭,數(shù)字范圍為 0-7進(jìn)制0

13、 x123以“0 x”開(kāi)頭,數(shù)字范圍為 0-9,A-F 或a-fledPin = 13; /將 LED 連接到 13 號(hào)引腳 inPin = 7;/將一個(gè)按鍵連接到 7 號(hào)引腳 val = 0;/用于保存按鍵輸入狀態(tài)的變量void setup()pedPin, OUTPUT);/將 ledPin 設(shè)置為輸出狀態(tài)pode(inPin, INPUT);/將 inPin 設(shè)置為輸入狀態(tài)void loop()val = digitalRead(inPin); /將按鍵的狀態(tài)到 val 變量digitalWriedPin, val); /將 val 變量的值輸出到 LEDpedPin, OUTPUT);

14、/將 ledPin 引腳設(shè)置為輸出狀態(tài)void loop()digitalWriedPin, HIGH); /向 ledPin 引腳輸出 delay(1000); /延時(shí) 1000 毫秒 digitalWriedPin, LOW);/向 ledPin 引腳輸出低電平 delay(1000); /延時(shí) 1000 毫秒分支結(jié)構(gòu)Arduino 的分支結(jié)構(gòu)語(yǔ)法與 C 語(yǔ)言完全相同,包括 if、ifelse、switch case三種結(jié)構(gòu)。單分支if 結(jié)構(gòu):雙分支ifelse 結(jié)構(gòu):多分支switch case 結(jié)構(gòu):switch (變量) case 常量 1:/ 若變量的值等于常量,則執(zhí)行break;

15、 / 跳出 switch 結(jié)構(gòu),應(yīng)確保每個(gè) case 分支最后有 break case 常量 2:/ 語(yǔ)句break;default: / 若前面所有常量值均不匹配,則執(zhí)行 default 后面語(yǔ)句/ 語(yǔ)句break;if (表達(dá)式)/ 若表達(dá)式為真,則執(zhí)行內(nèi)語(yǔ)句else/若表達(dá)式為假,則執(zhí)行 else 后面內(nèi)語(yǔ)句if (表達(dá)式)/ 若表達(dá)式為真,則執(zhí)行內(nèi)語(yǔ)句比較運(yùn)算符=、=、!=邏輯運(yùn)算符&、|、!位運(yùn)算符&、|、 8);/ 然后再輸出其低 8 位。注意,不管 data 是幾個(gè)字節(jié),shiftOut()僅能輸出其低 8 位shiftOut(dataPin, clock, MSB, data)

16、;void setup() void loop() / 將引腳 8 上的輸出關(guān)閉noTone(8);/ 在引腳 6 上輸出頻率為 440Hz,持續(xù)時(shí)間 200ms 的tone(6, 440, 200);delay(200);/ 將引腳 6 上的輸出關(guān)閉noTone(6);/ 在引腳 7 上輸出頻率為 494Hz,持續(xù)時(shí)間 500ms 的tone(7, 494, 500);delay(500);/將引腳 7 上的輸出關(guān)閉noTone(7);/ 在引腳 8 上輸出頻率為 523Hz,持續(xù)時(shí)間 300ms 的tone(8, 523, 300);delay(300);下面是一個(gè)完整的示例,依次在 74

17、HC595 的Q0-Q7 引腳上輸出 0-255:pulseIn()該函數(shù)可測(cè)量輸入某引腳的兩次高低電轉(zhuǎn)之間的時(shí)間間隔。例如,當(dāng)某引腳由低電平跳轉(zhuǎn)為時(shí)開(kāi)始計(jì)時(shí)(以微秒為),當(dāng)再次跳轉(zhuǎn)為低電平時(shí)停止計(jì)時(shí),并返回計(jì)時(shí)值??捎?jì)時(shí)的范圍為(10 微秒-3 分鐘),若返回值為 0,則表示沒(méi)有檢測(cè)到第二次跳變。延時(shí)函數(shù)數(shù)學(xué)函數(shù)字符處理函數(shù)中斷處理函數(shù)/*/ Name: shiftOode/ Author : Carlyn Maw,Tom Igoe/ Date: 25 Oct, 2006/ Ver: 1.0/ Notes : Code for using a 74HC595 Shift Register/:

18、 to count from 0 to 255/*/Pin connected to ST CP of 74HC595 latchPin = 8;/Pin connected to SH_CP of 74HC595 clockPin = 12;/Pin connected to DS of 74HC595 dataPin = 11;void setup() /set pins to output because they are addressedhe mainloopp atchPin, OUTPUT); p ode(clockPin, OUTPUT); p ode(dataPin, OUTPUT);void loop() /count u

溫馨提示

  • 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)論