Arduino项目中红外遥控器和红外接收模块怎么用
红外遥控系统由红外接收模块(IR Receiver)和遥控器组成。硬件连接红外接收模块(如VS1838B、TSOP1738)通常有3个引脚:OUT → Arduino 数字引脚(如D11)。
·
红外遥控系统由红外接收模块(IR Receiver)和遥控器组成。
硬件连接
红外接收模块(如VS1838B、TSOP1738)通常有3个引脚:
VCC → Arduino 5V
GND → Arduino GND
OUT → Arduino 数字引脚(如D11)
注意:
- 确保模块与遥控器之间无遮挡,避免强光干扰。
- 部分模块工作电压为3.3V,需确认规格
代码
第一步:安装库
使用 IRremote库(最新版为IRremote.hpp):
在Arduino IDE中:工具 > 管理库 > 搜索“IRremote”并安装。
第二步:读取遥控器键值
#include <IRremote.hpp> // 使用新版库
#define RECV_PIN 11 // 红外接收器接D11
void setup() {
Serial.begin(9600);
IrReceiver.begin(RECV_PIN, ENABLE_LED_FEEDBACK); // 启动接收
}
void loop() {
if (IrReceiver.decode()) {
Serial.print("键值(十六进制): 0x");
Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX);
IrReceiver.resume(); // 继续接收下一信号
}
delay(100);
}
操作:按下遥控器按键后,串口监视器显示十六进制键值(如0xFFA25D)。
第三步:根据键值控制LED开关:
#include <IRremote.hpp>
#define RECV_PIN 11
#define LED_PIN 13
void setup() {
pinMode(LED_PIN, OUTPUT);
IrReceiver.begin(RECV_PIN);
}
void loop() {
if (IrReceiver.decode()) {
unsigned long keyValue = IrReceiver.decodedIRData.decodedRawData;
switch (keyValue) {
case 0xFFA25D: // 按键1:开灯
digitalWrite(LED_PIN, HIGH);
break;
case 0xFFE01F: // 按键2:关灯
digitalWrite(LED_PIN, LOW);
break;
}
IrReceiver.resume();
}
}
常见问题
- 键值不一致:不同遥控器协议(NEC、SONY等)编码不同,需先读取实际键值。
- 信号干扰:避免强光直射接收头,或增加软件滤波。
- 库冲突:新版Arduino IDE需使用IRremote.hpp而非旧版IRremote.h
扩展应用
- 控制继电器/电机:替换LED控制代码为继电器引脚操作。
- 万能遥控器:记录键值实现自定义控制。
更多协议详解参考官网文档:IRremote库文档
更多推荐



所有评论(0)