Arduino參考手冊中文版_第1頁
Arduino參考手冊中文版_第2頁
Arduino參考手冊中文版_第3頁
Arduino參考手冊中文版_第4頁
Arduino參考手冊中文版_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、Arduino編程參考手冊程序結(jié)構(gòu) 4限制語句 4if 4if.else 4for 4switch case 4while 5do.while 5break 5continue 5return 5goto 5相關(guān)語法 5分號 5大括號 5注釋 5define 5include 5算術(shù)運(yùn)算符 5賦值 5加,減,乘,除 5取模 5比擬運(yùn)算符 5if條件and =,!=, <, > 比擬運(yùn)算符 5布爾運(yùn)算符 5指針運(yùn)算符 6位運(yùn)算 6位與 6位或 6位異或 7位非 7左移、右移 7復(fù)合運(yùn)算符 8自加+ 8自減- 8復(fù)合力日+= 8復(fù)合減-= 8復(fù)合乘*= 8復(fù)合除/= 8復(fù)合與&

2、= 8復(fù)合或|= 8變量 8常量 8宏定義 8整型常量 8浮點(diǎn)數(shù)常量 9數(shù)據(jù)類型 9void 9boolean 10char 10unsigned char 10byte 10int 10unsigned int 10word 10long 10unsigned long 10float 10double 10string 10String(c+) 10array 10數(shù)據(jù)類型轉(zhuǎn)換 10char() 10byte() 10int() 10word() 10long() 10float() 10變量作用域&修飾符 10變量作用域 10static ( 靜態(tài)變量) 11volatile (

3、 易變變量) 11const ( 不可改變變量) 11輔助工具 11sizeof() (sizeof 運(yùn)算符) 11ASCII 碼表 11根本函數(shù) 12數(shù)字I/O 12pinMode() 12digitalWrite() 12digitalRead() 13模擬I/O 13analogReference() 13analogRead() 14analogWrite() 14高級I/O 14shiftOut() 14pulseIn() 14時間 15millis() 15delay(ms) 16delayMicroseconds(us) 16數(shù)學(xué)庫 16min() 16max() 16abs()

4、 16constrain() 16map() 16pow() 17sqrt() 17三角函數(shù) 17sin(),cos(),tan() 17隨機(jī)數(shù) 17randomSeed() 17random() 17位操作 18設(shè)置中斷函數(shù) 18a 18achInterrupt() 18detachInterrupt() 19interrupts() 19noInterrupts() 20串口通訊 20begin() 20available() 20read() 20flush() 20print() 20println() 23write() 23peak() 24serialEvent() 25程序結(jié)構(gòu)

5、(本節(jié)直譯自Arduino官網(wǎng)最新Reference)在Arduino中,標(biāo)準(zhǔn)的程序入口 main函數(shù)在內(nèi)部被定義,用戶只需要關(guān)心以下兩個函數(shù):setup()當(dāng)Arduino板起動時setup()函數(shù)會被調(diào)用.用它來初始化變量,引腳模式,開始使用某個庫,等等.該函數(shù)在Arduino 板的每次上電和復(fù)位時只運(yùn)行一次.loop()在創(chuàng)立setup函數(shù),該函數(shù)初始化和設(shè)置初始值,loop()函數(shù)所做事的正如其名,連續(xù)循環(huán),允許你的程序改變狀態(tài)和 響應(yīng)事件.可以用它來實時限制 arduino板.例如:int buIIIIIIonPin = 3;iiiiiiiiIvoid setup()II<II

6、III _ ,(9600); .else與根本的if語句相比,由于允許多個測試組合在一起,if/else 可以使用更多的限制流.例如,可以測試一個模擬量輸 入,如果輸入值小于500,那么采取一個動作,而如果輸入值大于或等于 500,那么采取另一個動作.代碼看起來像是這樣: if (pinFiveInput < 500) IIIII.case通過允許程序員根據(jù)不同的條件指定不同的應(yīng)被執(zhí)行的代碼來限制程序流.特別地,一個switch語句對一個變量的值與case語句中指定的值進(jìn)行比擬.當(dāng)一個 case語句被發(fā)現(xiàn)其值等于該變量的值.就會運(yùn)行這個case語句下的代碼.break關(guān)鍵字將中止并跳出s

