版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第六章
Arduino板常用外設(shè)與應(yīng)用六.一超聲測距六.二蜂鳴器六.三溫濕度傳感器六.四直流電機(jī)六.五步電機(jī)六.六舵機(jī)六.七SD卡讀寫模塊六.一五火焰?zhèn)鞲衅髁?一六紅外光電開關(guān)傳感器六.一七紅外體感應(yīng)傳感器六.一八溫度傳感器DS一八B二零六.一九心率傳感器六.二零MPU六零五零空間運(yùn)動傳感器六.二一繼電器六.八RFID讀卡模塊六.九日歷時鐘六.一零三色LED燈六.一一灰塵傳感器六.一二顏色傳感器六.一三水位傳感器六.一四氣體傳感器六.一超聲測距SR零四超聲波測距離傳感器,采用超聲波回波測距原理,運(yùn)用精確地時差測量技術(shù),檢測傳感器與目地物之間地距離。采用小角度,小盲區(qū)超聲波傳感器,具有測量準(zhǔn)確,無接觸,防水,防腐蝕與低成本等優(yōu)點(diǎn)。一.SR零四工作原理SR零四引腳引腳說明Vcc電源Trig觸發(fā)輸入端Echo回響輸出端GND地六.一超聲測距二.SR零四地類庫函數(shù)(一)SR零四()功能:構(gòu)造函數(shù),創(chuàng)建一個SR零四類地對象時被執(zhí)行,初始化對象,設(shè)置SR零四引腳。語法格式:SR零四sr零四(intechoPin,inttriggerPin)。參數(shù)說明:echoPin:回波引腳,int類型。triggerPin:觸發(fā)引腳,int類型。返回值:創(chuàng)建了一個SR零四類地對象。例如:SR零四sr零四=SR零四(六,七);或SR零四sr零四(六,七);創(chuàng)建了一個對象sr零四,初始化回波與觸發(fā)引腳為數(shù)字引腳六與七。(二)Distance()功能:讀取測距距離。語法格式:sr零四.Distance()參數(shù)說明:無。返回值:測距距離,long型,單位是厘米。六.一超聲測距三.SR零四地應(yīng)用實(shí)例#include"SR零四.h" //添加庫函數(shù)#defineTRIG_PIN六 //定義引腳#defineECHO_PIN七 //定義引腳SR零四sr零四=SR零四(ECHO_PIN,TRIG_PIN); //構(gòu)造函數(shù)longa;voidsetup(){Serial.begin(九六零零); //定義串口波特率Serial.println("ExamplewrittenbyColozFromArduin.");delay(一零零零);}voidloop(){a=sr零四.Distance(); //讀取障礙物與SR零四地距離Serial.print(a); //送串口監(jiān)視器顯示Serial.println("");delay(一零零零);}程序編譯下載成功后,打開串口監(jiān)視器,可看到當(dāng)障礙物與超聲測距模塊地距離變化時,所顯示地測量距離也發(fā)生變化。六.二蜂鳴器一.蜂鳴器地工作原理蜂鳴器是一種一體化結(jié)構(gòu)地電子訊響器,采用直流電壓供電,廣泛應(yīng)用于計(jì)算機(jī),打印機(jī),復(fù)印機(jī),報(bào)警器,電子玩具,汽車電子設(shè)備,電話機(jī),定時器等電子產(chǎn)品作發(fā)聲器件。有源蜂鳴器內(nèi)部有振蕩電路,能將恒定地直流電轉(zhuǎn)化成一定頻率地脈沖信號,一旦供電,蜂鳴器就會發(fā)出聲音。無源蜂鳴器內(nèi)部不帶震蕩源,需要加方波信號能夠發(fā)聲。頻率不同,震蕩出來地音調(diào)也不同。六.二蜂鳴器二.蜂鳴器地應(yīng)用實(shí)例(無源)intbuzzer=八; //設(shè)置控制蜂鳴器地?cái)?shù)字引腳voidsetup(){pinMode(buzzer,OUTPUT); //設(shè)置數(shù)字引腳為輸出模式}voidloop(){unsignedchari,j; //定義變量for(i=零;i<八零;i++){ //輸出一個頻率地聲音digitalWrite(buzzer,HIGH); //發(fā)聲delay(一); //延時一msdigitalWrite(buzzer,LOW); //不發(fā)聲delay(一);} //延時一msfor(j=零;j<一零零;j++){ //輸出另一個頻率地聲音digitalWrite(buzzer,HIGH); //發(fā)聲delay(二); //延時二msdigitalWrite(buzzer,LOW); //不發(fā)聲delay(二);} //延時二ms}六.三溫濕度傳感器一.DHT一一地工作原理數(shù)字溫濕度傳感器DHT一一是一款含有已校準(zhǔn)數(shù)字信號輸出地復(fù)合傳感器。DHT一一地DATA端采用串行接口(單線雙向)與微控制器行同步與通信。DHT一一地供電電壓為三~五.五V。傳感器上電后,要等待一s以越過不穩(wěn)定狀態(tài),在此期間無需發(fā)送任何指令。電源引腳(VDD,GND)之間可增加一個一零零nF地電容,用于去耦濾波。溫濕度傳感器模塊接口?VCC—電源引腳?GND—電源引腳?DAT—數(shù)字引腳六.三溫濕度傳感器二.DHT一一地類庫函數(shù)(一)read()功能:獲取讀取溫濕度數(shù)值地狀態(tài)返回碼。語法格式:DHT一一.read(intpin)。參數(shù)說明:pin:指定與DHT一一數(shù)據(jù)引腳連接地Arduino引腳,int型。返回值:零為沒有錯誤發(fā)生;一為校驗(yàn)與錯誤;二為傳感器反應(yīng)超時。(二)DHT一一.humidity讀取地濕度值,int型。(三)DHT一一.temperature讀取地溫度值,int型。六.三溫濕度傳感器三.DHT一一地應(yīng)用實(shí)例#include"dht一一.h" //添加庫函數(shù)dht一一DHT一一; //構(gòu)造函數(shù)#defineDHT一一PIN二 //DHT一一信號接arduino二號引腳voidsetup(){Serial.begin(一一五二零零);Serial.println("DHT一一測試");Serial.print("庫版本:");Serial.println(DHT一一LIB_VERSION);Serial.println();}voidloop(){Serial.println("\n");intchk=DHT一一.read(DHT一一PIN);//讀取傳感器值Serial.print("讀取傳感器:");六.三溫濕度傳感器三.DHT一一地應(yīng)用實(shí)例switch(chk){ //根據(jù)返回狀態(tài)輸出caseDHTLIB_OK:Serial.println("OK");break;caseDHTLIB_ERROR_CHECKSUM:Serial.println("校驗(yàn)與錯誤");break;caseDHTLIB_ERROR_TIMEOUT:Serial.println("超時錯誤");break;default:Serial.println("未知錯誤");break;}Serial.print("濕度(%):");Serial.println((float)DHT一一.humidity,二); //顯示濕度,二位小數(shù)Serial.print("溫度(oC):");Serial.println((float)DHT一一.temperature,二);//顯示溫度,二位小數(shù)delay(二零零零);}六.四直流電機(jī)直流電機(jī)是將直流電能轉(zhuǎn)換成機(jī)械能地機(jī)器。定子:直流電機(jī)運(yùn)行時靜止不動地部分。定子地主要作用是產(chǎn)生磁場。轉(zhuǎn)子:運(yùn)行時轉(zhuǎn)動地部分,其主要作用是產(chǎn)生電磁轉(zhuǎn)矩與感應(yīng)電動勢,應(yīng)用:智能小車地驅(qū)動器件。六.四直流電機(jī)一.直流電機(jī)地調(diào)速原理(一)改變電機(jī)兩端地電壓(二)改變磁通量改變電壓調(diào)速是常用辦法,使用脈沖控制PWM方法,輸入不同占空量地方波,改變直流電機(jī)電樞兩端地電壓,即可改變直流電機(jī)轉(zhuǎn)速,實(shí)現(xiàn)調(diào)速功能,可以實(shí)現(xiàn)無級調(diào)速。換向方法:通過改變輸入電壓極實(shí)現(xiàn)。直流電機(jī)有額定控制電源,電壓太低電機(jī)不能工作,PWM輸出有最低啟動值。值越大電機(jī)轉(zhuǎn)動越快。六.四直流電機(jī)二.直流電機(jī)轉(zhuǎn)速控制實(shí)例直流電機(jī)只有兩個引出端,可通過驅(qū)動芯片與Arduino地?cái)?shù)字接口連接地。通過PWM輸出改變控制端地電壓值即可控制電機(jī)地轉(zhuǎn)速,兩個引出端對調(diào)即可改變直流電機(jī)地轉(zhuǎn)向??梢圆捎美^電器,晶體管或多種驅(qū)動芯片對電機(jī)行驅(qū)動。constintanalogOutPin一=九;//定義輸出引腳constintanalogOutPin二=一零;voidsetup(){inti;intj;}voidloop(){for(bytei=一五零;i<=二五四;++i){//一五零是最低值,不同電機(jī)啟動值不同。analogWrite(analogOutPin一,i);analogWrite(analogOutPin二,零);delay(五零);}analogWrite(analogOutPin一,零);delay(二零零零);for(bytej=一五零;j<=二五四;++j){analogWrite(analogOutPin二,j);analogWrite(analogOutPin一,零);delay(五零);}analogWrite(analogOutPin二,零);delay(二零零零);}六.四直流電機(jī)六.五步電機(jī)步電機(jī)是一種將電脈沖轉(zhuǎn)化為角位移地執(zhí)行機(jī)構(gòu)。當(dāng)步電機(jī)驅(qū)動器接收到一個脈沖信號時,它就驅(qū)動步電機(jī)按設(shè)定地方向轉(zhuǎn)動一個固定地角度(即步距角)。可以通過控制脈沖個數(shù)來控制角位移量,從而達(dá)到準(zhǔn)確定位地目地,同時也可以通過控制脈沖頻率來控制電機(jī)轉(zhuǎn)動地速度與加速度,從而達(dá)到調(diào)速地目地。六.五步電機(jī)步電機(jī)是根據(jù)定子繞組數(shù)量與引出接線確地結(jié)構(gòu)。
A與C是一組聯(lián)通地,B與D是一組聯(lián)通地。每組間抽頭可以引出或不引出,可以組成兩相四線,四相五線或四相六線步電機(jī)。一.步電機(jī)工作原理六.五步電機(jī)分為單四拍,雙四拍,四相八拍三種工作模式:(一)步電機(jī)單四拍工作方式正轉(zhuǎn)繞組地通電順序:A→B→C→D→A→…。反轉(zhuǎn)繞組地通電順序:D→C→B→A→D→…。(二)步電機(jī)地雙四拍工作方式正轉(zhuǎn)繞組地通電順序:AB→BC→CD→DA→AB。反轉(zhuǎn)繞組地通電順序:DA→CD→BC→AB→DA。一.步電機(jī)工作原理六.五步電機(jī)分為單四拍,雙四拍,四相八拍三種工作模式:(三)步電機(jī)地四相八拍工作方式正轉(zhuǎn)繞組地通電順序:A→AB→B→BC→C→CD→D→DA→A。反轉(zhuǎn)繞組地通電順序:A→DA→D→CD→C→BC→B→AB→A。一.步電機(jī)工作原理六.五步電機(jī)二.步電機(jī)地類庫函數(shù)(一)Stepper()功能:構(gòu)造函數(shù),創(chuàng)建一個Stepper類地對象時被執(zhí)行,執(zhí)行時設(shè)置步數(shù)與控制引腳。語法格式:SteppermyStepper(steps,pin一,pin二)。SteppermyStepper(steps,pin一,pin二,pin三,pin四)。參數(shù)說明:steps:電機(jī)轉(zhuǎn)一圈地步數(shù),int類型。若已知步距角,則步數(shù)=三六零/步距角;pin一,pin二,pin三,pin四:連到電機(jī)地控制引腳,int類型。返回值:無。(二)setSpeed()功能:設(shè)置電機(jī)旋轉(zhuǎn)速度。語法格式:myStepper.setSpeed(rpms)。參數(shù)說明:rpms:轉(zhuǎn)數(shù)/每分鐘(RPMs),long型,一個正數(shù)。返回值:無。三.step()功能:設(shè)置步電機(jī)按setSpeed()設(shè)置地速度轉(zhuǎn)動地步數(shù)。語法格式:myStepper.step(steps)參數(shù)說明:steps:電機(jī)轉(zhuǎn)動地步數(shù),參數(shù)為正數(shù)則正向旋傳,負(fù)數(shù)則反向旋轉(zhuǎn)。返回值:無。六.五步電機(jī)#include<Stepper.h> //添加庫函數(shù)#defineSTEPS一零零 //電機(jī)轉(zhuǎn)一圈地步數(shù)為一零零Stepperstepper=Stepper(STEPS,八,九,一零,一一);//創(chuàng)建實(shí)例,指定步電機(jī)地步數(shù)與//控制引腳。intprevious=零; //模擬輸入變量初始化voidsetup(){stepper.setSpeed(三零); //設(shè)置步電機(jī)地速度三零轉(zhuǎn)/分鐘}voidloop(){intval=analogRead(零); //讀取電位器地值stepper.step(val-previous); //電位器地變化值作為步電機(jī)轉(zhuǎn)動步數(shù)previous=val; //更新電位器地值}六.五步電機(jī)三.步電機(jī)地應(yīng)用實(shí)例實(shí)例一:單四拍模式輸出高低電,給線圈通電,斷電。#defineTIME五//定義每拍間隔時間(速度)voidsetup(){pinMode(八,OUTPUT);pinMode(九,OUTPUT);pinMode(一零,OUTPUT);pinMode(一一,OUTPUT);}voidloop(){intq=一零零;for(inti=零;i<q;i++){//正向旋轉(zhuǎn)digitalWrite(八,一);//A相通電digitalWrite(九,零);digitalWrite(一零,零);digitalWrite(一一,零);delay(TIME);//改變TIME地大小可控制電機(jī)轉(zhuǎn)速
六.五步電機(jī)digitalWrite(八,零);digitalWrite(九,一);//B相通電digitalWrite(一零,零);digitalWrite(一一,零);delay(TIME);digitalWrite(八,零);digitalWrite(九,零);digitalWrite(一零,一);//C相通電digitalWrite(一一,零);delay(TIME);digitalWrite(八,零);digitalWrite(九,零);digitalWrite(一零,零);digitalWrite(一一,一);//D相通電delay(TIME);}
六.五步電機(jī)for(inti=零;i<q;i++){//反向旋轉(zhuǎn)digitalWrite(八,零);digitalWrite(九,零);digitalWrite(一零,零);digitalWrite(一一,一);//D相通電delay(TIME);digitalWrite(八,零);digitalWrite(九,零);digitalWrite(一零,一);//C相通電digitalWrite(一一,零);delay(TIME);digitalWrite(八,零);digitalWrite(九,一);//B相通電digitalWrite(一零,零);digitalWrite(一一,零);delay(TIME);digitalWrite(八,一);//A相通電digitalWrite(九,零);digitalWrite(一零,零);digitalWrite(一一,零);delay(TIME);}}六.五步電機(jī)實(shí)例二:應(yīng)用類庫成員函數(shù)實(shí)現(xiàn)功能:利用電位器控制步電機(jī)地轉(zhuǎn)速。六.五步電機(jī)#include<Stepper.h> //添加庫函數(shù)#defineSTEPS一零零 //電機(jī)轉(zhuǎn)一圈地步數(shù)為一零零Stepperstepper=Stepper(STEPS,八,九,一零,一一);//創(chuàng)建實(shí)例,指定步電機(jī)地步數(shù)與//控制引腳。intprevious=零; //模擬輸入變量初始化voidsetup(){stepper.setSpeed(三零); //設(shè)置步電機(jī)地速度三零轉(zhuǎn)/分鐘}voidloop(){intval=analogRead(零); //讀取電位器地值stepper.step(val-previous); //電位器地變化值作為步電機(jī)轉(zhuǎn)動步數(shù)previous=val; //更新電位器地值}六.六舵機(jī)舵機(jī)是一種位置(角度)伺服地驅(qū)動器,適用于那些需要角度不斷變化并可以保持地控制系統(tǒng)。例如舵機(jī)是船舶上地一種大甲板機(jī)械,選型時主要考慮扭矩大小,姿態(tài)變換地俯仰,偏航,滾轉(zhuǎn)運(yùn)動等都是靠舵機(jī)相互配合完成地。舵機(jī)在船舶,高檔遙控玩具,智能車與機(jī)器控制等方面有很多應(yīng)用。標(biāo)準(zhǔn)地舵機(jī)三條引出線是:電源線(紅色),地線(橙色),控制線(黃色)。舵機(jī)地控制信號是PWM信號,可利用占空比地變化,改變舵機(jī)地位置。電源線與地線用于提供舵機(jī)內(nèi)部地直流電機(jī)與控制線路所需地能源。電壓通常介于四~六V,一般取五V。注意,給舵機(jī)供電地電源應(yīng)能提供足夠地功率??刂凭€地輸入是一個寬度可調(diào)地周期方波脈沖信號,方波脈沖信號地周期為二零ms(即頻率為五零Hz)。當(dāng)方波地脈沖寬度改變時,舵機(jī)轉(zhuǎn)軸地角度發(fā)生改變,角度變化與脈沖寬度地變化成正比。一.舵機(jī)地工作原理六.六舵機(jī)六.六舵機(jī)一.舵機(jī)地工作原理六.六舵機(jī)二.舵機(jī)地類庫函數(shù)(一).attach()功能:為舵機(jī)指定一個引腳。語法格式:servo.attach(pin)與servo.attach(pin,min,max)。參數(shù)說明:pin:指定地引腳號。min:可選參數(shù),脈沖寬度,單位us,默認(rèn)最小值為五四四,對應(yīng)最小角度零°。max:可選參數(shù),脈沖寬度,單位us,默認(rèn)最大值為二四零零,對應(yīng)最大角度一八零°。返回值:無。(二)write()功能:設(shè)定舵機(jī)地角度值。語法格式:servo.write(angle)。參數(shù)說明:angle:設(shè)定地角度值。范圍是零-一八零°。返回值:無。(三)writeMicroseconds()功能:設(shè)定舵機(jī)地脈沖寬度,單位us。語法格式:servo.writeMicroseconds(us)。參數(shù)說明:us:設(shè)定地脈寬值。單位us,int類型。返回值:無。六.六舵機(jī)(四)read()功能:讀取舵機(jī)地角度值。語法格式:servo.read()。參數(shù)說明:無。返回值:舵機(jī)地角度值,int類型。范圍是零~一八零°。(五)attached()功能:檢查舵機(jī)是否指定了引腳。語法格式:servo.attached()。參數(shù)說明:無。返回值:布爾類型,為true表示指定了引腳。(六)detach()功能:將舵機(jī)與指定引腳分離。語法格式:servo.detach()。參數(shù)說明:無。返回值:無。六.六舵機(jī)三.舵機(jī)地應(yīng)用實(shí)例實(shí)例一沒有調(diào)用類庫intservopin=九; //定義舵機(jī)接口數(shù)字接口九intmyangle; //定義角度變量intpulsewidth; //定義脈寬變量intval;voidservopulse(intservopin,intmyangle){//定義一個脈沖函數(shù)pulsewidth=(myangle*一一)+五零零; //將角度轉(zhuǎn)化為五零零~二四八零地脈寬值digitalWrite(servopin,HIGH); //將舵機(jī)接口電置高delayMicroseconds(pulsewidth); //延時脈寬值地微秒數(shù)digitalWrite(servopin,LOW); //將舵機(jī)接口電置低delay(二零-pulsewidth/一零零零);}voidsetup(){pinMode(servopin,OUTPUT); //設(shè)定舵機(jī)接口為輸出接口Serial.begin(九六零零); //連接到串行端口,波特率為九六零零Serial.println("servu=o_seral_simpleready");}六.六舵機(jī)//將零到九地?cái)?shù)轉(zhuǎn)化為零到一八零角度voidloop(){val=Serial.read(); //讀取串行端口地值if(val>'零'&&val<='九'){val=val-'零'; //將字符轉(zhuǎn)化為數(shù)值變量val=val*(一八零/九); //將數(shù)字轉(zhuǎn)化為角度Serial.print("movingservoto");Serial.print(val,DEC);Serial.println();for(inti=零;i<=五零;i++) //給予舵機(jī)足夠地時間讓它轉(zhuǎn)到指定角度{servopulse(servopin,val); //引用脈沖函數(shù)}}}程序編譯下載后,從串口監(jiān)視器輸入零-九地?cái)?shù)字后,觀察運(yùn)行情況。六.六舵機(jī)三.舵機(jī)地應(yīng)用實(shí)例實(shí)例二:采用Servo類庫,通過電位器控制舵機(jī)。程序下載后,當(dāng)改變電位器地值時,舵機(jī)轉(zhuǎn)動地角度會隨之改變。#include<Servo.h>//使用伺服電機(jī)類庫Servomyservo;//定義伺服對象myservointpotpin=零;//模擬引腳用于連接電位器intval;//電位器地模擬值存放變量voidsetup(){myservo.attach(九);//指定九腳連到舵機(jī)}voidloop(){val=analogRead(potpin);//讀取電位器地值(零~一零二三)val=map(val,零,一零二三,零,一八零);//變換為控制舵機(jī)地角度值(零~一八零)myservo.write(val); //根據(jù)換算后地值設(shè)置舵機(jī)位置delay(一五); //等待舵機(jī)到位,以防舵機(jī)抖動}六.七SD卡讀寫模塊一.SD卡讀寫模塊簡介SD卡在日常生活與工作使用廣泛,目前已經(jīng)成為最為通用地?cái)?shù)據(jù)存儲卡。SD卡具有價格低廉,存儲容量大,使用方便,通用與安全強(qiáng)等優(yōu)點(diǎn),將SD卡應(yīng)用到嵌入式應(yīng)用系統(tǒng),將使系統(tǒng)變得更加出色。六.七SD卡讀寫模塊一.SD卡讀寫模塊簡介SD卡支持兩種總線方式:SD方式與SPI方式。其SD方式采用六線制,使用CLK,D,DAT零~DAT三行數(shù)據(jù)通信(PC等設(shè)備使用)。而SPI方式采用四線制,使用CS,CLK,DataIn與DataOut行數(shù)據(jù)通信。SD方式地?cái)?shù)據(jù)傳輸速度比SPI方式要快,但采用單片機(jī)對SD卡行讀寫時一般都采用SPI模式。引腳編號SPI模式名稱類型描述一CSI片選二DII數(shù)據(jù)輸入三VSS一S電源地四VDDS電源五SCLKI時鐘六VSS二S電源地七DOO或PP數(shù)據(jù)輸出八X
九X
S:電源供給I:輸入O:采用推拉驅(qū)動地輸出;PP:采用推拉驅(qū)動地輸入輸出Arduino地I/O接口輸出五V高電,SD卡地工作電壓是三.三V,故需要通過電轉(zhuǎn)換才可與Arduino連接,可以使用SD讀寫模塊與Arduino連接。六.七SD卡讀寫模塊二.SD卡地類庫函數(shù)SD卡支持兩種總線方式:SD方式與SPI方式。其SD方式采用六線制,使用CLK,D,DAT零~DAT三行數(shù)據(jù)通信(PC等設(shè)備使用)。而SPI方式采用四線制,使用CS,CLK,DataIn與DataOut行數(shù)據(jù)通信。SD方式地?cái)?shù)據(jù)傳輸速度比SPI方式要快,但采用單片機(jī)對SD卡行讀寫時一般都采用SPI模式。SDclass封裝類庫SD.h定義了一個SDclass類地對象SD,通過SD可訪問SDclass類地成員函數(shù),實(shí)現(xiàn)對SD卡上地文件與目錄地操作。(一)begin()功能:初始化SD類庫與SD卡。語法格式:SD.begin()。SD.begin(cspin)。參數(shù)說明:cspin(可選):連接到SD卡地片選引腳,默認(rèn)為SPI總線SS引腳。返回值:true:初始化完成;false:初始化失敗。六.七SD卡讀寫模塊二.SD卡地類庫函數(shù)(二)exists()功能:測試一個文件或目錄是否存儲在SD卡。語法格式:SD.exists(filename)。參數(shù)說明:filename:可包含目錄地文件名(用"/"分界)。返回值:若文件或目錄存在返回真(true),否則返回假(false)。(三)mkdir()功能:在SD卡上創(chuàng)建一個目錄。也可以創(chuàng)建任何間目錄。例如SD.mkdir("a/b/c")將創(chuàng)建a,b與c。語法格式:SD.mkdir(filename)。參數(shù)說明:filename:創(chuàng)建地目錄名,包括用"/"分界地子目錄。返回值:若目錄創(chuàng)建成功返回真,否則返回假。六.七SD卡讀寫模塊二.SD卡地類庫函數(shù)(四)open()功能:打開SD卡上地文件。當(dāng)按寫模式打開文件時,若文件不存在則創(chuàng)建文件(但包含文件地文件夾需要已存在)。語法格式:SD.open(filename)。SD.open(filename,mode)。參數(shù)說明:filename:打開地文件名,可包括用"/"分界地文件夾。char*類型。mode(可選參數(shù)):打開文件地模式有兩種(默認(rèn)是FILE_READ),byte類型。FILE_READ:按讀模式打開文件,從頭開始讀;FILE_WRITE:按讀寫模式打開文件,從文件末尾開始寫。返回值:被打開地文件對象(實(shí)例)。若無法打開文件,文件對象將為假,即可以用"if(f)"測試返回值。六.七SD卡讀寫模塊二.SD卡地類庫函數(shù)(四)open()功能:打開SD卡上地文件。當(dāng)按寫模式打開文件時,若文件不存在則創(chuàng)建文件(但包含文件地文件夾需要已存在)。語法格式:SD.open(filename)。SD.open(filename,mode)。參數(shù)說明:filename:打開地文件名,可包括用"/"分界地文件夾。char*類型。mode(可選參數(shù)):打開文件地模式有兩種(默認(rèn)是FILE_READ),byte類型。FILE_READ:按讀模式打開文件,從頭開始讀;FILE_WRITE:按讀寫模式打開文件,從文件末尾開始寫。返回值:被打開地文件對象(實(shí)例)。若無法打開文件,文件對象將為假,即可以用"if(f)"測試返回值。六.七SD卡讀寫模塊二.SD卡地類庫函數(shù)(五)remove()功能:從SD卡刪除一個文件。語法格式:SD.remove(filename)。參數(shù)說明:filename:可包含路徑地文件名(用"/"分界)。返回值:刪除成功返回真。否則返回假(若文件不存在,返回值不確定)。(六)rmdir()功能:從SD卡刪除一個目錄,目錄需要為空。語法格式:SD.rmdir(name)。參數(shù)說明:name:目錄名,子目錄用"/"分界。返回值:目錄刪除成功返回真,否則返回假(若目錄不存在,返回值不確定)。六.七SD卡讀寫模塊二.SD卡地類庫函數(shù)File封裝類庫File類庫允許對SD卡上地文件行讀寫。下面以對象名file為例介紹其成員函數(shù)。(一)name()功能:返回文件名。語法格式:()。參數(shù)說明:file:File類地一個實(shí)例(SD.open()地返回值)。返回值:文件名。(二)available()功能:檢查文件地字節(jié)數(shù),available()繼承了流實(shí)用類。語法格式:file.available()。參數(shù)說明:file:File類地一個實(shí)例(SD.open()地返回值)。返回值:文件地字節(jié)數(shù),int類型。六.七SD卡讀寫模塊二.SD卡地類庫函數(shù)(三)close()功能:關(guān)閉文件。語法格式:file.close()。參數(shù)說明:file:File類地一個實(shí)例(SD.open()地返回值)。返回值:無。(四)flush()功能:確保寫到文件里地字節(jié)存儲到SD卡上。當(dāng)文件關(guān)閉時,自動完成。語法格式:file.flush()。參數(shù)說明:file:File類地一個實(shí)例(SD.open()地返回值)。返回值:無。(五)peek()功能:從文件讀取下一個字節(jié),連續(xù)調(diào)用該函數(shù)將返回同一個值。peek()繼承了流實(shí)用類。語法格式:file.peek()。參數(shù)說明:file:File類地一個實(shí)例(SD.open()地返回值)。返回值:下一個字節(jié)或字符,若無則返回-一。六.七SD卡讀寫模塊二.SD卡地類庫函數(shù)(六)position()功能:獲取文件地當(dāng)前位置(將要讀寫地下一個字節(jié)地位置)。語法格式:file.position()。參數(shù)說明:file:File類地一個實(shí)例(SD.open()地返回值)。返回值:文件位置,unsignedlong類型。(七)print()功能:輸出數(shù)據(jù)到以寫方式打開地文件。按ASCII形式輸出數(shù)字(例如:一二三按'一','二','三'輸出)。語法格式:file.print(data)與file.print(data,BASE)。參數(shù)說明:file:File類地一個實(shí)例(SD.open()地返回值)。data:輸出數(shù)據(jù),char,byte,int,long,或string類型。BASE(可選參數(shù)):輸出數(shù)據(jù)地制:BIN是二制;DEC是十制;OCT是八制;HEX是十六制。返回值:byte:輸出地字節(jié)數(shù),讀取該數(shù)據(jù)是可選操作。六.七SD卡讀寫模塊二.SD卡地類庫函數(shù)(八)println()功能:按ASCII文本輸出數(shù)據(jù)到以寫方式打開地文件,后接一個回車換行。語法格式:file.println(),file.println(data)與file.print(data,BASE)。參數(shù)說明:同print()函數(shù)。返回值:同print()函數(shù)。(九)seek()功能:移動位置指針。需要在零到文件尾之間。語法格式:file.seek(pos)。參數(shù)說明:file:File類地一個實(shí)例(SD.open()地返回值)。pos:位置指針地位置,unsignedlong類型。返回值:成功返回真,否則返回假。(一零)size()功能:獲取文件地字節(jié)數(shù)。語法格式:file.size()。參數(shù)說明:file:File類地一個實(shí)例(SD.open()地返回值)。返回值:文件地字節(jié)數(shù),unsignedlong類型。六.七SD卡讀寫模塊二.SD卡地類庫函數(shù)(一一)read()功能:讀取文件地一個字符或字符串,read()繼承了流實(shí)用類。語法格式:file.read()與file.read(buf,len)。參數(shù)說明:file:File類地一個實(shí)例(SD.open()地返回值)。buf:字符或字節(jié)地一個數(shù)組。len:buf元素地個數(shù)。返回值:下一個字節(jié)或字符,否則返回-一。(一二)write()功能:寫數(shù)據(jù)到文件。語法格式:file.write(value)與file.write(buf,len)。參數(shù)說明:file:File類地一個實(shí)例(SD.open()地返回值)。value:寫入地?cái)?shù)據(jù),byte類型。buf:要寫入文件地字節(jié),字符或字符串(char*)。len:buf元素地個數(shù)。返回值:寫入地字節(jié)數(shù),該數(shù)據(jù)地讀取是可選操作。六.七SD卡讀寫模塊二.SD卡地類庫函數(shù)(一一)read()功能:讀取文件地一個字符或字符串,read()繼承了流實(shí)用類。語法格式:file.read()與file.read(buf,len)。參數(shù)說明:file:File類地一個實(shí)例(SD.open()地返回值)。buf:字符或字節(jié)地一個數(shù)組。len:buf元素地個數(shù)。返回值:下一個字節(jié)或字符,否則返回-一。(一二)write()功能:寫數(shù)據(jù)到文件。語法格式:file.write(value)與file.write(buf,len)。參數(shù)說明:file:File類地一個實(shí)例(SD.open()地返回值)。value:寫入地?cái)?shù)據(jù),byte類型。buf:要寫入文件地字節(jié),字符或字符串(char*)。len:buf元素地個數(shù)。返回值:寫入地字節(jié)數(shù),該數(shù)據(jù)地讀取是可選操作。六.七SD卡讀寫模塊二.SD卡地類庫函數(shù)(一三)isDirectory()功能:目錄(或文件夾)是特殊地文件,該函數(shù)檢查當(dāng)前地文件是否為一個目錄。語法格式:file.isDirectory()。參數(shù)說明:file:File類地一個實(shí)例(SD.open()地返回值)。返回值:當(dāng)前地文件是目錄返回真,否則返回假。(一四)openNextFile()功能:打開某個目錄下地下一個文件或文件夾。語法格式:file.openNextFile()。參數(shù)說明:file:File類地一個實(shí)例(SD.open()地返回值)。返回值:char:下一個文件或文件夾(一五)rewindDirectory()功能:使目錄指針指向目錄地第一個文件。一般與openNextFile()一起使用。語法格式:file.rewindDirectory()。參數(shù)說明:file:File類地一個實(shí)例(SD.open()地返回值)。返回值:無。。六.八RFID讀卡模塊一.RFID讀卡模塊簡介射頻識別即RFID(RadioFrequencyIdentification)技術(shù),又稱無線射頻識別,是一種短距離通信識別技術(shù),可通過無線電訊號識別特定目地并讀寫有關(guān)數(shù)據(jù),而無需識別系統(tǒng)與特定目地之間建立機(jī)械或光學(xué)接觸。常用地有低頻(一二五k~一三四.二K),高頻(一三.五六MHz),超高頻與微波等技術(shù)。RFID讀寫器有移動式與固定式兩種類型。目前RFID技術(shù)已廣泛應(yīng)用于圖書館,門禁,地鐵,公與食品安全溯源等系統(tǒng)。一套完整地RFID系統(tǒng)由閱讀器(Reader),電子標(biāo)簽(TAG)也就是所謂地應(yīng)答器(Transponder)及應(yīng)用軟件三個部分組成。六.八RFID讀卡模塊二.RFID地類庫函數(shù)RFID是第三方類庫,采用SPI通信接口,其定義了一個構(gòu)造函數(shù)與多個成員函數(shù)。(一)RFID()功能:構(gòu)造函數(shù),創(chuàng)建一個RFID類地對象時被執(zhí)行,執(zhí)行時設(shè)置讀卡器使能SS(模塊SDA)與RST引腳。語法格式:RFIDrfid(pin一,pin二)。參數(shù)說明:pin一:與讀卡器使能引腳(SS)連接地Arduino引腳編號。pin二:與讀卡器復(fù)位(RST)引腳連接地Arduino引腳編號。例如:RFIDrfid(四九,四七);創(chuàng)建了一個對象rfid,SS(模塊SDA)引腳與Arduino地四九腳連接,RST與Arduino地四七腳連接。下面以該對象為例描述其它類成員函數(shù)地語法格式。(二)isCard()功能:尋卡。語法格式:rfid.isCard()。參數(shù)說明:無。返回值:成功返回true;失敗返回false。六.八RFID讀卡模塊二.RFID地類庫函數(shù)(三)eadCardSerial()功能:返回卡地序列號:四字節(jié)。語法格式:rfid.readCardSerial()。參數(shù)說明:無。返回值:成功返回true;失敗返回false。(四)init()功能:初始化RC五二二。語法格式:rfid.init()。參數(shù)說明:無。返值:無。(五)auth()功能:驗(yàn)證卡片密碼。語法格式:rfid.auth(unsignedcharauthMode,unsignedcharBlockAddr,unsignedchar*Sectorkey,unsignedchar*serNum)。參數(shù)說明:authMode:密碼驗(yàn)證模式。零x六零為驗(yàn)證A密鑰;零x六一為驗(yàn)證B密鑰。BlockAddr:塊地址。Sectorkey:扇區(qū)密碼。serNum:卡片序列號,四字節(jié)。返回值:成功返回MI_OK(即零)。六.八RFID讀卡模塊二.RFID地類庫函數(shù)(六)read()功能:讀塊數(shù)據(jù)。語法格式:rfid.read(unsignedcharblockAddr,unsignedchar*recvData)。參數(shù)說明:blockAddr:塊地址;recvData:讀出地塊數(shù)據(jù)。返回值:成功返回MI_OK(即零)。(七)write()功能:寫塊數(shù)據(jù)。語法格式:rfid.write(unsignedcharblockAddr,unsignedchar*writeData)。參數(shù)說明:blockAddr:塊地址。writeData:將一六字節(jié)數(shù)據(jù)寫入塊。返回值:成功返回MI_OK(即零)。六.八RFID讀卡模塊二.RFID地類庫函數(shù)(八)selectTag()功能:選卡,讀取卡存儲器容量。語法格式:rfid.selectTag(unsignedchar*serNum)。參數(shù)說明:serNum:傳入卡序列號。返回值:成功返回卡容量。(九)Halt()功能:命令卡片入休眠狀態(tài)。語法格式:rfid.Halt()。參數(shù)說明:無。返回值:無。六.八RFID讀卡模塊三.RFID讀卡模塊地應(yīng)用實(shí)例RC五二二引腳SSSCKMOSIMISOGNDRST三.三VArduino引腳四九五二五一五零GND四七三.三V引腳功能使能時鐘數(shù)據(jù)入數(shù)據(jù)出電源地復(fù)位電源RC五二二模塊與Arduino板連線實(shí)例:讀取IC卡地ID號。#include<SPI.h> //添加SPI庫函數(shù)#include<RFID.h> //添加RFID庫函數(shù)RFIDrfid(四九,四七); //四九:讀卡器地SDA引腳,四七:讀卡器地RST引腳voidsetup() //初始化{Serial.begin(九六零零);SPI.begin();rfid.init();}六.八RFID讀卡模塊三.RFID讀卡模塊地應(yīng)用實(shí)例voidloop(){if(rfid.isCard()){ //尋找卡Serial.println("Findthecard!");if(rfid.readCardSerial()){ //讀取卡地序列號,送串口監(jiān)視器顯示Serial.print("Thecard'snumberis:");Serial.print(rfid.serNum[零],HEX);Serial.print(rfid.serNum[一],HEX);Serial.print(rfid.serNum[二],HEX);Serial.print(rfid.serNum[三],HEX);Serial.print(rfid.serNum[四],HEX);Serial.println("");}//選卡,可返回卡地容量,鎖定卡片,防止多次讀寫,去掉本行將連續(xù)讀卡rfid.selectTag(rfid.serNum);}rfid.halt(); //使卡休眠}程序編譯下載運(yùn)行后,在串口監(jiān)視器上可顯示讀取地RFID地卡號。六.九日歷時鐘一.日歷時鐘模塊PCF八五六三簡介PCF八五六三是PHILIPS公司推出地一款工業(yè)級地多功能時鐘/日歷芯片,其內(nèi)含I二C總線接口功能且具有極低功耗。PCF八五六三地多種報(bào)警功能,定時器功能,時鐘輸出功能以及斷輸出功能能完成各種復(fù)雜地定時服務(wù),甚至可為單片機(jī)提供看門狗功能,內(nèi)部時鐘電路,內(nèi)部振蕩電路與內(nèi)部低電壓檢測電路等。六.九日歷時鐘二.PCF八五六三地應(yīng)用實(shí)例#include<Wire.h>#definePCF八五六三_Address零x五一//七位從地址:B一零一零零零一,不包括R/Wbytetime[]={三零,二三,二零,一,四,一零,二零};//初始值:秒,分,小時,日,星期,月,年bytevalue[一六];voidsetup(){Wire.begin();//加入I二C總線Serial.begin(九六零零);//串口波特率初始化PCF八五六三_Init(time);//日歷時鐘初始化}六.九日歷時鐘二.PCF八五六三地應(yīng)用實(shí)例voidloop(){inti=零;byteval=零;PCF八五六三_GetTime(time);//讀取日歷,時鐘for(i=零;i<七;i++){//監(jiān)視器顯示日歷,時鐘switch(i){case零:Serial.print("Second");break;case一:Serial.print("Minute");break;case二:Serial.print("Hour");break;case三:Serial.print("Day");break;case四:Serial.print("Week");break;case五:Serial.print("Month");break;case六:Serial.print("Year");break;}Serial.print("\t");Serial.println(time[i],DEC);}Serial.println("");delay(八零零零);}六.九日歷時鐘二.PCF八五六三地應(yīng)用實(shí)例voidPCF八五六三_WriteReg(byteregaddress,bytevalue)//設(shè)置PCF八五六三某個寄存器地值{Wire.beginTransmission(PCF八五六三_Address);Wire.write(regaddress);Wire.write(value);Wire.endTransmission();}bytePCF八五六三_ReadReg(byteregaddress){//讀取PCF八五六三某個寄存器地值bytevalue;Wire.beginTransmission(PCF八五六三_Address);Wire.write(regaddress);Wire.endTransmission();Wire.requestFrom(PCF八五六三_Address,一);value=Wire.read();Wire.endTransmission();returnvalue;}六.九日歷時鐘二.PCF八五六三地應(yīng)用實(shí)例voidPCF八五六三_ReadAllReg(bytebuf[])//讀取PCF八五六三所有寄存器地值{chari=一;//Masterreadsslaveimmediatelyafterfirstbyte(READmode)//so,readbeginsfromaddress零x零一,notaddress零x零.Wire.requestFrom(PCF八五六三_Address,一六);while(Wire.available()){buf[(i++)%一六]=Wire.read();}Wire.endTransmission();}//初始化實(shí)時時鐘,同時設(shè)置時間地值,time[]={秒,分,時,日,周,月,年}voidPCF八五六三_Init(bytetime[]){PCF八五六三_Stop();PCF八五六三_SetTime(time);PCF八五六三_Start();}六.九日歷時鐘二.PCF八五六三地應(yīng)用實(shí)例//讀取時間值,其time[]={秒,分,時,日,周,月,年}voidPCF八五六三_GetTime(bytetime[]){bytei=零;bytemaskmode[]={零x七F,零x七F,零x三F,零x三F,零x七,零x一F,零xFF};Wire.beginTransmission(PCF八五六三_Address);Wire.write(零x二);//從第二個寄存器地址開始Wire.endTransmission();Wire.requestFrom(PCF八五六三_Address,七);//秒~年寄存器(零x二-零x八)while(Wire.available()){time[i++]=Wire.read();}Wire.endTransmission();for(i=零;i<七;i++){time[i]=BCD二DEC(time[i]&maskmode[i]);}}六.九日歷時鐘二.PCF八五六三地應(yīng)用實(shí)例//設(shè)置日歷,時間值,其time[]={秒,分,時,日,周,月,年}voidPCF八五六三_SetTime(bytetime[]){bytei=零;bytemaskmode[]={零x七F,零x七F,零x三F,零x三F,零x七,零x一F,零xFF};for(i=零;i<七;i++){time[i]=DEC二BCD(time[i])&maskmode[i];}Wire.endTransmission();Wire.beginTransmission(PCF八五六三_Address);Wire.write(零x二);//從第二個寄存器地址寫for(i=零;i<七;i++){Wire.write(time[i]);}Wire.endTransmission();}六.九日歷時鐘二.PCF八五六三地應(yīng)用實(shí)例voidPCF八五六三_Start(void){//啟動實(shí)時時鐘工作PCF八五六三_WriteReg(零x零,零x零);}voidPCF八五六三_Stop(void){//停止實(shí)時時鐘工作PCF八五六三_WriteReg(零x零,零x二零);}byteBCD二DEC(bytebcd){//BCD轉(zhuǎn)十制return(bcd>>四)*一零+(bcd&零xF);}byteDEC二BCD(bytedec){//十制轉(zhuǎn)BCDreturn(dec/一零)<<四|(dec%一零);}上面代碼編譯下載成功后,打開串口監(jiān)視器,可看到當(dāng)前讀取地時鐘值。六.一零三色LED燈一.三色LED簡介三色LED(RGBLED,也稱為全彩LED)與普通單色LED地不同處在于,通過控制其紅,綠,藍(lán)三種顏色地組合,可以發(fā)出其它顏色地光。根據(jù)紅,綠與藍(lán)三色混色原理,利用analogWrite函數(shù),可實(shí)現(xiàn)多種漸變地顏色,該方法可用于景觀燈地實(shí)現(xiàn)。六.一零三色LED燈二.三色LED地應(yīng)用實(shí)例為增大LED燈地亮度,需加驅(qū)動電路,陰極三色燈采用三極管八零五零行驅(qū)動。六.一零三色LED燈二.三色LED地應(yīng)用實(shí)例為增大LED燈地亮度,需加驅(qū)動電路,陰極三色燈采用三極管八零五零行驅(qū)動。六.一零三色LED燈二.三色LED地應(yīng)用實(shí)例constintred =一一;constintgreen =一二;constintblue =一三;voidsetup(){pinMode(red,OUTPUT);pinMode(green,OUTPUT);pinMode(blue,OUTPUT);}voidloop(){//紅綠藍(lán)三色混色(白色)從最暗到最亮漸變for(intbrightness=零;brightness<二五五;brightness++){analogWrite(red,brightness);analogWrite(green,brightness);analogWrite(blue,brightness);delay(一零);}六.一零三色LED燈二.三色LED地應(yīng)用實(shí)例//紅綠藍(lán)三色混色(白色)從最亮到最暗漸變for(intbrightness=二五五;brightness>=零;brightness--){analogWrite(red,brightness);analogWrite(green,brightness);analogWrite(blue,brightness);delay(一零);}//紅色從最暗到最亮漸變for(intbrightness=零;brightness<二五五;brightness++){analogWrite(red,brightness);delay(一零);}//紅色從最亮到最暗漸變for(intbrightness=二五五;brightness>=零;brightness--){analogWrite(red,brightness);delay(一零);}六.一零三色LED燈二.三色LED地應(yīng)用實(shí)例//綠色從最暗到最亮漸變for(intbrightness=零;brightness<二五五;brightness++){analogWrite(green,brightness);delay(一零);}//綠色從最亮到最暗漸變for(intbrightness=二五五;brightness>=零;brightness--){analogWrite(green,brightness);delay(一零);}
六.一零三色LED燈二.三色LED地應(yīng)用實(shí)例//藍(lán)色從最暗到最亮漸變for(intbrightness=零;brightness<二五五;brightness++){analogWrite(blu
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國缸蓋模具市場調(diào)查研究報(bào)告
- 2025年中國電腦凹版印刷機(jī)市場調(diào)查研究報(bào)告
- 2025年中國智能化測試儀市場調(diào)查研究報(bào)告
- 梳子制作直播課程設(shè)計(jì)
- 2025至2031年中國精煉變質(zhì)一次處理劑行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2031年中國電動淋浴刷行業(yè)投資前景及策略咨詢研究報(bào)告
- 舞蹈房特色課程設(shè)計(jì)
- 二零二五年度銀校合作協(xié)議書:銀校合作培養(yǎng)金融風(fēng)險管理師
- 二零二五年度電信行業(yè)職工勞動合同解除及通信服務(wù)保障協(xié)議
- 二零二五年度臨時工聘用與績效考核協(xié)議
- 第二章 運(yùn)營管理戰(zhàn)略
- 《三本白皮書》全文內(nèi)容及應(yīng)知應(yīng)會知識點(diǎn)
- 專題14 思想方法專題:線段與角計(jì)算中的思想方法壓軸題四種模型全攻略(解析版)
- 醫(yī)院外來器械及植入物管理制度(4篇)
- 港口與港口工程概論
- 《念珠菌感染的治療》課件
- 門店裝修設(shè)計(jì)手冊
- 考研計(jì)算機(jī)學(xué)科專業(yè)基礎(chǔ)(408)研究生考試試卷與參考答案(2025年)
- 2024護(hù)理個人年終總結(jié)
- 海南省申論真題2020年(縣級及以上)
- 商業(yè)倫理與企業(yè)社會責(zé)任(山東財(cái)經(jīng)大學(xué))智慧樹知到期末考試答案章節(jié)答案2024年山東財(cái)經(jīng)大學(xué)
評論
0/150
提交評論