例程19-紅外遙控_第1頁
例程19-紅外遙控_第2頁
例程19-紅外遙控_第3頁
例程19-紅外遙控_第4頁
例程19-紅外遙控_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Arduino視頻教程智宇科技第19講紅外遙控Arduino視頻教程智宇科技紅外接收頭介紹紅外遙控器發(fā)出的信號是一連串的二進制脈沖碼。為了使其在無線傳輸過程中免受其他紅外信號的干擾,通常都是先將其調制在特定的載波頻率上,然后再經(jīng)紅外發(fā)射二極管發(fā)射出去,而紅外線接收裝置則要濾除其他雜波, 叧接收該特定頻率的信號并將其還原成二進制脈沖碼,也就是解調。內置接收管將紅外發(fā)射管發(fā)射出來的光信號轉換為微弱的電信號,此信號經(jīng)由IC內部放大器進行放大,然后通過自動增益控制、帶通濾波、解調變、波形整形后還原為遙控器發(fā)射出的原始編碼,經(jīng)由接收頭的信號輸出腳輸入到電器上的編碼識別電路。Arduino視頻教程智宇科技

2、要想對某一遙控器進行解碼必須要了解該遙控器的編碼方式。本產(chǎn)品使用的遙控器的碼方式為:NEC協(xié)議。下面就介紹一下NEC協(xié)議的特點:(1)8位地址位,8位命令位(2) 為了可靠性地址位和命令位被傳輸兩次(3) 脈沖位置調制(4) 載波頻率38khz(5) 每一位的時間為1.125ms或2.25ms 邏輯 0和1的定義如下圖邏輯1的是由560us的高電平和1.69ms的低電平組成的脈沖表示Arduino視頻教程智宇科技邏輯0的是由560us的高電平和565us的低電平組成的脈沖表示重復脈沖重復碼的格式是由9ms的AGC高電平和2.25ms的低電平及一個560us的高電平組成。如右圖所示Arduino

3、視頻教程智宇科技按鍵按下立刻松開的發(fā)射脈沖:下圖片顯示了NEC的協(xié)議典型的脈沖序列。一個信息發(fā)送是由9mS的AGC自動增益控制脈沖開頭,在早期的IR紅外命令。中用來設置增益。接著是4.5mS空閑,然后是地址、地址和命令都傳送2次,第二次的地址和命令是反碼,可以用來校驗接收到的信息。總的傳輸時間是固定的,因為每一位都有反碼傳送。Arduino視頻教程智宇科技按鍵按下一段時間才松開的發(fā)射脈沖:一個命令發(fā)送一次,即使在遙控器上的按鍵仍然按下。當按鍵一直按下時,第一個110ms的脈沖與上圖一樣,之后每110ms重復代碼傳輸一次。返個重復代碼是由一個9ms的高電平脈沖和一個2.25ms 低電平和560s

4、的高電平組成,直到按鍵釋放。Arduino視頻教程智宇科技紅外接收頭的引腳與連線如左圖將VOUT接到模擬口,GND接到實驗板上的GND,VCC接到實驗板上的+5v。實驗連線如右圖將紅外接收頭按照上述方法接好,將VOUT接到數(shù)字11口引腳,將LED燈通過電阻接到數(shù)字引腳2,3,4,5,6,7。Arduino視頻教程智宇科技遙控器鍵值可先用串口顯示對應按鍵編碼,再修改程序使之匹配, 以適應不同遙控器示例遙控器按鍵編碼“0” = 0x00FF6897 ; “1”=0x00ff30CF ; “4”=0x00FF10EF ; “7”=0x00FF42BD ;“” = 0x00FF9867 ;“C” =0

5、x00FFB04F ;“2”=0x00FF18E7 ; “5”=0x00FF38C7 ; “8”=0x00FF4AB5 ;“3”=0x00FF7A85 ; “6”=0x00FF5AA5 ; “9”=0x00FF52AD ;編譯前注意:復制2.例程代碼例程19-紅外遙控里的庫文件夾IRremote到Arduino的安裝目錄:Arduinolibraries目錄下,缺失庫文件可能編譯出錯。Arduino視頻教程智宇科技參考源程序如下:#include int RECV_PIN = 11; int LED1 = 2;int LED2 = 3; int LED3 = 4; int LED4 = 5;

6、int LED5 = 6; int LED6 = 7;long on1 = 0x00FF6897;/編碼示例,與發(fā)送匹配用long off1 = 0x00FF30CF; long on2 = 0x00FF9867; long off2 = 0x00FF18E7; long on3 = 0x00FFB04F;long off3 = 0x00FF7A85;Arduino視頻教程智宇科技long on4 = 0x00FF10EF; long off4 = 0x00FF42BD; long on5 = 0x00FF38C7; long off5 = 0x00FF4AB5; long on6 = 0x0

7、0FF5AA5; long off6 = 0x00FF52AD; IRrecv irrecv(RECV_PIN); decode_results results;/ Dumps out the decode_results structure./ Call this after IRrecv:decode()/ void * to work around compiler issue/void dump(void *v) /decode_results *results = (decode_results *)v void dump(decode_results *results) int c

8、ount = results-rawlen;if (results-decode_type = UNKNOWN)Serial.println(Could not decode message);Arduino視頻教程智宇科技elseif (results-decode_type = NEC)Serial.print(Decoded NEC: );else if (results-decode_type = SONY)Serial.print(Decoded SONY: );else if (results-decode_type = RC5)Serial.print(Decoded RC5:

9、);else if (results-decode_type = RC6)Serial.print(Decoded RC6: );Serial.print(results-value, HEX);Arduino視頻教程智宇科技Serial.print( ();Serial.print(results-bits, DEC);Serial.println( bits);Serial.print(Raw (); Serial.print(count, DEC); Serial.print(): );for (int i = 0; i rawbufi*USECPERTICK, DEC);elseSer

10、ial.print(-(int)results-rawbufi*USECPERTICK, DEC);Serial.print( );Serial.println();Arduino視頻教程智宇科技void setup()pinMode(RECV_PIN, INPUT); pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); pinMode(LED3, OUTPUT); pinMode(LED4, OUTPUT); pinMode(LED5, OUTPUT); pinMode(LED6, OUTPUT);pinMode(13, OUTPUT); Serial

11、.begin(9600);irrecv.enableIRIn(); / Start the receiverint on = 0;unsigned long last = millis();/*應用millis函數(shù)可獲取機器運行的時間長度,單位ms。系統(tǒng)最長的記錄時間為9小時22分,如果超出時間將從0開始。函數(shù)返回值為unsigned long型,無參數(shù)。 */void loop()Arduino視頻教程智宇科技if (irrecv.decode(&results)/ If its been at least 1/4 second since the last/ IR received, to

12、ggle the relay if (millis() - last 250)on = !on;digitalWrite(8, on ? HIGH : LOW); digitalWrite(13, on ? HIGH : LOW); dump(&results);if (results.value = on1 ) digitalWrite(LED1, HIGH);if (results.value = off1 ) digitalWrite(LED1, LOW);if (results.value = on2 ) digitalWrite(LED2, HIGH);if (results.val

13、ue = off2 ) digitalWrite(LED2, LOW);/Arduino視頻教程智宇科技if (results.value = on3 )digitalWrite(LED3, HIGH);if (results.value = off3 ) digitalWrite(LED3, LOW);if (results.value = on4 ) digitalWrite(LED4, HIGH);if (results.value = off4 ) digitalWrite(LED4, LOW);if (results.value = on5 ) digitalWrite(LED5, HIGH);if (results.value = off5 ) digitalWrit

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論