紅外接收
出自YFRobotwiki
產品簡介
紅外接收模塊,採用HS0038一體化紅外遙控接收元件,中心頻率為38.0kHz,周期26us,可抗自然光的反射干擾。
我們常見的紅外遙控系統一般分發射和接收兩部分,這裡發射部分使用定製紅外遙控器,接收部分使用紅外接收模塊,遙控器發出紅外線,接收模塊將接收到的紅外線遙控信號,經過放大、解調和整形後輸出功能指令信號,送至微處理器進行識別和處理,從而實現遙控過程。
規格參數
- 供電電壓:DC3v3-5V
- 載波頻率:38 kHz
- 周期:26μs
- 接收距離:10m
- 安裝孔徑:3MM
- 模塊尺寸:28*21*11MM(長*寬*高) mini遙控器:88*40*7MM(長*寬*高)
- 孔間距:15MM
- 模塊重量:2.2g Mini遙控器:12.6g
主要應用
廣泛應用於:空調、風扇、暖風機、加濕器、電視、DVD、機頂盒、車載移動DVD、硬盤播放器、多媒體組合音響、數碼相框、手機等家電產品,電腦及周邊設備,感應潔具,儀錶,工業自動化,遙控玩具,通訊器材,照相器材,事務機器,金融電子,汽車電子,燈飾照明等領域。
引腳說明
- 1. G -- Gnd(地)
- 2. V -- Vcc(電源+5V)
- 3. S -- Sign(信號)
應用示例
提示:以下程序需使用到 IRremote庫文件,文件下載地址見頁末 - 參考資料。下載後將其解壓至arduinoIDE安裝目錄/libraries文件夾中,例如: "D:\Program Files\Arduino\arduino-1.6.4-windows\arduino-1.6.4\libraries"。
電路連接示意圖
- 紅外接收模塊的 G、V、S分別連接 Arduino UNO的GND、VCC(+5V)、D11引腳。
示例代碼
示例一:獲取鍵值
/*
* 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.print("irCode: ");
Serial.println(results.value, HEX);
delay(200);
irrecv.resume(); // Receive the next value
}
}
程序下載地址:IRrecvDemo
程序運行結果:接收按鍵值,並串口打印。偶爾出現 "FFFFFFFF" 碼值,屬於正常現象,可適當延長延時時間。
最終整理按鍵值表格:
| 遙控器字符 | 鍵值 | 遙控器字符 | 鍵值 |
| 紅色/關閉鍵 | 0xFFA25D | MENU | 0xFFE21D |
| TEST | 0xFF22DD | + | 0xFF02FD |
| 返回鍵 | 0xFFC23D | 快退/左2三角 | 0xFFE01F |
| 播放/一個三角 | 0xFFA857 | 快進/右2三角 | 0xFF906F |
| 0 | 0xFF6897 | - | 0xFF9867 |
| C | 0xFFB04F | 1 | 0xFF30CF |
| 2 | 0xFF18E7 | 3 | 0xFF7A85 |
| 4 | 0xFF10EF | 5 | 0xFF38C7 |
| 6 | 0xFF5AA5 | 7 | 0xFF42BD |
| 8 | 0xFF4AB5 | 9 | 0xFF52AD |
示例二:紅外遙控
// Infrared remote control test
#include <IRremote.h>
int RECV_PIN = 11;
int LED_PIN = 13;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
pinMode(LED_PIN,OUTPUT);
irrecv.enableIRIn(); // Start the receiver
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
controlLED(&results);
irrecv.resume(); // Receive the next value
}
}
//Control the LED
void controlLED(decode_results *results) {
switch(results->value){
case 0xFFA25D:
digitalWrite(LED_PIN,LOW);
break;
case 0xFFE21D:
digitalWrite(LED_PIN,HIGH);
break;
}
}
程序下載地址:IRrecvControl
程序運行結果:按“MENU”按鈕,點亮LED,按下“關閉”按鈕,關閉LED。
參考資料
更多建議和問題歡迎反饋至 YFRobot論壇
購買方式:YFRobot 電子工作室