首先至github下載IRRemote 函式庫,並加入至 Arduino Libraries 資料夾底下。
- 照下表把紅外線接收器跟 Arduino 連接起來:
紅外線接收器接腳 | Arduino 接腳 |
---|---|
GND (-) | 接到 GND |
Vcc (+ 或 V+) | 接到 +5V 電源 |
Vout (或 OUT) | 接到 pin 2。你可以接到其它 Digital pin,但程式要配合修改 |
紅外線接收器腳位 |
紅外線接收器完成 |
紅外線接收器一旦接收到訊號,蜂鳴器將即時啟動,以利確認紅外線已經接收到了。
#include// 引用 IRRemote 函式庫 const int irReceiverPin = 2; // 紅外線接收器 OUTPUT 訊號接在 pin 2 IRrecv irrecv(irReceiverPin); // 定義 IRrecv 物件來接收紅外線訊號 decode_results results; // 解碼結果將放在 decode_results 結構的 result 變數裏 int Buzzerpin = 3; void setup() { Serial.begin(9600); // 開啟 Serial port, 通訊速率為 9600 bps irrecv.enableIRIn(); // 啟動紅外線解碼 pinMode(Buzzerpin,OUTPUT); digitalWrite(Buzzerpin,LOW); //蜂鳴器初始不鳴叫 } // 顯示紅外線協定種類 void showIRProtocol(decode_results *results) { Serial.print("Protocol: "); // 判斷紅外線協定種類 switch(results->decode_type) { case NEC: Serial.print("NEC"); break; case SONY: Serial.print("SONY"); break; case RC5: Serial.print("RC5"); break; case RC6: Serial.print("RC6"); break; case DISH: Serial.print("DISH"); break; case SHARP: Serial.print("SHARP"); break; case PANASONIC: Serial.print("PANASONIC"); break; case JVC: Serial.print("JVC"); break; case SANYO: Serial.print("SANYO"); break; case MITSUBISHI: Serial.print("MITSUBISHI"); break; case SAMSUNG: Serial.print("SAMSUNG"); break; case LG: Serial.print("LG"); break; default: Serial.print("Unknown encoding"); } // 把紅外線編碼印到 Serial port Serial.print("Type: "); Serial.print(results->decode_type); Serial.print(", irCode: "); Serial.print(results->value, HEX); // 紅外線編碼 Serial.print(", bits: "); Serial.println(results->bits); // 紅外線編碼位元數 } void loop() { if (irrecv.decode(&results)) { // 解碼成功,收到一組紅外線訊號 digitalWrite(Buzzerpin,HIGH); delay(10); digitalWrite(Buzzerpin,LOW); showIRProtocol(&results); // 顯示紅外線協定種類 irrecv.resume(); // 繼續收下一組紅外線訊號 } }
參考資料
- http://yehnan.blogspot.tw/2013/05/arduino.html
- http://coopermaa2nd.blogspot.tw/2011/03/11.html
- http://www.takobear.tw/201702608526356260322804024687/-arduino-irremote-homemade