版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Arduino編程參考手冊程序結構 4限制語句 4if 4if.else 4for 4switch case 4while 5do.while 5break 5continue 5return 5goto 5相關語法 5分號 5大括號 5注釋 5define 5include 5算術運算符 5賦值 5加,減,乘,除 5取模 5比擬運算符 5if條件and =,!=, <, > 比擬運算符 5布爾運算符 5指針運算符 6位運算 6位與 6位或 6位異或 7位非 7左移、右移 7復合運算符 8自加+ 8自減- 8復合力日+= 8復合減-= 8復合乘*= 8復合除/= 8復合與&
2、= 8復合或|= 8變量 8常量 8宏定義 8整型常量 8浮點數(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ù)類型轉換 10char() 10byte() 10int() 10word() 10long() 10float() 10變量作用域&修飾符 10變量作用域 10static ( 靜態(tài)變量) 11volatile (
3、 易變變量) 11const ( 不可改變變量) 11輔助工具 11sizeof() (sizeof 運算符) 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ù)學庫 16min() 16max() 16abs()
4、 16constrain() 16map() 16pow() 17sqrt() 17三角函數(shù) 17sin(),cos(),tan() 17隨機數(shù) 17randomSeed() 17random() 17位操作 18設置中斷函數(shù) 18a 18achInterrupt() 18detachInterrupt() 19interrupts() 19noInterrupts() 20串口通訊 20begin() 20available() 20read() 20flush() 20print() 20println() 23write() 23peak() 24serialEvent() 25程序結構
5、(本節(jié)直譯自Arduino官網(wǎng)最新Reference)在Arduino中,標準的程序入口 main函數(shù)在內部被定義,用戶只需要關心以下兩個函數(shù):setup()當Arduino板起動時setup()函數(shù)會被調用.用它來初始化變量,引腳模式,開始使用某個庫,等等.該函數(shù)在Arduino 板的每次上電和復位時只運行一次.loop()在創(chuàng)立setup函數(shù),該函數(shù)初始化和設置初始值,loop()函數(shù)所做事的正如其名,連續(xù)循環(huán),允許你的程序改變狀態(tài)和 響應事件.可以用它來實時限制 arduino板.例如:int buIIIIIIonPin = 3;iiiiiiiiIvoid setup()II<II
6、III _ ,(9600); .else與根本的if語句相比,由于允許多個測試組合在一起,if/else 可以使用更多的限制流.例如,可以測試一個模擬量輸 入,如果輸入值小于500,那么采取一個動作,而如果輸入值大于或等于 500,那么采取另一個動作.代碼看起來像是這樣: if (pinFiveInput < 500) IIIII.case通過允許程序員根據(jù)不同的條件指定不同的應被執(zhí)行的代碼來限制程序流.特別地,一個switch語句對一個變量的值與case語句中指定的值進行比擬.當一個 case語句被發(fā)現(xiàn)其值等于該變量的值.就會運行這個case語句下的代碼.break關鍵字將中止并跳出s
7、witch語句段,常常用于每個case語句的最后面.如果沒有break語句,switch語句將繼續(xù)執(zhí)行下面的表達式(“持續(xù)下降)直到遇到break,或者是到達switch語句的末尾.例如:switch (var) (I r jicase 1:.whiledo循環(huán)do循環(huán)與while循環(huán)使用相同方式工作,不同的是條件是在循環(huán)的末尾被測試的,所以do循環(huán)總是至少會運行一次. MM MM KW MLH MM M MW KH MM Mt* _doILiI(.else的分支限制結構的一局部.它們可用于if語句中的條件&& (邏輯與)只有在兩個操作數(shù)都為真時才返回真,例如:if (digi
8、talRead(2) = HIGH && digitalRead(3) = HIGH) (. !III«:i:IiIi只在兩個輸入都為高時返回真|(邏輯或)任意一個為真時返回真,例如:if (x > 0 | y > 0) (x或y任意一個大于0時返回真!非當操作數(shù)為假時返回真,例如:if (!x) (假設x為假返回真即如果x等于0曰口保證你沒有把布爾與運算符,&& 兩個與符號錯認為按位與運算符 & 單個與符號.它們是完全不同的概念.同樣,不要混淆布爾或運算符| 雙豎杠與按位或運算符| 單豎杠.按位取反 波浪號看起來與布爾非!有很大不
9、同感慨號或程序員口中的“棒,但是你仍然必須保證在什么地方 用哪一個.例如if (a >= 10 && a <= 20)(在a和b的16位的每一位將使用按位與處理.且所有16位結果存入C中,以二進制存入的結果值01000100,即十進制的68.按位與的其中一個最常用的用途是從一個整型數(shù)中選擇特定的位,常被稱為掩碼屏蔽.看如下例如:位或按位或| 在C+井按位或運算符是垂直的條桿符號,|.就像&運算符,|獨立地計算它周圍的兩個整型表達式的每一位.當然 它所做的是不同的操作 "兩個輸入位其中一個或都是1按位或將得到1,否那么為0.換句話說:0 0 1 1
10、operandlIIli0 1 0 1 operand20 1 1 1 (operand1 | operand2) - returned result這是一個使用一小斷C+玳碼描述的按位或運算的例子:int a = 92;I按位與和按位或的一個共同的工作是在端口上進行程序員稱之為讀-改-寫的操作.在微限制器中,每個端口是一個 8位數(shù)字,每一位表示一個引腳的狀態(tài).寫一個端口可以同時限制所有的引腳.PORT溟內建的參照數(shù)字口 0, 1, 2, 3, 4, 5, 6, 7的輸出狀態(tài)的常量.如果一個比特位是1,那么該引腳置高.引腳 總是需要用pinMode指令設置為輸出模式.所以如果我們寫入PORTD
11、 = B000001;我們就會讓引腳2, 3和7輸出高.一個小小的問題是,我們同時也改變了某些引腳的0, 1狀態(tài).這用于 Arduino與串口通訊,所以我們可能會干擾串口通訊.我們的程序規(guī)那么是:僅僅獲取和去除我們想限制的與相應引腳對應的位使用按位與.合并要修改的PORT值與所限制的引腳的新值使用按位或.int i;.LI1 << 8 = 256il1cii1 << 9 = 5II1 << 10 = 1024當把x右移y位,x的最高位為1,該行為依賴于x確實切的數(shù)據(jù)類型.如果x的類型是int,最高位為符號位,決定x 是不是負數(shù),正如我們在上面已經(jīng)討論過的.在
12、這種情況下,符號位會復制到較低的位:int x = -16;復合運算符白加+ +i+; PI.II:#define HALF_PIIII二分之一 PIIIVjiIii #define TWO_PI85一II二倍PI:ri#define DEG_TO_RADiiI9If弧度轉角度iii #define RAD_TO_DEG1I*I角度轉弧度II整型常量整數(shù)常量整數(shù)常量是直接在程序中使用的數(shù)字,如.默認情況下,這些數(shù)字被視為int ,但你可以通過U和L修飾符進行更多的限制見下文.通常情況下,整數(shù)常量 默認為十進制,但可以加上特殊前綴表示為其他進制.進制例子 格式 備注iIIIII10 十進制無I&
13、#171;rfi2 二進制B:I0Ii前綴'B'只適用于8位的值0到255字符0-1有效fIII1 八進制0173前綴 0字符0-7有效IIIII:16十六進制0x7B前綴 0x 字符0-9 , A-F, A-F有效II !IIIIII小數(shù)是十進制數(shù).這是數(shù)學常識.如果一個數(shù)沒有特定的前綴,那么默認為十進制.二進制以2為基底,只有數(shù)字.和1是有效的.例如:101 05;浮點數(shù)可以用科學記數(shù)法表示.E'和'e'都可以作為有效的指數(shù)標志.落點藪簸轉-展方1勒茹廠IIIII10I* 10A5I,III4000:r:r67E-IiI* 10A-iIII II數(shù)據(jù)
14、類型voidvoid只用在函數(shù)聲明中.它表示該函數(shù)將不會被返回任何數(shù)據(jù)到它被調用的函數(shù)中, 例子-IIIvoid loop()boolean布爾一個布爾變量擁有兩個值,true或false.(每個布爾變量占用一個字節(jié)的內存.) 例子廠 _ 一 = - 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ù):pin引腳編號mode: INPUT, OUTPUT,或 INPUT_PULLUP.例子:int ledPin =digitalWrite()void digitalWrite (uint8_t pin, uint8_t value)寫數(shù)字引腳寫數(shù)字引腳,對應引腳的上下電平.在寫引腳之前,需要將引腳設置為OUTPUT式.參數(shù):pin引腳編號value HIGH 或 LOW用法:int ledPin =digitalRead()int digit
17、alRead (uint8_t pin)讀數(shù)字引腳讀數(shù)字引腳,返回引腳的上下電平.在讀引腳之前,需要將引腳設置為INPUT模式.參數(shù):pin引腳編號返回:模擬I/O模擬HIGH或 LOWanalogReference()void analogReference (uint8_t type)配置參考電壓配置模式引腳的參考電壓.函數(shù)analogRead在讀取模擬值之后,將根據(jù)參考電壓將 模擬值轉換到0,10區(qū)間.有以下類型:DEFAULT :默認5V. INTERNAL:低功耗模式.ATmega168和ATmega對應到.EXTERNAL:擴展模式.通過AREFI腳獲取參考電壓.參數(shù):type 參
18、考類型(DEFAULT/INTERNAL/EXTERNAL)analogRead()讀模擬引腳讀模擬引腳,返回0-10之間的值.每讀一次需要花i微妙的時間.參數(shù):pin引腳編號返回:0到10之間的值例子:int analogPin = 3;可以用來限制LED的亮度,或者限制電機的轉速.在執(zhí)行該操作后,應該等待一定時間后才能對該引腳進行下一次的讀或寫操作.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ù)據(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)毫秒時間獲取機器運行的時間長度,單位毫秒.系統(tǒng)最長的記錄時間為9小時分,如果超出時間將從0開始.警生曰口 :時間為unsigned long 類型,如果用int保存時間將得到錯誤結果delay(ms
21、)void delay (unsigned long ms)延時(毫秒)延時,單位毫秒(1秒有1000毫秒).警去,曰口 -參數(shù)為unsigned long,因此在延時參數(shù)超過767(int型最大值)時,需要用"UL"后綴表示為無符號 長整型,例如:delay(60000UL);.同樣在參數(shù)表達式,切表達式中有 int 類型時,需要強制轉換為 unsigned long 類型,例如:delay(unsigned long)tdelay * 100UL);.一下例子設置引腳對應的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ū)間:隨機種子的設置對產生的隨機序列有影響.參數(shù):seed隨機種子random()long random (long howbig)生成隨機數(shù)生成0, howbig-1范圍的隨機數(shù).參數(shù):howbig最大值long random (long howsmall, long howbig)生成隨機數(shù)生成howsmall, howbig-1 范圍的隨機數(shù).參數(shù):howsmall最小值howbig最大值位操作位操作#define lowByte(w) (w) & 0xff)外部中斷有0和1兩種,一般對應2號和3號數(shù)字引腳.參數(shù):in
24、terrupt 中斷類型,0或1fun對應函數(shù)mode觸發(fā)方式.有以下幾種:LOW氐電平觸發(fā)中斷CHANG皮化時觸發(fā)中斷RISING低電平變?yōu)楦唠娖接|發(fā)中斷FALLING高電平變?yōu)榈碗娖接|發(fā)中斷注解:在中斷函數(shù)中delay函數(shù)不能使用,millis始終返回進入中斷前的值.讀串口數(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二進制),OCT (octal八進制),DEC (decimal十進 制),HEX (hexadecimal十六進制).對于浮點數(shù),該參數(shù)指定小數(shù)點的位數(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ù)(用于浮點數(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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版礦區(qū)作業(yè)承包合同版
- 2024芒果園果樹病蟲害防治產品供應與技術服務合同3篇
- 2024煤炭供需長期合作協(xié)議
- 2025年度智能物流設備代理商合作協(xié)議(全新發(fā)布)4篇
- 2024-2030年中國城市地下綜合管廊建設市場現(xiàn)狀研究分析與發(fā)展趨勢預測報告
- 單晶氮化鋁項目商業(yè)計劃書
- 2025年度個人二手房買賣合同房屋租賃權轉讓與限制4篇
- 2025年度個人留置車輛借款合同(二手車市場交易版)3篇
- 2025年環(huán)保項目合作協(xié)議范本(含碳排放權交易)3篇
- 2025年度個人教育培訓機構連帶擔保協(xié)議4篇
- 電商運營管理制度
- 二零二五年度一手房購房協(xié)議書(共有產權房購房協(xié)議)3篇
- 2025年上半年上半年重慶三峽融資擔保集團股份限公司招聘6人易考易錯模擬試題(共500題)試卷后附參考答案
- 城市公共交通運營協(xié)議
- 內燃副司機晉升司機理論知識考試題及答案
- 2024北京東城初二(上)期末語文試卷及答案
- 2024設計院與職工勞動合同書樣本
- 2024年貴州公務員考試申論試題(B卷)
- 電工高級工練習題庫(附參考答案)
- 村里干零工協(xié)議書
- 2024年高考八省聯(lián)考地理適應性試卷附答案解析
評論
0/150
提交評論