《Arduino技術(shù)及應(yīng)用》課件-第10章Inputoutput高級應(yīng)用_第1頁
《Arduino技術(shù)及應(yīng)用》課件-第10章Inputoutput高級應(yīng)用_第2頁
《Arduino技術(shù)及應(yīng)用》課件-第10章Inputoutput高級應(yīng)用_第3頁
《Arduino技術(shù)及應(yīng)用》課件-第10章Inputoutput高級應(yīng)用_第4頁
《Arduino技術(shù)及應(yīng)用》課件-第10章Inputoutput高級應(yīng)用_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、物聯(lián)網(wǎng)應(yīng)用開發(fā)第十章 I/O口高級應(yīng)用物聯(lián)網(wǎng)應(yīng)用開發(fā)第十章 I/O口高級應(yīng)用目錄調(diào)聲函數(shù)1設(shè)置ADC參考電壓4脈沖寬度測量函數(shù)及超聲波測距2簡易電子琴3外部中斷5本章小結(jié)6目錄調(diào)聲函數(shù)1設(shè)置ADC參考電壓4脈沖寬度測量函數(shù)及超聲波測10.1調(diào)聲函數(shù)調(diào)聲函數(shù)tone( )主要使用在Arduino連接蜂鳴器或揚(yáng)聲器發(fā)生的場合,其實(shí)質(zhì)是輸出一個頻率可調(diào)的方波,以此驅(qū)動蜂鳴器或揚(yáng)聲器振動發(fā)聲。1. tone( )功能:在一個引腳上產(chǎn)生一個特定頻率的方波(50%占空比)。語法:tone(pin, frequency)tone(pin, frequency, duration)參數(shù):pin,需要輸出方波的

2、引腳。frequency,輸出的頻率,單位Hz,類型unsigned int。duration,頻率持續(xù)的時間,單位毫秒。類型unsigned long。返回值:無。10.1調(diào)聲函數(shù)調(diào)聲函數(shù)tone( )主要使用在Arduin10.1調(diào)聲函數(shù)2. noTone( )功能:停止由tone( )產(chǎn)生的方波。如果沒有使用tone( )將不會有效果。語法:noTone(pin)參數(shù):pin,所要停止產(chǎn)生聲音的引腳。返回值:無。注意:如果你想在多個引腳上產(chǎn)生不同的聲音,你要在對下個引腳使用tone( )前對剛才的引腳調(diào)用。10.1調(diào)聲函數(shù)2. noTone( )10.1調(diào)聲函數(shù)圖10-1 無源蜂鳴器模塊

3、3.無源蜂鳴器模塊無源蜂鳴器模塊(圖10-1)是一種一體化結(jié)構(gòu)的電子訊響器,采用直流電壓供電,廣泛應(yīng)用于計算機(jī)、報警器和電子玩具等電子設(shè)備中。如果使用的是模塊,則可直接連接到擴(kuò)展板;如果使用的是獨(dú)立揚(yáng)聲器或者蜂鳴器,則只需在其正極與Arduino數(shù)字引腳之間連接一個100的限流電阻即可,連接方法如圖10-2所示。圖10-2 揚(yáng)聲器、蜂鳴器模塊使用連接示意圖10.1調(diào)聲函數(shù)圖10-1 無源蜂鳴器模塊3.無源蜂鳴器模塊10.2脈沖寬度測量函數(shù)及超聲波測距Arduino提供的pulseIn( )函數(shù)用于檢測指定引腳上脈沖信號的寬度。10.2脈沖寬度測量函數(shù)及超聲波測距Arduino提供的pu10.2

4、.1 脈沖寬度測量函數(shù)其應(yīng)用有如下特點(diǎn):功能:檢測指定引腳上的脈沖信號寬度。例如,當(dāng)要檢測高電平脈沖時,pulseIn( )函數(shù)會等待指定引腳輸入的電平變高,在變高后開始計時,直到輸入電平變低時,計時停止。pulseIn( )函數(shù)會返回此脈沖信號持續(xù)的時間,即該脈沖的寬度。pulseIn( )函數(shù)還可以設(shè)定超時時間。如果超過設(shè)定時間仍未檢測到脈沖,則會退出pulseIn( )函數(shù)并返回0。當(dāng)沒有設(shè)定超時時間時,pulseIn( )函數(shù)會默認(rèn)1秒鐘的超時時間。語法:pulseIn(pin,value) pulseIn(pin,value,timeout)10.2.1 脈沖寬度測量函數(shù)其應(yīng)用有如下

5、特點(diǎn):10.2.1 脈沖寬度測量函數(shù)參數(shù):pin,需要讀取脈沖的引腳。value,需要讀取的脈沖類型,為HIGH或LOW。timeout,超時時間,單位為微秒,數(shù)據(jù)類型為無符號長整型。返回值:換行返回脈沖寬度,單位為微秒,數(shù)據(jù)類型為無符號長整型。如果在指定時間內(nèi)沒有檢測到脈沖,則返回0。10.2.1 脈沖寬度測量函數(shù)參數(shù):10.2.2 超聲波測距 超聲波是頻率高于20000Hz的聲波,它的指向性強(qiáng),能量消耗緩慢,在介質(zhì)中傳播的距離較遠(yuǎn),因而經(jīng)常用于測量距離。 超聲波傳感器的型號眾多,這里介紹一款常見的超聲波傳感器。10.2.2 超聲波測距 超聲波是頻率高于20010.2.2 超聲波測距1. S