7、witch語句段,常常用于每個case語句的最后面.如果沒有break語句,switch語句將繼續(xù)執(zhí)行下面的表達(dá)式(“持續(xù)下降)直到遇到break,或者是到達(dá)switch語句的末尾.例如:switch (var) (I r jicase 1:.whiledo循環(huán)do循環(huán)與while循環(huán)使用相同方式工作,不同的是條件是在循環(huán)的末尾被測試的,所以do循環(huán)總是至少會運(yùn)行一次. MM MM KW MLH MM M MW KH MM Mt* _doILiI(.else的分支限制結(jié)構(gòu)的一局部.它們可用于if語句中的條件&& (邏輯與)只有在兩個操作數(shù)都為真時才返回真,例如:if (digi

8、talRead(2) = HIGH && digitalRead(3) = HIGH) (. !III«:i:IiIi只在兩個輸入都為高時返回真|(邏輯或)任意一個為真時返回真,例如:if (x > 0 | y > 0) (x或y任意一個大于0時返回真!非當(dāng)操作數(shù)為假時返回真,例如:if (!x) (假設(shè)x為假返回真即如果x等于0曰口保證你沒有把布爾與運(yùn)算符,&& 兩個與符號錯認(rèn)為按位與運(yùn)算符 & 單個與符號.它們是完全不同的概念.同樣,不要混淆布爾或運(yùn)算符| 雙豎杠與按位或運(yùn)算符| 單豎杠.按位取反 波浪號看起來與布爾非!有很大不

9、同感慨號或程序員口中的“棒,但是你仍然必須保證在什么地方 用哪一個.例如if (a >= 10 && a <= 20)(在a和b的16位的每一位將使用按位與處理.且所有16位結(jié)果存入C中,以二進(jìn)制存入的結(jié)果值01000100,即十進(jìn)制的68.按位與的其中一個最常用的用途是從一個整型數(shù)中選擇特定的位,常被稱為掩碼屏蔽.看如下例如:位或按位或| 在C+井按位或運(yùn)算符是垂直的條桿符號,|.就像&運(yùn)算符,|獨(dú)立地計算它周圍的兩個整型表達(dá)式的每一位.當(dāng)然 它所做的是不同的操作 "兩個輸入位其中一個或都是1按位或?qū)⒌玫?,否那么為0.換句話說:0 0 1 1

10、operandlIIli0 1 0 1 operand20 1 1 1 (operand1 | operand2) - returned result這是一個使用一小斷C+玳碼描述的按位或運(yùn)算的例子:int a = 92;I按位與和按位或的一個共同的工作是在端口上進(jìn)行程序員稱之為讀-改-寫的操作.在微限制器中,每個端口是一個 8位數(shù)字,每一位表示一個引腳的狀態(tài).寫一個端口可以同時限制所有的引腳.PORT溟內(nèi)建的參照數(shù)字口 0, 1, 2, 3, 4, 5, 6, 7的輸出狀態(tài)的常量.如果一個比特位是1,那么該引腳置高.引腳 總是需要用pinMode指令設(shè)置為輸出模式.所以如果我們寫入PORTD

11、 = B000001;我們就會讓引腳2, 3和7輸出高.一個小小的問題是,我們同時也改變了某些引腳的0, 1狀態(tài).這用于 Arduino與串口通訊,所以我們可能會干擾串口通訊.我們的程序規(guī)那么是:僅僅獲取和去除我們想限制的與相應(yīng)引腳對應(yīng)的位使用按位與.合并要修改的PORT值與所限制的引腳的新值使用按位或.int i;.LI1 << 8 = 256il1cii1 << 9 = 5II1 << 10 = 1024當(dāng)把x右移y位,x的最高位為1,該行為依賴于x確實切的數(shù)據(jù)類型.如果x的類型是int,最高位為符號位,決定x 是不是負(fù)數(shù),正如我們在上面已經(jīng)討論過的.在

12、這種情況下,符號位會復(fù)制到較低的位:int x = -16;復(fù)合運(yùn)算符白加+ +i+; PI.II:#define HALF_PIIII二分之一 PIIIVjiIii #define TWO_PI85一II二倍PI:ri#define DEG_TO_RADiiI9If弧度轉(zhuǎn)角度iii #define RAD_TO_DEG1I*I角度轉(zhuǎn)弧度II整型常量整數(shù)常量整數(shù)常量是直接在程序中使用的數(shù)字,如.默認(rèn)情況下,這些數(shù)字被視為int ,但你可以通過U和L修飾符進(jìn)行更多的限制見下文.通常情況下,整數(shù)常量 默認(rèn)為十進(jìn)制,但可以加上特殊前綴表示為其他進(jìn)制.進(jìn)制例子 格式 備注iIIIII10 十進(jìn)制無I&

13、#171;rfi2 二進(jìn)制B:I0Ii前綴'B'只適用于8位的值0到255字符0-1有效fIII1 八進(jìn)制0173前綴 0字符0-7有效IIIII:16十六進(jìn)制0x7B前綴 0x 字符0-9 , A-F, A-F有效II !IIIIII小數(shù)是十進(jìn)制數(shù).這是數(shù)學(xué)常識.如果一個數(shù)沒有特定的前綴,那么默認(rèn)為十進(jìn)制.二進(jìn)制以2為基底,只有數(shù)字.和1是有效的.例如:101 05;浮點(diǎn)數(shù)可以用科學(xué)記數(shù)法表示.E'和'e'都可以作為有效的指數(shù)標(biāo)志.落點(diǎn)藪簸轉(zhuǎn)-展方1勒茹廠IIIII10I* 10A5I,III4000:r:r67E-IiI* 10A-iIII II數(shù)據(jù)

14、類型voidvoid只用在函數(shù)聲明中.它表示該函數(shù)將不會被返回任何數(shù)據(jù)到它被調(diào)用的函數(shù)中, 例子-IIIvoid loop()boolean布爾一個布爾變量擁有兩個值,true或false.(每個布爾變量占用一個字節(jié)的內(nèi)存.) 例子廠 _ 一 = - int LEDpin = 5;7;InII語法float var = val;var您的float型變量名稱val 分配給該變量的值例如代碼I int x;Irint y;float z;IILIIIIIIIfx = 1;j,y = x / 2;.:iifIvoid loop()IfIfLIint i;.for (int j = 0; j <

15、;100; j+)(x = pi * 2;78 N110n15147/79O111o16111E48080P112p117jl49181Q113q11850282R114r119i1ri51383S115si|20111i52484T116t1II21iir53585U117uiii22iiii54686V118vii2355787W119w241156888X120x25111157989Y121y261:5890Z122z27i59;91123(:128L i60<92124|1i12961=9312530 62>94人126II31 63?95_127根本函數(shù)本節(jié)由柴樹杉譯整

16、理數(shù)字I/OpinMode()void pinMode (uint8_t pin, uint8_t mode)設(shè)置引腳模式配置引腳為輸出或輸出模式參數(shù):pin引腳編號mode: INPUT, OUTPUT,或 INPUT_PULLUP.例子:int ledPin =digitalWrite()void digitalWrite (uint8_t pin, uint8_t value)寫數(shù)字引腳寫數(shù)字引腳,對應(yīng)引腳的上下電平.在寫引腳之前,需要將引腳設(shè)置為OUTPUT式.參數(shù):pin引腳編號value HIGH 或 LOW用法:int ledPin =digitalRead()int digit

17、alRead (uint8_t pin)讀數(shù)字引腳讀數(shù)字引腳,返回引腳的上下電平.在讀引腳之前,需要將引腳設(shè)置為INPUT模式.參數(shù):pin引腳編號返回:模擬I/O模擬HIGH或 LOWanalogReference()void analogReference (uint8_t type)配置參考電壓配置模式引腳的參考電壓.函數(shù)analogRead在讀取模擬值之后,將根據(jù)參考電壓將 模擬值轉(zhuǎn)換到0,10區(qū)間.有以下類型:DEFAULT :默認(rèn)5V. INTERNAL:低功耗模式.ATmega168和ATmega對應(yīng)到.EXTERNAL:擴(kuò)展模式.通過AREFI腳獲取參考電壓.參數(shù):type 參

18、考類型(DEFAULT/INTERNAL/EXTERNAL)analogRead()讀模擬引腳讀模擬引腳,返回0-10之間的值.每讀一次需要花i微妙的時間.參數(shù):pin引腳編號返回:0到10之間的值例子:int analogPin = 3;可以用來限制LED的亮度,或者限制電機(jī)的轉(zhuǎn)速.在執(zhí)行該操作后,應(yīng)該等待一定時間后才能對該引腳進(jìn)行下一次的讀或?qū)懖僮?PWM的頻率大約為490Hz.在一些基于ATmega168新的Arduino限制板(如Mini和BT)中,該函數(shù)支持以下引腳:3, 5, 6, 9, 10,.在基于ATmega的型號中支持9, 10,引腳.例子:int ledPin = 9;其

19、中dataPin為連接DS的引腳號,clockPin 為連接SH_CP勺引腳號,bitOrder 為設(shè)置數(shù)據(jù)位移順序,分別為高位先入MSBFIRS或者低位先入LSBFIRST.參數(shù):dataPin數(shù)據(jù)引腳clockPin 時鐘引腳bitOrder 移位順序(MSBFIRST 或 LSBFIRST)val數(shù)據(jù)如果是HIGH,函數(shù)將先等引腳變?yōu)楦唠娖?然后開始計時,一直到變?yōu)榈碗娖綖橹?返回脈沖持續(xù)的時間長短,單 位為毫秒.如果超時還沒有 讀到的話,將返回0.參數(shù):1 pin引腳編號2 state 脈沖狀態(tài)3 timeout超時時間下面的例子演示了統(tǒng)計高電平的繼續(xù)時間int pin = 7;IIu

20、nsigned long duration;I L f «I<IIIIIIIIIvoid setup()IiIfIIII.ipinMode(pin, INPUT);i i rIiii iI i iiIvoid loop():iIiIIIIwiduration = pulseIn(pin, HIGH);IIIII時間millis()unsigned long millis (void)毫秒時間獲取機(jī)器運(yùn)行的時間長度,單位毫秒.系統(tǒng)最長的記錄時間為9小時分,如果超出時間將從0開始.警生曰口 :時間為unsigned long 類型,如果用int保存時間將得到錯誤結(jié)果delay(ms

21、)void delay (unsigned long ms)延時(毫秒)延時,單位毫秒(1秒有1000毫秒).警去,曰口 -參數(shù)為unsigned long,因此在延時參數(shù)超過767(int型最大值)時,需要用"UL"后綴表示為無符號 長整型,例如:delay(60000UL);.同樣在參數(shù)表達(dá)式,切表達(dá)式中有 int 類型時,需要強(qiáng)制轉(zhuǎn)換為 unsigned long 類型,例如:delay(unsigned long)tdelay * 100UL);.一下例子設(shè)置引腳對應(yīng)的LED以1秒頻率閃爍:#define max(a, b) (a)>(b)?(a):(b)最大

22、值取兩者之間最大值.例如:sensVal = max(senVal, 20);例如:一般可以用于將值歸一化到某個區(qū)間sensVal = constrain(sensVal, 10, 150);int ledPin =;如果延時的時間有幾千微妙,那么建議使用delay函數(shù).目前參數(shù)最大支持1638瑚妙(不過以后的版本中可能會變化).以下代碼向第8號引腳發(fā)送脈沖,每次脈沖持續(xù)50微妙的時間.int outPin = 8;例如:sensVal = min(sensVal, 100);max()參數(shù):x要映射的值in_min映射前區(qū)間in_max映射前區(qū)間out_min映射后區(qū)間out_max映射后區(qū)

23、間例如下面的代碼中用 map將模擬量從0,10映射到0,255區(qū)間:隨機(jī)種子的設(shè)置對產(chǎn)生的隨機(jī)序列有影響.參數(shù):seed隨機(jī)種子random()long random (long howbig)生成隨機(jī)數(shù)生成0, howbig-1范圍的隨機(jī)數(shù).參數(shù):howbig最大值long random (long howsmall, long howbig)生成隨機(jī)數(shù)生成howsmall, howbig-1 范圍的隨機(jī)數(shù).參數(shù):howsmall最小值howbig最大值位操作位操作#define lowByte(w) (w) & 0xff)外部中斷有0和1兩種,一般對應(yīng)2號和3號數(shù)字引腳.參數(shù):in

24、terrupt 中斷類型,0或1fun對應(yīng)函數(shù)mode觸發(fā)方式.有以下幾種:LOW氐電平觸發(fā)中斷CHANG皮化時觸發(fā)中斷RISING低電平變?yōu)楦唠娖接|發(fā)中斷FALLING高電平變?yōu)榈碗娖接|發(fā)中斷注解:在中斷函數(shù)中delay函數(shù)不能使用,millis始終返回進(jìn)入中斷前的值.讀串口數(shù)據(jù)的話,可能會喪失.中斷函數(shù)中使用的變量需要定義為volatile 類型.下面的例子如果通過外部引腳觸發(fā)中斷函數(shù),然后限制LED的閃爍.int pin =i;Iiivolatile int state = LOW;void setup()III(IIIIIpinMode(pin, OUTPUT);IIII.IIarac

25、hlnterrupt(0, blink, CHANGE);nL)Ivoid loop()EdigitalWrite(pin, state);II!:I) void blink()istate = !state;detachInterrupt()void detachInterrupt (uint8_t interruptNum)IH I 1取消中斷取消指定類型的中斷.參數(shù):interrupt中斷的類型.interrupts()#define interrupts() sei() i ; I i I I I I開中斷例子:void setup() ()void loop() i rI LI In

26、oInterrupts(); I I II456)發(fā)送"1.I I "i, I f I i r('N') 發(fā)送"N"I II r("Hello world.") 發(fā)送"Hello world."Ij, i I f i,可選的第二個參數(shù)用于指定數(shù)據(jù)的格式.允許的值為: BIN (binary二進(jìn)制),OCT (octal八進(jìn)制),DEC (decimal十進(jìn) 制),HEX (hexadecimal十六進(jìn)制).對于浮點(diǎn)數(shù),該參數(shù)指定小數(shù)點(diǎn)的位數(shù).例如:(78, BIN) gives "100

