《Arduino技術(shù)及應(yīng)用》課件-第17章紅外遙控_第1頁
《Arduino技術(shù)及應(yīng)用》課件-第17章紅外遙控_第2頁
《Arduino技術(shù)及應(yīng)用》課件-第17章紅外遙控_第3頁
《Arduino技術(shù)及應(yīng)用》課件-第17章紅外遙控_第4頁
《Arduino技術(shù)及應(yīng)用》課件-第17章紅外遙控_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Arduino技術(shù)及應(yīng)用第17章 紅外遙控Arduino技術(shù)及應(yīng)用第17章 紅外遙控目錄IRremote類庫成員函數(shù)紅外接收紅外發(fā)射17.2 17.117.3目錄IRremote類庫成員函數(shù)紅外接收紅外發(fā)射17.2 1紅外遙控總述Arduino可以使用的無線模塊很多,驅(qū)動方式各有不同。本章將要介紹一種最常用、成本最低的無線通信方式紅外通信。紅外通信是一種利用紅外光編碼進行數(shù)據(jù)傳輸?shù)臒o線通信方式,是目前使用最廣泛的一種通信和遙控手段。由于紅外線遙控裝置具有體積小、功耗低、成本低等特點,因而被廣泛應(yīng)用于各個領(lǐng)域。生活中常見的電視機遙控器和空調(diào)遙控器,均使用紅外線遙控。紅外遙控總述Arduino可以

2、使用的無線模塊很多,驅(qū)動方式各17.1 IRremote類庫成員函數(shù)1. IRrecv 類IRrecv類可用于接收紅外信號并對其解碼。在使用該類之前,需要實例化一個該類的對象。其成員函數(shù)如下。(1)IRrecv( )功能:IRrecv類的構(gòu)造函數(shù)。可用于指定紅外一體化接收頭的連接引腳。語法:IRrecvobject(recvpin)參數(shù):object,用戶自定義的對象名。recvpin,連接到紅外一體化接收頭的Arduino引腳編號。17.1 IRremote類庫成員函數(shù)1. IRrecv 類17.1 IRremote類庫成員函數(shù)(2)enableIRIn( )功能:初始化紅外解碼。語法:IR

3、recv. enableIRIn( )參數(shù):IRrecv,個IRrecv類的對象。返回值:無。(3)decode( )功能:檢查是否接收到編碼。語法:IRrecv. decode(&results)參數(shù):IRrecv,一個IRrecv類的對象。results,一個decode_results類的對象。返回值:int型值,為0表示接收到編碼; 為1表示沒有接收到編碼。17.1 IRremote類庫成員函數(shù)(2)enableI17.1 IRremote類庫成員函數(shù)(4)resume( )功能:接收下一個編碼。語法:IRrecv.resume( )參數(shù):IRrecv,個IRrecv類的對象。返回值:

4、無。2.IRsend 類IRsend類可以對紅外信號編碼并發(fā)送。17.1 IRremote類庫成員函數(shù)(4)resume(17.1 IRremote類庫成員函數(shù)(1)IRsend( )功能:IRSend類的構(gòu)造函數(shù)。語法:IRsendobject( )參數(shù):object,一個IRsend類的對象。(2)sendNEC( )功能:以NEC編碼格式發(fā)送指定值。語法:IRsend. sendNEC(data,nbits)參數(shù):IRsend,一個IRsend類的對象。data,發(fā)送的編碼值。nbits,編碼位數(shù)。返回值:無。17.1 IRremote類庫成員函數(shù)(1)IRsend(17.1 IRrem

5、ote類庫成員函數(shù)(3)sendSony( )功能:以Sony編碼格式發(fā)送指定值。語法:Irsend.sendSony(data,nbits)參數(shù):IRsend,一個IRsend類的對象。data,發(fā)送的編碼值。nbits,編碼位數(shù)。返回值:無。(4)sendRaw( )功能:發(fā)送原始紅外編碼信號。語法:IRsend. sendRaw(buf,len,hz)參數(shù):IRsend,一個IRsend類的對象。buf,存儲原始編碼的數(shù)組。len,數(shù)組長度。hz,紅外發(fā)射頻率。返回值:無。17.1 IRremote類庫成員函數(shù)(3)sendSon17.1 IRremote類庫成員函數(shù)除此之外還有如下函數(shù)

6、,用于其他常見協(xié)議的紅外信號發(fā)送:sendRC5( );sendRC6( );sendDISH( );sendSharp( );sendPanasonic( );sendJVC( );在紅外通信中的兩端,一端進行紅外信號的編碼并發(fā)送,另一端接收紅外信號并解碼。以下示例中將使用紅外遙控器作為紅外信號的發(fā)送端,使用Arduino和一體化接收頭作為紅外信號的接收端。17.1 IRremote類庫成員函數(shù)除此之外還有如下函數(shù),17.2紅外接收要想使用遙控器來控制Arduino,首先需了解遙控器各按鍵對應(yīng)的編碼,不同的遙控器,不同的按鍵,不同的協(xié)議,都對應(yīng)著不同的編碼??赏ㄟ^IRremote的示例程序來

7、獲取遙控器發(fā)送信號的編碼。紅外信號接收端的制作只需將紅外一體化接收頭按圖17-1連人Arduino即可,示例中將紅外一體化接收頭的輸出腳連接到Arduino的11號引腳。17.2紅外接收要想使用遙控器來控制Arduino,首先需了17.2紅外接收這里使用以下程序?qū)t外信號進行解碼,可以通過選擇“文件”“示例”IRremoteIRrecvDemo菜單項找到該程序。下載好該示例程序后,使用遙控器向紅外一體化接收頭發(fā)送信號,并在串口監(jiān)視器中査看,則會看到如圖17-2所示的信息。17.2紅外接收這里使用以下程序?qū)t外信號進行解碼,可以通過17.2紅外接收遙控器的每個按鍵都對應(yīng)了不同的編碼,不同的遙控器