6、R04超聲波傳感器SR04(圖10-5)是利用超聲波特性檢測距離的傳感器。其帶有兩個超聲波探頭,分別用做發(fā)射和接收超聲波。其測量范圍是3-450cm。1圖10-5 SR04超聲波傳感器10.2.2 超聲波測距1. SR04超聲波傳感器1圖10-10.2.2 超聲波測距2. 超聲波測距的工作原理如圖10-6所示,超聲波發(fā)射器向某一方向發(fā)射超聲波,在發(fā)射的同時開始計時;超聲波在空氣中傳播,途中碰到障礙物則立即返回,超聲波接收器收到反射波則立即停止計時。聲波在空氣中的傳播速度為340m/s,根據(jù)計時器記錄的時間C,即可計算出發(fā)射點(diǎn)距障礙物的距離s,即s=340m/st/2。這就是所謂的時間差測距法。

7、圖10-6 超聲波發(fā)射/接收示意圖10.2.2 超聲波測距2. 超聲波測距的工作原理圖10-610.2.2 超聲波測距3. 超聲波模塊引腳SR04超聲波模塊有4個引腳,各功能如表10-1所列。表10-1 SR04超聲波模塊引腳引腳名稱說明Vcc電源5VTrig觸發(fā)引腳Echo回饋引腳Gnd地10.2.2 超聲波測距3. 超聲波模塊引腳引腳名稱說明Vc10.2.2 超聲波測距4. 超聲波模塊的使用方法及時序圖如圖10-7所示,使用Arduino的數(shù)字引腳給SR04模塊的Trig引腳至少10的高電平信號,觸發(fā)SR04模塊的測距功能。如圖10-8所示,觸發(fā)測距功能后,樓塊會自動發(fā)送8個40kHz的超

8、聲波脈沖,并自動檢測是否有信號返回。如圖10-9所示,若有信號返回,則Echo引腳會輸出高電平,高電平持續(xù)的時間就是超聲波從發(fā)射到返回的時間。此時可以使用PulseIn( )函數(shù)獲取測距的結(jié)果,并計算出距被測物體的實(shí)際距離。這一步由模塊內(nèi)部自動完成。圖10-7 Arduino發(fā)送觸法信號圖10-8 超聲波模塊發(fā)出超聲波脈沖10.2.2 超聲波測距4. 超聲波模塊的使用方法及時序圖圖10.2.2 超聲波測距圖10-9 超聲波模塊返回測距結(jié)果10.2.2 超聲波測距圖10-9 超聲波模塊返回測距結(jié)果10.2.2 超聲波測距5. 連接示意圖超聲波測距示例連接示意圖如圖10-10所示。如圖10-10所

9、示,本示例將超聲波模塊的Trig引腳連接到Arduino的2號引腳,Echo引腳連接到Arduino的3號引腳。圖10-10 超聲波測距示例連接示意圖10.2.2 超聲波測距圖10-10 超聲波測距示例連接示意10.3 簡易電子琴例子圖10-12 簡易電子琴項(xiàng)目連接示意圖如圖10-12所示,本項(xiàng)目使用7個按鍵分別連接7個引腳,并給每個引腳加上10K的下拉電阻以穩(wěn)定引腳上的電平。Arduino通過依次檢查各按鍵的狀態(tài)來控制10號引腳上輸出的方波,以驅(qū)動蜂鳴器發(fā)出各種不同的音調(diào)。10.3 簡易電子琴例子圖10-12 簡易電子琴項(xiàng)目連接示意10.4 設(shè)置ADC參考電壓 基礎(chǔ) 概念在使用analogR

10、ead( )函數(shù)讀取模擬輸入口的電壓時,函數(shù)返回值的計算方法為analogRead(pin)函數(shù)返回值=當(dāng)用戶沒有設(shè)置參考電壓時,Arduino會默認(rèn)使用工作電壓作為參考電壓。大多數(shù)Arduino控制器的工作電壓都為5V,所以默認(rèn)參考電壓也為5V。當(dāng)要測量的電壓較小時或?qū)y量精度要求較高時,可以通過降低參考電壓來使測量結(jié)果更精準(zhǔn)。Arduino提供了內(nèi)部參考電壓,但內(nèi)部參考電壓并不準(zhǔn)確,如果使用的話反而會使精度降低。在實(shí)際應(yīng)用中,一般通過輸人高精度的外部參考電壓來提高檢測精度。在Arduino控制器上有一個AREF引腳,可以從該引腳給Arduino輸人外部參考電壓,同時需要使用analogRe

