紅外線(Infrared,IR)的通訊分為接收與發射模組,紅外線數不可見光,波長在約在770nm(奈米)至1mm(毫米)之間。紅外線的通訊編碼規則,由紅外線數據協會(IrDA,Infrared Data Association),於1994年時發表了IrDA1.0通用規範,但目前市面上的紅外線產品所使用的規格除了IrDA規範之外,還有部分廠商自行開發出紅外線規格,如NEC的PD6122及Philips的RC-5、RC-6。
本實作使用VS1938B的紅外線接收模組,與一般通用之NEC的PD6122編碼紅外線遙控器。
紅外線接收模組只有三支接腳,價格便宜一隻約2~5元(台幣),外觀尺寸與接腳說明如下圖。
測試程式碼如下,按下遙控器上的按鍵即會將其對應代碼輸出於序列埠通訊視窗。
#include <IRremote.h> //引入紅外線通訊函數庫
const int RECV_PIN = 2; //訊號接腳是2號
IRrecv irrecv(RECV_PIN); //建置IR接收器
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); //啟動紅外線接收功能
irrecv.blink13(true); //接收到訊號閃一下主板上的指示燈L
}
void loop() {
if (irrecv.decode(&results)) //接收並解碼紅外線訊號
{
if (results.decode_type == NEC)
Serial.print("NEC: ");
else if (results.decode_type == SONY)
Serial.print("SONY: ");
else if (results.decode_type == RC5)
Serial.print("RC5: ");
else if (results.decode_type == RC6)
Serial.print("RC6: ");
else if (results.decode_type == UNKNOWN)
Serial.print("UNKNOWN: ");
Serial.println(results.value, HEX); //輸出遙控案件的代碼
irrecv.resume(); //重置IR接收器
}
}
以下是實作後取得的代碼:
0-->NEC: FF6897 1-->NEC: FF30CF 2-->NEC: FF18E7 3-->NEC: FF7A85 4-->NEC: FF10EF 5-->NEC: FF38C7 6-->NEC: FF5AA5 7-->NEC: FF42BD 8-->NEC: FF4AB5 9-->NEC: FF52AD CH- -->NEC: FFA25D CH -->NEC: FF629D CH+ -->NEC: FFE21D |<< -->NEC: FF22DD >>| -->NEC: FF02FD >|| -->NEC: FFC23D - -->NEC: FFE01F + -->NEC: FFA857 EQ -->NEC: FF906F



