版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Arduino編程參考手冊TOC o 1-5 h z HYPERLINK l bookmark0 o Current Document 程序結(jié)構(gòu)5控制語句6if6if.else6for6switchcase6 HYPERLINK l bookmark4 o Current Document while7do.while7break7continue7return7goto7相關(guān)語法7分號(hào)7大括號(hào)7注釋7define7include7算術(shù)運(yùn)算符7賦值7加,減,乘,除7取模7比較運(yùn)算符7if(條件)and=,!=,(比較運(yùn)算符)7 HYPERLINK l bookmark6 o Current D
2、ocument 布爾運(yùn)算符7指針運(yùn)算符8位運(yùn)算8位與8位或8位異或9位非9左移、右移9復(fù)合運(yùn)算符10自加+10自減-10復(fù)合加+=10復(fù)合減-=10復(fù)合乘*=10復(fù)合除/=10復(fù)合與&=10復(fù)合或|=10變量10常量10宏定義10整型常量11浮點(diǎn)數(shù)常量11 HYPERLINK l bookmark8 o Current Document 數(shù)據(jù)類型12 HYPERLINK l bookmark10 o Current Document void12 HYPERLINK l bookmark12 o Current Document boolean12char12unsignedchar12byt
3、e12int12unsignedint12word12long12unsignedlong12float12double13string13String(c+)13array13數(shù)據(jù)類型轉(zhuǎn)換13char()13byte()13int()13word()13long()13float()13變量作用域&修飾符13變量作用域13static(靜態(tài)變量)13volatile(易變變量)13const(不可改變變量)13輔助工具13sizeof()(sizeof運(yùn)算符)13ASCII碼表13 HYPERLINK l bookmark14 o Current Document 基本函數(shù)14 HYPERL
4、INK l bookmark16 o Current Document 數(shù)字I/O15 HYPERLINK l bookmark18 o Current Document pinMode()15 HYPERLINK l bookmark20 o Current Document digitalWrite()15 HYPERLINK l bookmark22 o Current Document digitalRead()16 HYPERLINK l bookmark24 o Current Document 模擬I/O16 HYPERLINK l bookmark26 o Current Do
5、cument analogReference()16 HYPERLINK l bookmark28 o Current Document analogRead()17analogWrite()17高級(jí)I/O17shiftOut()17pulseIn()18 HYPERLINK l bookmark30 o Current Document 時(shí)間19 HYPERLINK l bookmark32 o Current Document millis()19 HYPERLINK l bookmark34 o Current Document delay(ms)19delayMicroseconds(
6、us)20數(shù)學(xué)庫20min()20max()20abs()20constrain()20map()20pow()20sqrt()20三角函數(shù)20sin(),cos(),tan()20隨機(jī)數(shù)20randomSeed()20 HYPERLINK l bookmark36 o Current Document random()21位操作位操作21設(shè)置中斷函數(shù)21a21achInterrupt()21 HYPERLINK l bookmark40 o Current Document detachInterrupt()23 HYPERLINK l bookmark42 o Current Docume
7、nt interrupts()23noInterrupts()24串口通訊24begin()24available()24read()24flush()24 HYPERLINK l bookmark46 o Current Document print()24println()28 HYPERLINK l bookmark48 o Current Document write()28 HYPERLINK l bookmark50 o Current Document peak()29 HYPERLINK l bookmark52 o Current Document serialEvent()
8、29程序結(jié)構(gòu)(本節(jié)直譯自Arduino官網(wǎng)最新Reference)在Arduino中,標(biāo)準(zhǔn)的程序入口main函數(shù)在內(nèi)部被定義,用戶只需要關(guān)心以下兩個(gè)函數(shù):setup()當(dāng)Arduino板起動(dòng)時(shí)setup()函數(shù)會(huì)被調(diào)用。用它來初始化變量,引腳模式,開始使用某個(gè)庫,等等。該函數(shù)在Arduino板的每次上電和復(fù)位時(shí)只運(yùn)行一次。loop()在創(chuàng)建setup函數(shù),該函數(shù)初始化和設(shè)置初始值,loop()函數(shù)所做事的正如其名,連續(xù)循環(huán),允許你的程序改變狀態(tài)和響應(yīng)事件??梢杂盟鼇韺?shí)時(shí)控制arduino板。示例:intbuonPin=3;voidsetup()(9600);蟲皿與基本的if語句相比,由于允許多
9、個(gè)測試組合在一起,if/else可以使用更多的控制流。例如,可以測試一個(gè)模擬量輸入,如果輸入值小于500,則采取一個(gè)動(dòng)作,而如果輸入值大于或等于500,則采取另一個(gè)動(dòng)作。代碼看起來像是這樣:IIIif(pinFiveInput0|y0)TOC o 1-5 h zIIIIIIIIIIIIIIIIIIx或y任意一個(gè)大于0時(shí)返回真!(非)當(dāng)操作數(shù)為假時(shí)返回真,例如Iif(!x)TOC o 1-5 h zIII丿IIIIIIIIIIIIIIIII若x為假返回真(即如果x等于0)警告確保你沒有把布爾與運(yùn)算符,&(兩個(gè)與符號(hào))錯(cuò)認(rèn)為按位與運(yùn)算符&(單個(gè)與符號(hào))。它們是完全不同的概念。同樣,不要混淆布爾或運(yùn)
10、算符|(雙豎杠)與按位或運(yùn)算符|(單豎杠)。按位取反(波浪號(hào))看起來與布爾非!有很大不同(感嘆號(hào)或程序員口中的“棒”),但是你仍然必須確保在什么地方用哪一個(gè)。例如if(a=10&a=20)在a和b的16位的每一位將使用按位與處理。且所有16位結(jié)果存入C中,以二進(jìn)制存入的結(jié)果值01000100,即十進(jìn)制的68。按位與的其中一個(gè)最常用的用途是從一個(gè)整型數(shù)中選擇特定的位,常被稱為掩碼屏蔽。看如下示例位或按位或(|)在C+中按位或運(yùn)算符是垂直的條桿符號(hào),|。就像&運(yùn)算符,丨獨(dú)立地計(jì)算它周圍的兩個(gè)整型表達(dá)式的每一位。(當(dāng)然)它所做的是不同的(操作)。兩個(gè)輸入位其中一個(gè)或都是1按位或?qū)⒌玫?,否則為0。換
11、句話說:0011operandl0101operand20111(operandl|operand2)-returnedresult這是一個(gè)使用一小斷C+代碼描述的按位或(運(yùn)算)的例子:inta=92;按位與和按位或的一個(gè)共同的工作是在端口上進(jìn)行程序員稱之為讀-改-寫的操作。在微控制器中,每個(gè)端口是一個(gè)8位數(shù)字,每一位表示一個(gè)引腳的狀態(tài)。寫一個(gè)端口可以同時(shí)控制所有的引腳。PORTD是內(nèi)建的參照數(shù)字口0,1,2,3,4,5,6,7的輸出狀態(tài)的常量。如果一個(gè)比特位是1,那么該引腳置高。(引腳總是需要用pinMode()指令設(shè)置為輸出模式)。所以如果我們寫入PORTD=B000001;我們就會(huì)讓引腳
12、2,3和7輸出高。一個(gè)小小的問題是,我們同時(shí)也改變了某些引腳的0,1狀態(tài)。這用于Arduino與串口通訊,所以我們可能會(huì)干擾串口通訊。我們的程序規(guī)則是:僅僅獲取和清除我們想控制的與相應(yīng)引腳對應(yīng)的位(使用按位與)。合并要修改的PORTD值與所控制的引腳的新值(使用按位或)。inti;.18=25619=5當(dāng)把X右移y位,x的最高位為1,該行為依賴于x的確切的數(shù)據(jù)類型。如果x的類型是int,最高位為符號(hào)位,決定x是不是負(fù)數(shù),正如我們在上面已經(jīng)討論過的。在這種情況下,符號(hào)位會(huì)復(fù)制到較低的位:intx=-16;復(fù)合運(yùn)算符自加+i+;PI.I#defineHALF_PI二分之一PII#defineTWO
13、_PI85二倍PII#defineDEG_TO_RAD9弧度轉(zhuǎn)角度defineRAD_TO_DEGL角度轉(zhuǎn)弧度整型常量整數(shù)常量整數(shù)常量是直接在程序中使用的數(shù)字,如。默認(rèn)情況下,這些數(shù)字被視為int,但你可以通過U和L修飾符進(jìn)行更多的限制(見下文)。通常情況下,整數(shù)常量默認(rèn)為十進(jìn)制,但可以加上特殊前綴表示為其他進(jìn)制。進(jìn)制例子格式備注10(十進(jìn)制)無2(二進(jìn)制)B0前綴B只適用于8位的值(0到255)字符0-1有效IIIIIIII8(八進(jìn)制)0173前綴”0”字符0-7有效IIIIII16(十六進(jìn)制)0 x7B前綴”0 x”字符0-9,A-F,A-F有效I小數(shù)是十進(jìn)制數(shù)。這是數(shù)學(xué)常識(shí)。如果一個(gè)數(shù)沒
14、有特定的前綴,則默認(rèn)為十進(jìn)制。二進(jìn)制以2為基底,只有數(shù)字0和1是有效的。示例:10105;浮點(diǎn)數(shù)可以用科學(xué)記數(shù)法表示。E和e都可以作為有效的指數(shù)標(biāo)志。浮點(diǎn)數(shù)被轉(zhuǎn)換為被轉(zhuǎn)換為10*105400067E-*10-數(shù)據(jù)類型voidvoid只用在函數(shù)聲明中。它表示該函數(shù)將不會(huì)被返回任何數(shù)據(jù)到它被調(diào)用的函數(shù)中。例子voidloop()boolean布爾一個(gè)布爾變量擁有兩個(gè)值,true或false。(每個(gè)布爾變量占用一個(gè)字節(jié)的內(nèi)存。)例子intLEDpin=5;7II語法floatvar=val;var您的float型變量名稱val分配給該變量的值示例代碼IIIintx;IIIIIIIinty;IIIII
15、IIfloatz;IIIIIIIIy=x/2;.IIIIIIIIIIIIIIIIIIIIIIIIIIIIvoidloop()iiiiiiiIIIIIIinti;.for(intj二iiiiiiii111=0;j100;j+)iiiiiiiiiiiiiiii11111111111111x=pi*2;ii78N110niiiiiiiiiiiiiiiiiiiii1547/79O111o1648080P112p1749181Q113q1850282R114r1951383S115s2052484T116t2153585U117u2254686V118v2355787W119w2456888X120 x
16、2557989Y121y265890Z122z27599112328609412623163?95127基本函數(shù)(本節(jié)由柴樹杉翻譯整理)數(shù)字I/OpinMode()voidpinMode(uint8_tpin,uint8_tmode)設(shè)置引腳模式配置引腳為輸出或輸出模式.參數(shù):pin引腳編號(hào)mode:INPUT,OUTPUT,或INPUT_PULLUP.例子:IIIintledPin=digitalWrite()IIILvoid.di_giiaiWrite._(uint8_t_衛(wèi)in,_衛(wèi)int8_t_value!寫數(shù)字引腳寫數(shù)字引腳,對應(yīng)引腳的高低電平.在寫引腳之前,需要將引腳設(shè)置為OUTP
17、UT模式.參數(shù):pin引腳編號(hào)valueHIGH或LOW用法:intledPin=digitalRead()intdigitalRead(uint8_tpin)讀數(shù)字引腳讀數(shù)字引腳,返回引腳的高低電平.在讀引腳之前,需要將引腳設(shè)置為INPUT模式.參數(shù):pin引腳編號(hào)返回:HIGH或LOWintTin=模擬I/OanalogReference()Lvoid_.analogReference._(uit8=t-tyfie).配置參考電壓配置模式引腳的參考電壓.函數(shù)analogRead在讀取模擬值之后,將根據(jù)參考電壓將模擬值轉(zhuǎn)換到0,10區(qū)間.有以下類型:DEFAULT:默認(rèn)5V.INTERNAL
18、:低功耗模式.ATmega168和ATmega8對應(yīng)到.EXTERNAL:擴(kuò)展模式.通過AREF引腳獲取參考電壓.參數(shù):type參考類型(DEFAULT/INTERNAL/EXTERNAL)analogRead()intanalogRead(uint8_tpin)讀模擬引腳讀模擬引腳,返回0T0之間的值.每讀一次需要花1微妙的時(shí)間.參數(shù):pin引腳編號(hào)返回:0到10之間的值例子:intanalogPin=3;可以用來控制LED的亮度,或者控制電機(jī)的轉(zhuǎn)速.在執(zhí)行該操作后,應(yīng)該等待一定時(shí)間后才能對該引腳進(jìn)行下一次的讀或?qū)懖僮?PWM的頻率大約為490Hz.在一些基于ATmega168的新的Ardu
19、ino控制板(如Mini和BT)中,該函數(shù)支持以下引腳:3,5,6,9,10,.在基于ATmega8的型號(hào)中支持9,10,引腳.例子:intledPin=9;其中dataPin為連接DS的引腳號(hào),clockPin為連接SH_CP的引腳號(hào),bitOrder為設(shè)置數(shù)據(jù)位移順序,分別為高位先入MSBFIRST或者低位先入LSBFIRST.參數(shù):dataPin數(shù)據(jù)引腳clockPin時(shí)鐘引腳bitOrder移位順序(MSBFIRST或LSBFIRST)val數(shù)據(jù)如果是HIGH,函數(shù)將先等引腳變?yōu)楦唠娖?然后開始計(jì)時(shí),一直到變?yōu)榈碗娖綖橹?返回脈沖持續(xù)的時(shí)間長短,單位為毫秒.如果超時(shí)還沒有讀到的話,將返
20、回0.參數(shù):pin引腳編號(hào)state脈沖狀態(tài)timeout超時(shí)時(shí)間下面的例子演示了統(tǒng)計(jì)高電平的繼續(xù)時(shí)間:intpin=7;unsignedlongduration;voidsetup()pinMode(pin,INPUT);voidloop()duration=pulseIn(pin,HIGH);時(shí)間millis()unsignedlongmillis(void)毫秒時(shí)間獲取機(jī)器運(yùn)行的時(shí)間長度,單位毫秒.系統(tǒng)最長的記錄時(shí)間為9小時(shí)分,如果超出時(shí)間將從0開始.時(shí)間為unsignedlong類型,如果用int保存時(shí)間將得到錯(cuò)誤結(jié)果:delay(ms)voiddelay(unsignedlongms
21、)延時(shí)(毫秒)延時(shí),單位毫秒(1秒有1000毫秒).參數(shù)為unsignedlong,因此在延時(shí)參數(shù)超過767(int型最大值)時(shí),需要用UL后綴表示為無符號(hào)長整型,例如:delay(60000UL);.同樣在參數(shù)表達(dá)式,切表達(dá)式中有int類型時(shí),需要強(qiáng)制轉(zhuǎn)換為unsignedlong類型,例如:delay(unsignedlong)tdelay*100UL);.一下例子設(shè)置引腳對應(yīng)的LED等以1秒頻率閃爍:intledPin=如果延時(shí)的時(shí)間有幾千微妙,那么建議使用delay函數(shù).目前參數(shù)最大支持16383微妙(不過以后的版本中可能會(huì)變化).以下代碼向第8號(hào)引腳發(fā)送脈沖,每次脈沖持續(xù)50微妙的時(shí)
22、間.intoutPin=8;例如:sensVal=min(sensVal,100);max()IIIIIL.最大值取兩者之間最大值.例如:sensVal=max(senVal,20);一般可以用于將值歸一化到某個(gè)區(qū)間.例如:sensVal=constrain(sensVal,10,150);參數(shù):x要映射的值in_min映射前區(qū)間in_max映射前區(qū)間out_min映射后區(qū)間out_max映射后區(qū)間例如下面的代碼中用map將模擬量從0,10映射到0,255區(qū)間:隨機(jī)種子的設(shè)置對產(chǎn)生的隨機(jī)序列有影響.參數(shù):seed隨機(jī)種子random()longrandom(longhowbig)生成隨機(jī)數(shù)生成
23、0,howbig-1范圍的隨機(jī)數(shù).參數(shù):howbig最大值longrandom(longhowsmall,longhowbig)ii生成隨機(jī)數(shù)生成howsmall,howbig-1范圍的隨機(jī)數(shù).參數(shù):howsmall最小值howbig最大值位操作位操作#definelowByte(w)(w)&0 xff)外部中斷有0和1兩種,一般對應(yīng)2號(hào)和3號(hào)數(shù)字引腳.參數(shù):interrupt中斷類型,0或1fun對應(yīng)函數(shù)mode觸發(fā)方式.有以下幾種:LOW低電平觸發(fā)中斷CHANGE變化時(shí)觸發(fā)中斷RISING低電平變?yōu)楦唠娖接|發(fā)中斷FALLING高電平變?yōu)榈碗娖接|發(fā)中斷注解:在中斷函數(shù)中delay函數(shù)不能使用
24、,millis始終返回進(jìn)入中斷前的值.讀串口數(shù)據(jù)的話,可能會(huì)丟失.中斷函數(shù)中使用的變量需要定義為volatile類型.下面的例子如果通過外部引腳觸發(fā)中斷函數(shù),然后控制LED的閃爍.IIIIintpin=IIIiiiiii;i,iiiiiivolatileintstate=LOW;iiiiiiiiiiiiiiiiivoidsetup()iiiiiiIIIIIIpinMode(pin,OUTPUT);IIIIIIIIIIaIIIIIIachlnterrupt(0,blink,CHANGE);iiiiiiIIIIIIIIIIIIIIIIIIvoidloop()iiiliiiiIdigitalWrit
25、e(pin,state);IIITOC o 1-5 h zIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIvoidblink()iiiiiiiiiiiiiiIIIIIIIIIIIIIIistate=!state;iiiiiiiiiiiiiidetachlnterrupt()I1IIIIIIivoiddetachInterrupt(uint8_tinterruptNum)取消中斷取消指定類型的中斷.參數(shù):interrupt中斷的類型.interrupts()TOC o 1-5 h zI1II#defineinterrupts。sei()iiiiiiiiiiiiiiiiii開中
26、斷例子:I1IIIIvoidsetup()iiiiiiiiiiiiiiiiiiiiiiiiiiiiiivoidloop()nolnterrupts();456)發(fā)送1.(N)發(fā)送NLzm_I可選的第二個(gè)參數(shù)用于指定數(shù)據(jù)的格式。允許的值為:BIN(binary二進(jìn)制),OCT(octai八進(jìn)制),DEC(decima1十進(jìn)制),HEX(hexadecima1十六進(jìn)制)。對于浮點(diǎn)數(shù),該參數(shù)指定小數(shù)點(diǎn)的位數(shù)。例如:(78,BIN)gives1000(78,OCT)gives6(78,DEC)gives78(78,HEX)gives4E(1.456,0)gives1(1.456,2)gives1.(1
27、.456,4)gives1.46你可以用F()把待發(fā)送的字符串包裝到flash存儲(chǔ)器。例如:III(F(“HelloWorld”)要發(fā)送單個(gè)字節(jié)數(shù)據(jù),請使用()。語法:III(val)IIIIIIII|(val,format)參數(shù):val:要發(fā)送的數(shù)據(jù)(任何數(shù)據(jù)類型)format:指定數(shù)字的基數(shù)(用于整型數(shù))或者小數(shù)的位數(shù)(用于浮點(diǎn)數(shù))。返回值:size_t(long):print()返回發(fā)送的字節(jié)數(shù)(可丟棄該返回值)。示例:III/*IIIIIUsesaFORloopfordataandprintsanumberinvariousformats.iiiliii*/IIIIIIintx=0;/
28、variablevoidsetup()(9600);/opentheserialportat9600bps:/printlabels(NOFORMAT);/printsalabel|(t);/printsatab(”);(t);(HEX);(t);(OCT);(t);();(t);for(x=0;x64;x+)for(x=0;x64;x+)/onlypartoftheASCIIchart,changetosuitII/printitoutinmanyformats:(x);/printasanASCII-encodeddecimal一sameasDEC(t);/printsatab(x,DEC);/printasanASCII-encodeddecimal(t);/printsatab(x,HEX);/printasanASCII-encodedhexadecimal(t);/printsatab
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 上海科技大學(xué)《數(shù)理邏輯與圖論》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海建橋?qū)W院《資源與環(huán)境信息管理技術(shù)含實(shí)訓(xùn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 家庭假期安全教育的方法與途徑
- 教師語文述職報(bào)告范文
- 建筑公司實(shí)踐報(bào)告范文
- 2024年中國接插式消火栓按鈕市場調(diào)查研究報(bào)告
- 2024年中國成核透明劑市場調(diào)查研究報(bào)告
- 信貸風(fēng)控貸前調(diào)查培訓(xùn)
- 2024年中國天然乳膠枕芯市場調(diào)查研究報(bào)告
- 上海工藝美術(shù)職業(yè)學(xué)院《運(yùn)動(dòng)生物力學(xué)實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年01月11032成本管理期末試題答案
- 年高考新課標(biāo)I卷語文試題講評(píng)課件
- 2024年高中班主任德育工作計(jì)劃(5篇)
- 浙江省嘉興市2023-2024學(xué)年高二上學(xué)期1月期末檢測數(shù)學(xué)試題
- 2024-2025學(xué)年語文二年級(jí)上冊 部編版期末測試卷 (含答案)
- 廢棄油管道注漿施工方案
- cecs31-2017鋼制電纜橋架工程設(shè)計(jì)規(guī)范
- 軍人體型標(biāo)準(zhǔn)對照表
- 淺談吉林省中藥材產(chǎn)業(yè)發(fā)展
- 學(xué)生學(xué)習(xí)評(píng)價(jià)量表模板
- 圖形找規(guī)律專項(xiàng)練習(xí)60題(有答案)
評(píng)論
0/150
提交評(píng)論