![Arduino編程手冊中文版_第1頁](http://file4.renrendoc.com/view/4e3a9436a9a527c66cd3df43330a4c88/4e3a9436a9a527c66cd3df43330a4c881.gif)
![Arduino編程手冊中文版_第2頁](http://file4.renrendoc.com/view/4e3a9436a9a527c66cd3df43330a4c88/4e3a9436a9a527c66cd3df43330a4c882.gif)
![Arduino編程手冊中文版_第3頁](http://file4.renrendoc.com/view/4e3a9436a9a527c66cd3df43330a4c88/4e3a9436a9a527c66cd3df43330a4c883.gif)
![Arduino編程手冊中文版_第4頁](http://file4.renrendoc.com/view/4e3a9436a9a527c66cd3df43330a4c88/4e3a9436a9a527c66cd3df43330a4c884.gif)
![Arduino編程手冊中文版_第5頁](http://file4.renrendoc.com/view/4e3a9436a9a527c66cd3df43330a4c88/4e3a9436a9a527c66cd3df43330a4c885.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Arduino編程參考手冊首頁程序結構setup()loop()控制結構ifif...elseforswitchcasewhiledo...whilebreakcontinuereturngoto相關語法;分號{大括號.else與基本的if語句相比,由于允許多個測試組合在一起,if/else可以使用更多的控制流。例如,可以測試一個模擬量輸入,如果輸入值小于 500,則采取一個動作,而如果輸入值大于或等于 500,則采取另一個動作。代碼看起來像是這樣:if(pinFiveInput<500){.case通過允許程序員根據(jù)不同的條件指定不同的應被執(zhí)行的代碼來控制程序流。特別地,一個switch語句對一個變量的值與case語句中指定的值進行比較。當一個case語句被發(fā)現(xiàn)其值等于該變量的值。就會運行這個case語句下的代碼。break關鍵字將中止并跳出switch語句段,常常用于每個case語句的最后面。如果沒有break語句,switch語句將繼續(xù)執(zhí)行下面的表達式(“持續(xù)下降”)直到遇到break,或者是到達switch語句的末尾。示例:switch(var){case1:.whiledo循環(huán)do循環(huán)與while循環(huán)使用相同方式工作,不同的是條件是在循環(huán)的末尾被測試的,所以do循環(huán)總是至少會運行一次。do布爾運算符它們可用于if語句中的條件&&(邏輯與)只有在兩個操作數(shù)都為真時才返回真,例如:if(digitalRead(2)==HIGH&&digitalRead(3)==HIGH){.}只在兩個輸入都為高時返回真||(邏輯或)任意一個為真時返回真,例如:if(x>0||y>0){}x或y任意一個大于0時返回真!(非)當操作數(shù)為假時返回真,例如:if(!x){}若x為假返回真(即如果x等于0)警告確保你沒有把布爾與運算符, &&(兩個與符號)錯認為按位與運算符 &(單個與符號)。它們是完全不同的概念。同樣,不要混淆布爾或運算符||(雙豎杠)與按位或運算符|(單豎杠)。按位取反~(波浪號)看起來與布爾非 !有很大不同(感嘆號或程序員口中的“棒”),但是你仍然必須確保在什么地方用哪一個。例如if(a>=10&&a<=20){}在a和b的16位的每一位將使用按位與處理。且所有 16位結果存入C中,以二進制存入的結果值01000100,即十進制的68。按位與的其中一個最常用的用途是從一個整型數(shù)中選擇特定的位, 常被稱為掩碼屏蔽。看如下示例:位或按位或(|)在C++中按位或運算符是垂直的條桿符號, |。就像&運算符,|獨立地計算它周圍的兩個整型表達式的每一位。(當然)它所做的是不同的(操作)。兩個輸入位其中一個或都是 1按位或將得到1,否
00110101operand1operand20111(operand1|operand2)-returnedresult這是一個使用一小斷C++弋碼描述的按位或(運算)的例子:inta=92;按位與和按位或的一個共同的工作是在端口上進行程序員稱之為讀 -改-寫的操作。在微控制器中,每個端口是一個8位數(shù)字,每一位表示一個引腳的狀態(tài)。寫一個端口可以同時控制所有的引腳。TOC\o"1-5"\h\zPORTD是內建的參照數(shù)字口0,1,2,3,4,5,6,7的輸出狀態(tài)的常量。如果一個比特位是 1,那么該引腳置高。(引腳總是需要用pinMode()指令設置為輸出模式)。所以如果我們寫入PORTD=B00110001;我們就會讓引腳2,3和7輸出高。一個小小的問題是,我們同時也改變了某些引腳的0,1狀態(tài)。這用于Arduino與串口通訊,所以我們可能會干擾串口通訊。我們的程序規(guī)則是:僅僅獲取和清除我們想控制的與相應引腳對應的位(使用按位與) 。合并要修改的PORTDt與所控制的引腳的新值(使用按位或) 。inti;.1<<8==2561<<9==5121<<10==1024當把x右移y位,x的最高位為1,該行為依賴于x的確切的數(shù)據(jù)類型。如果 x的類型是int,最高位為符號位,決定x是不是負數(shù),正如我們在上面已經(jīng)討論過的。在這種情況下,符號位會復制到較低的位:復合運算符自加++i++;復合運算符自加++i++;#define#define#define#definePI.HALF_PI二分之一PITWO_PI二倍PIDEG_TO_RAD弧度轉角度RAD_TO_DEG角度轉弧度整型常量整數(shù)常量整數(shù)常量是直接在程序中使用的數(shù)字,如 123。默認情況下,這些數(shù)字被視為int,但你可以通過U和L修飾符進行更多的限制(見下文)。通常情況下,整數(shù)常量默認為十進制,但可以加上特殊前綴表示為其他進制。進制例子格式備注10(十進制)123無2(二進制)B1111011前綴'B'只適用于8位的值(0到255)字符0-1有效8(八進制)0173前綴”0”字符0-7有效16(十六進制)0x7B前綴”0x”字符0-9,A-F,A-F有效小數(shù)是十進制數(shù)。這是數(shù)學常識。如果一個數(shù)沒有特定的前綴,則默認為十進制。二進制以2為基底,只有數(shù)字0和1是有效的。示例:10105;浮點數(shù)可以用科學記數(shù)法表示。'E'和'e'都可以作為有效的指數(shù)標志。浮點數(shù)被轉換為 被轉換為10*10A5 23400067E-12 *10A-12數(shù)據(jù)類型voidvoid只用在函數(shù)聲明中。它表示該函數(shù)將不會被返回任何數(shù)據(jù)到它被調用的函數(shù)中。例子}voidloop(){}boolean布爾一個布爾變量擁有兩個值,true或false。(每個布爾變量占用一個字節(jié)的內存。)例子intLEDpin=5;}voidloop()inti;.for(intj=0;j<100;j++){x=pi*2;78N110n1547/79O111o1648080P112p1749181Q113q1850282R114r1951383S115s2052484T116t2153585U117u2254686V118v2355787W119w2456888X120x2557989Y121y265890Z122z2759J91[123{2860<92\124|2961=93]125}3062>94A126~316395127基本函數(shù)(本節(jié)由柴樹杉[翻譯整理]))數(shù)字I/OpinMode()voidpinMode(uint8_tpin,uint8_tmode)設置引腳模式配置引腳為輸出或輸出模式.參數(shù):pin引腳編號mode:INPUT,OUTPUT,或INPUT_PULLUP.例子:intledPin=13;digitalWrite()voiddigitalWrite(uint8_tpin,uint8_tvalue)寫數(shù)字引腳寫數(shù)字引腳,對應引腳的高低電平?在寫引腳之前,需要將引腳設置為OUTPU模式.參數(shù):pin引腳編號valueHIGH或LOW用法:intledPin=13;digitalRead()intdigitalRead(uint8_tpin)讀數(shù)字引腳讀數(shù)字引腳,返回引腳的高低電平?在讀引腳之前,需要將引腳設置為INPUT模式.參數(shù):pin引腳編號返回:HIGH或LOWintledPin=13;模擬I/OanalogReference()voidanalogReference(uint8_ttype)配置參考電壓配置模式引腳的參考電壓.函數(shù)analogRead在讀取模擬值之后,將根據(jù)參考電壓將模擬值轉換到[0,1023]區(qū)間.有以下類型:DEFAULT:默認5V.INTERNAL:低功耗模式.ATmega168和ATmegaS對應到.EXTERNAL:擴展模式.通過AREF引腳獲取參考電壓.參數(shù):type參考類型(DEFAULT/INTERNAL/EXTERNAL)analogRead()intanalogRead(uint8_tpin)讀模擬引腳讀模擬引腳,返回[0-1023]之間的值.每讀一次需要花1微妙的時間.參數(shù):pin引腳編號返回:0到1023之間的值例子:intanalogPin=3; 可以用來控制LED的亮度,或者控制電機的轉速.在執(zhí)行該操作后,應該等待一定時間后才能對該引腳進行下一次的讀或寫操作 ?PWM的頻率大約為490Hz.在一些基于ATmega168的新的Arduino控制板(如Mini和BT)中,該函數(shù)支持以下引腳:3,5,6,9,10,11.在基于ATmega8的型號中支持9,10,11引腳.例子:intledPin=9; 其中dataPin為連接DS的引腳號,clockPin為連接SH_CP的引腳號,bitOrder為設置數(shù)據(jù)位移順序,分別為高位先入MSBFIRST或者低位先入LSBFIRST.參數(shù):dataPin數(shù)據(jù)引腳clockPin時鐘引腳bitOrder移位順序(MSBFIRST或LSBFIRST)val數(shù)據(jù)如果是HIGH,函數(shù)將先等引腳變?yōu)楦唠娖?然后開始計時,一直到變?yōu)榈碗娖綖橹?返回脈沖持續(xù)的時間長短,單位為毫秒.如果超時還沒有讀到的話,將返回0.參數(shù):pin引腳編號state脈沖狀態(tài)timeout超時時間下面的例子演示了統(tǒng)計高電平的繼續(xù)時間:intpin=7;unsignedlongduration;voidsetup(){pinMode(pin,INPUT);}voidloop(){duration=pulseIn(pin,HIGH);}時間millis()unsignedlongmillis(void)毫秒時間獲取機器運行的時間長度,單位毫秒.系統(tǒng)最長的記錄時間為9小時22分,如果超出時間將從0開始.警告:時間為unsignedlong類型,如果用int保存時間將得到錯誤結果:delay(ms)voiddelay(unsignedlongms)延時(毫秒)延時,單位毫秒(1秒有1000毫秒).警告:參數(shù)為unsignedlong,因此在延時參數(shù)超過32767(int型最大值)時,需要用"UL"后綴表示為無符號長整型,例如:delay(60000UL);.同樣在參數(shù)表達式,切表達式中有int類型時,需要強制轉換為unsignedlong類型,例如:delay((unsignedlong)tdelay*100UL);.一下例子設置13引腳對應的LED等以1秒頻率閃爍:intledPin=13; 如果延時的時間有幾千微妙,那么建議使用delay函數(shù).目前參數(shù)最大支持16383微妙(不過以后的版本中可能會變化).以下代碼向第8號引腳發(fā)送脈沖,每次脈沖持續(xù)50微妙的時間.intoutPin=8; 例如:sensVal=min(sensVal,100);max()#definemax(a,b)((a)>(b)(a):(b))最大值取兩者之間最大值.例如:sensVal=max(senVal,20); 一般可以用于將值歸一化到某個區(qū)間例如:sensVal=constrain(sensVal,10,150);參數(shù):x要映射的值in_min映射前區(qū)間in_max映射前區(qū)間out_min映射后區(qū)間out_max映射后區(qū)間例如下面的代碼中用map將模擬量從[0,1023]映射到[0,255]區(qū)間:隨機種子的設置對產生的隨機序列有影響.參數(shù):seed隨機種子random()longrandom(longhowbig)生成隨機數(shù)生成[0,howbig-1]范圍的隨機數(shù)參數(shù):howbig最大值longrandom(longhowsmall,longhowbig)生成隨機數(shù)生成[howsmall,howbig-1]范圍的隨機數(shù)參數(shù):howsmall最小值howbig最大值位操作位操作#definelowByte(w)((w)&0xff)外部中斷有0和1兩種,一般對應2號和3號數(shù)字引腳.參數(shù):interrupt中斷類型,0或1fun對應函數(shù)mode觸發(fā)方式.有以下幾種:LOW低電平觸發(fā)中斷CHANGE變化時觸發(fā)中斷RISING低電平變?yōu)楦唠娖接|發(fā)中斷FALLING高電平變?yōu)榈碗娖接|發(fā)中斷注解:在中斷函數(shù)中delay函數(shù)不能使用,millis始終返回進入中斷前的值.讀串口數(shù)據(jù)的話,可能會丟失.中斷函數(shù)中使用的變量需要定義為volatile類型.下面的例子如果通過外部引腳觸發(fā)中斷函數(shù) ,然后控制LED的閃爍.intpin=13;volatileintstate=LOW;voidsetup(){pinMode(pin,OUTPUT);attachInterrupt(0,blink,CHANGE);}voidloop(){digitalWrite(pin,state);}voidblink(){state=!state;}detachInterrupt()voiddetachInterrupt(uint8_tinterruptNum)取消中斷取消指定類型的中斷.參數(shù):interrupt中斷的類型interrupts()#defineinterrupts()sei()開中斷例子:voidsetup(){}voidloop(){noInterrupts();發(fā)送"Helloworld."可選的第二個參數(shù)用于指定數(shù)據(jù)的格式。允許的值為:BIN(binary二進制),OCT(octal八進制),DEC(decimal十進制),HEX(hexadecimal十六進制)。對于浮點數(shù),該參數(shù)指定小數(shù)點的位數(shù)。例如:(78,BIN)gives"1001110"(78,OCT)gives"116"(78,DEC)gives"78"(78,HEX)gives"4E",0)gives"1",2)gives"",4)gives""你可以用F()把待發(fā)送的字符串包裝到flash存儲器。例如:(F(“HelloWorld”))要發(fā)送單個字節(jié)數(shù)據(jù),請使用()。語法:(val)(val,format)參數(shù):val:要發(fā)送的數(shù)據(jù)(任何數(shù)據(jù)類型)format:指定數(shù)字的基數(shù)(用于整型數(shù))或者小數(shù)的位數(shù)(用于浮點數(shù))。返回值:<>size_t(long):print()返回發(fā)送的字節(jié)數(shù)(可丟棄該返回值)。示例:/*UsesaFORloopfordataandprintsanumberinvariousformats.*/intx=0;//variablevoidsetup(){
(9600);//opentheserialportat9600bps:}voidloop(){//printlabels("NOFORMAT");//printsalabel("\t"); //printsatab("DEC");("\t");("HEX");("\t");("OCT");("\t");("BIN");("\t");for(x=0;x<64;x++){//onlypartoftheASCIIchart,changetosuit//printitoutinmanyformats:(x);//printasanASCII-encodeddecimal-sameas"DEC"("\t");//printsatab(x,DEC);//printasanASCII-encodeddecimal("\t");//printsatab(x,HEX);//printasanASCII-encodedhexadecimal("\t");//printsatab(x,OCT);//printasanASCII-encodedoctal("\t");//printsatab(x,BIN);//printasanASCII-encodedbinary// thenaddsthecarriagereturnwith"println"delay(200);//delay200milliseconds}("");//printsanothercarriagereturn}編程技巧:在版本時,串口傳輸是
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- ERK2-IN-5-生命科學試劑-MCE-2561
- 二零二五年度文化旅游項目管理費合同范本
- 二零二五年度體育賽事表演安全免責合同
- 施工日志填寫樣本建筑物綠化工程
- 小學數(shù)學課堂中的情境教學與興趣培養(yǎng)
- 酒店衛(wèi)生標準與旅客健康保障措施研究
- 個人土地承包合同示范文本
- 產品分銷區(qū)域合同范本
- SPA會所年度承包經(jīng)營合同
- 個人財產保險合同模板(經(jīng)典)
- (一模)蕪湖市2024-2025學年度第一學期中學教學質量監(jiān)控 英語試卷(含答案)
- 完整版秸稈炭化成型綜合利用項目可行性研究報告
- 詩經(jīng)楚辭文學常識單選題100道及答案
- AI輔助的慢性病監(jiān)測與管理系統(tǒng)
- 2025中國海油春季校園招聘1900人高頻重點提升(共500題)附帶答案詳解
- 膽汁淤積性肝硬化護理
- Unit 6 Is he your grandpa 第一課時 (教學實錄) -2024-2025學年譯林版(三起)(2024)英語三年級上冊
- 《數(shù)據(jù)采集技術》課件-Scrapy 框架的基本操作
- (2024)河南省公務員考試《行測》真題及答案解析
- 湖北省十一校2024-2025學年高三上學期第一次聯(lián)考化學試題 含解析
- 醫(yī)療保險結算與審核制度
評論
0/150
提交評論