11、ference( )函數(shù)來設(shè)置Arduino使用外部參考電壓。其調(diào)用形式為:analogReference(type);10.4 設(shè)置ADC參考電壓 基礎(chǔ)在使用analogRea10.4 設(shè)置ADC參考電壓其中參數(shù)type的可用選項(xiàng)如表10-2所列。選項(xiàng)說明DEFAULT默認(rèn)當(dāng)前Arduino工作電壓作為參考電壓INTERNAL使用內(nèi)部參考電壓(當(dāng)前使用UNO時為1.1V,當(dāng)前使用ATmega8時為2.56V)該設(shè)置并不適用于Arduino MEGAINTERNAL1V1使用內(nèi)部1.1V參考電壓(僅適用于Arduino MEGA)INTERNAL2V56使用內(nèi)部2.56V參考電壓(僅適用于Ar

12、duino MEGA)EXTERNAL使用從AREF引腳輸入的外部參考電壓表10-2 ADC參考電壓可用配置10.4 設(shè)置ADC參考電壓其中參數(shù)type的可用選項(xiàng)如表110.5 外部中斷程序運(yùn)行過程中時常需要監(jiān)控一些事件的發(fā)生,如對某一傳感器的檢測結(jié)果做出反應(yīng)。使用輪詢的方式進(jìn)行檢測時效率較低,等待時間較長,而使用中斷方式進(jìn)行檢測則可以達(dá)到實(shí)時檢測的效果。圖10-13 中斷結(jié)構(gòu)10.5 外部中斷程序運(yùn)行過程中時常需要監(jiān)控一些事件的發(fā)生,10.5.1 外部中斷的使用1. 中斷引腳與中斷編號在不同型號的Arduino控制器上,中斷引腳的位置也不相同,只有中斷信號發(fā)生在帶有外部中斷功能的引腳上,Ar

13、duino才能捕獲到該中斷信號并做出響應(yīng),表10-3列舉了Arduino常見型號控制器的中斷引腳所對應(yīng)的外部中斷編號。Arduino型號int0int1int2int3int4int5UNO23-MEGA2321201918Leonardo3201-Due所有引腳均可使用外部中斷表10-3 常見Arduino控制器時中斷編號10.5.1 外部中斷的使用1. 中斷引腳與中斷編號Ardu10.5.1 外部中斷的使用2. 中斷模式為了設(shè)置中斷模式,還需要了解設(shè)備觸發(fā)外部中斷的輸入信號類型。中斷模式也就是中斷觸發(fā)的方式。在大多數(shù)Arduino上支持表10-4中的四種中斷觸發(fā)方式。模式名稱說明LOW低電

14、平觸發(fā)CHANGE電平變化觸發(fā),即高電平變低電平、低電平變高電平RISING上升沿觸發(fā),即低電平變高電平FALLING下降沿觸發(fā),即高電平變低電平表10-4 可用的中斷觸發(fā)模式10.5.1 外部中斷的使用2. 中斷模式模式名稱說明LOW10.5.1 外部中斷的使用3. 中斷函數(shù)除了設(shè)置中斷模式外,還需要編寫一個響應(yīng)中斷的處理程序中斷函數(shù),當(dāng)中斷被觸發(fā)后,便可以讓Arduino運(yùn)行該中斷函數(shù)。中斷函數(shù)就是當(dāng)中斷被觸發(fā)后要去執(zhí)行的函數(shù),該函數(shù)不能帶有任何參數(shù),且返回類型為空,如:void Hello( ) Serial. println(hello);當(dāng)中斷被觸發(fā)后,Arduino便會執(zhí)行該函數(shù)中

15、的語句。10.5.1 外部中斷的使用3. 中斷函數(shù)10.5.1 外部中斷的使用這些準(zhǔn)備工作完成后,還需要在setup( )中使用attachInterrupt( )函數(shù)對中斷引腳進(jìn)行初始化配置,以開啟Arduino的外部中斷功能,其用法如下。(1)attachInterrupt(interrupt, function, mode)功能:對中斷引腳進(jìn)行初始化配置。參數(shù):Interrupt,中斷編號,注意,這里的中斷編號并不是引腳編號。function,中斷函數(shù)名,當(dāng)中斷被觸發(fā)后即會運(yùn)行此函數(shù)名稱所代表的中斷函數(shù)。mode,中斷模式。(2)detachInterrupt(interrupt)功能:禁用外部中斷。參數(shù):interrupt,需要禁用的中斷編號。10.5.1 外部中斷的使用這些準(zhǔn)備工作完成后,還需要在se10.5.2 外部中斷觸發(fā)蜂鳴器報警數(shù)字紅外障礙傳感器(圖1014)是一種通過紅外光反射來檢測障礙物的傳感器。檢測模塊會發(fā)出調(diào)制過的38kHz紅外光,紅外光經(jīng)障礙物反射后由一體化接收頭接收。當(dāng)檢測范圍內(nèi)有障礙物時,模塊輸出低電平;當(dāng)無障礙物時,模塊輸出高電平。圖10-14 數(shù)字紅外障礙傳感器10.5.2 外部中斷觸發(fā)蜂鳴器報警數(shù)字紅外障礙傳感器(圖110.6 本章小結(jié)本章主要介紹了Arduino I/O口的高級應(yīng)用

溫馨提示

  • 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

提交評論