在红外遥控中,控制LED灯亮灭通常使用键值码,因为用户码是遥控器的“身份标识”(同一品牌同型号遥控器可能相同),而键值码才对应具体按键的功能。
简单例程(以Arduino为例)
硬件需求
- Arduino开发板(如UNO)
- 红外接收模块(如VS1838B)
- LED灯、电阻(限流)
- 遥控器(需先解码出键值)
代码实现
#include <IRremote.h>
// 定义引脚
const int irReceiverPin = 2; // 红外接收模块引脚
const int ledPin = 13; // LED引脚
// 定义键值(需替换为实际解码后的键值)
const unsigned int KEY_ON = 0x12345678; // 开灯键值
const unsigned int KEY_OFF = 0x87654321; // 关灯键值
IRrecv irrecv(irReceiverPin);
decode_results results;
void setup() {
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW); // 初始关灯
irrecv.enableIRIn(); // 启用红外接收
Serial.begin(9600); // 串口用于调试
}
void loop() {
if (irrecv.decode(&results)) { // 接收红外信号
Serial.println(results.value, HEX); // 打印接收到的键值
// 根据键值控制LED
if (results.value == KEY_ON) {
digitalWrite(ledPin, HIGH); // 开灯
Serial.println("LED ON");
} else if (results.value == KEY_OFF) {
digitalWrite(ledPin, LOW); // 关灯
Serial.println("LED OFF");
}
irrecv.resume(); // 继续接收下一个信号
}
}
使用说明
1. 先获取键值:将代码中的 KEY_ON 和 KEY_OFF 替换为实际遥控器按键解码后的键值(可通过串口打印查看)。
2. 连线注意:红外接收模块的VCC接5V,GND接地,OUT接Arduino的2号引脚,LED通过电阻接13号引脚。
3. 调试技巧:先通过串口打印确认能正确接收键值,再进行控制逻辑编写。 |