8、使用的編碼方式也不相同。之所以出現(xiàn)“FFFFFFFF”編碼,是因為使用的是NEC協(xié)議的遙控器,當(dāng)按住某按鍵不放開時,其會發(fā)送重復(fù)編碼“FFFFFFFF”。對于其他協(xié)議的遙控器,則會重復(fù)發(fā)送其對應(yīng)的編碼。在以上示例中,通過語句int RECV_PIN = 11;IRrecvirrecv;實例化了一個IRrecv類的紅外接收對象irreev,并將紅外接收頭引腳連接到了Arduino的11號引腳上;接著在setup( )中使用enableIRIn( )函數(shù)初始化紅外解碼功能。在loop( )中使用decode( )函數(shù)檢査是否收到編碼,并將結(jié)果存儲到decode_ results類的results對

9、象中。解碼后的結(jié)果會保存在results. value中;最后通過 resume( )函數(shù)開始接收下一個編碼。17.2紅外接收遙控器的每個按鍵都對應(yīng)了不同的編碼,不同的遙17.2紅外接收如果要使用紅外遙控器來控制Arduino上連接的設(shè)備,則只需將解碼后的結(jié)果results.value與設(shè)定功能的編碼進行比對,如果一致,便執(zhí)行相應(yīng)的功能,如在以上程序中添加如下語句:switch case 0 xFFA25D:break ; /按鍵對應(yīng)的動作 case 0 xFFE21D:break;/按鍵對應(yīng)的動作 case 0 xFF9867:break;/按鍵對應(yīng)的動作.17.2紅外接收如果要使用紅外遙控

10、器來控制Arduino上連17.3紅外發(fā)射除了使用紅外遙控器發(fā)射紅外信號外,也可以使用Arduino來發(fā)送經(jīng)過編碼的紅外信號。如圖17-3所示,只需將紅外發(fā)射管與Arduino連接即可,連接方式與普通LED類似,只要串聯(lián)一個限流電阻即可。另外,IRremote庫只能使用3號引腳作為紅外信號輸出腳。 17.3紅外發(fā)射除了使用紅外遙控器發(fā)射紅外信號外,也可以使用17.3紅外發(fā)射可以通過選擇“文件”“示例”IRremoteIRrecvDemo菜單項找到該示例程序。#includeIRsend irsend;void setup( ) Serial. begin(9600); /初始化串口通信 voi

11、d loop( ) if (Serial. read( ) ! = -1) for (int i = 0; i3; i+) irsend.sendSony(0 xa90, 12); /發(fā)送索尼電視機電源開關(guān)對應(yīng)的編碼 delay(40); 17.3紅外發(fā)射可以通過選擇“文件”“示例”IRremo17.3紅外發(fā)射這樣便可模擬紅外遙控器發(fā)射的經(jīng)過編碼的紅外信號了。雖然紅外光不可見,但可以通過手機或者電腦的攝像頭來觀察紅外LED是否發(fā)光,以便排除硬件問題。還可以使用兩塊Arduino進行紅外無線通信。在一定環(huán)境下,即使接收模塊與發(fā)送模塊沒有相對,紅外信號也可以靠物體反射進行傳播。以上程序中使用了for循環(huán),發(fā)送了3次Sony紅外編碼,這是因為在Sony、RC5、RC6協(xié)議中都規(guī)定編碼要發(fā)送3次。IRremote庫還可以使用其他函數(shù)來發(fā)送不同編碼的紅外信號,如使用sendNEC( )發(fā)送NEC編碼的紅外信號,使用sendPanasonic( )發(fā)送松下編碼的紅外信號等。除了這些常見標(biāo)準協(xié)議外,IRremote庫還支持發(fā)送自定義的原始編碼。17.3紅外

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論