07紅外線遙控器

紅外接收

參考「

使用 IRremote 測試紅外線接收器

如果想要用紅外線接收器解碼遙控器的紅外線指令,可以使用 IRremote 程式庫搭配 Arduino IDE 來快速地體驗一下,可以到 IRremote 的 Github 按下「Download ZIP」,會下載一個 Arduino-IRremote-master.zip 檔案,解開後將其中目錄更名為 Arduino-IRremote,並將整個目錄置於 Arduino IDE 安裝目錄的 libraries 之中:

接著開啟 Arduino IDE,就可以在「檔案/範例」中,看到 IRremote 相關範例

如果想測試一下電視遙控器的指令解碼,可以開啟「IRrecvDemo」範例,電路如先前看到的圖銜接就可以了,這個範例程式會從 D11 接收紅外線訊號並解碼,直接將程式上傳至 Arduino,並執行「工具/序列埠監控視窗」,然後按下電視遙控器的電源鍵,你應該可以看到對應的解碼訊息出現:

/*

* IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv

* An IR detector/demodulator must be connected to the input RECV_PIN.

* Version 0.1 July, 2009

* Copyright 2009 Ken Shirriff

* http://arcfn.com

*/

#include <IRremote.h>

int RECV_PIN = 11;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()

{

Serial.begin(9600);

irrecv.enableIRIn(); // Start the receiver

}

void loop() {

if (irrecv.decode(&results)) {

// Serial.println(results.value, HEX);

Serial.println(results.value); //不採用16進位

irrecv.resume(); // Receive the next value

}

delay(100);

}

測試龍越百變積木R722(沒有成功,因為每個鍵有很多組回應數字!!)

F4:FDAC0152、E70D09FA

上:A5EF69BF、1CEC0831、4A08760D、2030F73A

下:6E824D50、25AE7EE1、1410D334

右轉:DB6DCBF4、49B0F624、EAB29505

左轉:BCFF26FC

測試掏寶買的遙控器(2016.02.13測試,使用上方的程式來測試)

上:16736925(FF629D)

下:16754775(FFA857)

左:16720605(FF22DD)

右:16761405(FFC23D)

OK:16712445(FF02FD)

1:16738455(FF6897)

2:16750695(FF9867)

3:16756815(FFB04F)

4:16724175(FF30CF)

5:16718055(FF18E7)

6:16743045(FF7A85)

7:16716015(FF10EF)

8:16726215(FF38C7)

9:16734885(FF5AA5)

0:16730805(FF4AB5)

*:16728765(FF42BD)

#:16732845(FF52AD)

=========================================

葉難: Arduino練習:紅外線傳送與接收

http://yehnan.blogspot.tw/2013/05/arduino.html

#include <IRremote.h>

int RECV_PIN = 2; // 使用數位腳位2接收紅外線訊號

IRrecv irrecv(RECV_PIN); // 初始化紅外線訊號輸入

decode_results results; // 儲存訊號的結構

void setup()

{

Serial.begin(115200);

irrecv.blink13(true); // 設為true的話,當收到訊號時,腳位13的LED便會閃爍

irrecv.enableIRIn(); // 啟動接收

}

void loop() {

if (irrecv.decode(&results)) { // 接收紅外線訊號並解碼

Serial.print("results value is "); // 輸出解碼後的資料

Serial.print(results.value, HEX);

Serial.print(", bits is ");

Serial.print(results.bits);

Serial.print(", decode_type is ");

Serial.println(results.decode_type);

irrecv.resume(); // 準備接收下一個訊號

}

}

http://blog.davidou.org/archives/710