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