27、I I I I 0" r i(78, OCT) gives "6"II I I(78, DEC) gives "78" r i(78, HEX) gives "4E"(1.I I I456, 0) gives "1"I I I(1.I I I I456, 2) gives "1.I I I I "II456, 4) gives "1.46"iIIiiIIi你可以用F()把待發(fā)送的字符串包裝到flash存儲器.例如:-(F下Hello 'Wo'rld&

28、#39;)"'III要發(fā)送單個字節(jié)數(shù)據(jù),請使用().語法:(val)(val, format) I參數(shù):val:要發(fā)送的數(shù)據(jù)(任何數(shù)據(jù)類型)format:指定數(shù)字的基數(shù)(用于整型數(shù))或者小數(shù)的位數(shù)(用于浮點(diǎn)數(shù)).返回值:<>size_t (long): print()返回發(fā)送的字節(jié)數(shù)(可丟棄該返回值).例如:/*IUses a FOR loop for data and prints a number in various formats.*/IIIIIint x = 0; / variableIri,Iii<iIvoid setup() I(9600);/

29、 open the serial port at 9600 bps:I rI<IIIvoid loop() (il i I i I/ print labelsI f f("NO FORMAT"); / prints a labelI I("t");/ prints a tabI I. I I I I i I I I |("DEC"); I I I I("t");i i f I I I I I I i | I i I("HEX");r("t"); i I ii i f I

30、 l i i l i i I("OCT");f jl I("t");r i I i i I i r |("BIN");I I I I("t");i. i f Ii i I i i < i i I i i Ifor(x=0; x< 64; x+) / only part of the ASCII chart, change to suit r i i L I I ! I I/ print it out in many formats:I I I I(x);/ print as an ASCII-encod

31、ed decimal - same as "DEC"r ji I I("t"); / prints a tab(x, DEC); / print as an ASCII-encoded decimal("t"); / prints a tabI.IIIIIIII f r(x, HEX); / print as an ASCII-encoded hexadecimalr("t"); / prints a tabII.IIIIIIiIII i(x, OCT); / print as an ASCII-encoded octalIIII("t"); / prints a tabIIfIIIIIIII IIIIIII(x, BIN); / print as an ASCII-encoded binaryii/then

溫馨提示

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

最新文檔

評論

0/150

提交評論