连接红外接收头到 Arduino:
VCC -> Arduino 5V
GND -> Arduino GND
OUT 或 DATA -> Arduino 数字引脚( D11)
连接继电器模块到 Arduino:
VCC -> Arduino 5V
GND -> Arduino GND
IN 或 SIG -> Arduino 数字引脚( D10)
使用带红外遥控的手机,先用串口读出某键的值,作为后面代码中控制灯泡的值。
本例还加上普通红外遥控的一个键值。- #include <IRremote.hpp> // 使用IRremote库
- const int RECV_PIN = 11; // 红外接收头连接的数字引脚
- const int RELAY_PIN = 10; // 继电器连接的数字引脚
- bool lightState = false; // 记录灯的当前状态:false表示关,true表示开
- void setup() {
- Serial.begin(9600);
- IrReceiver.begin(RECV_PIN, ENABLE_LED_FEEDBACK); // 启动红外接收
- pinMode(RELAY_PIN, OUTPUT);
- digitalWrite(RELAY_PIN, LOW); // 确保继电器初始为断开状态,灯为关闭
- }
- void loop() {
- if (IrReceiver.decode()) { // 如果接收到红外信号
- uint32_t receivedCode = IrReceiver.decodedIRData.decodedRawData;
- Serial.print("接收到红外码: 0x");
- Serial.println(receivedCode, HEX); // 在串口监视器打印按键码
-
- // 检查接收到的码值是否是有效的键码
- if (receivedCode == 0xBF40FF00 || receivedCode == 0xFE01FE01) {
- // 切换灯的状态
- lightState = !lightState;
-
- if (lightState) {
- digitalWrite(RELAY_PIN, HIGH); // 吸合继电器,灯亮
- Serial.println("灯已打开");
- } else {
- digitalWrite(RELAY_PIN, LOW); // 断开继电器,灯熄
- Serial.println("灯已关闭");
- }
- } else {
- Serial.println("无效的红外码");
- }
-
- IrReceiver.resume(); // 等待接收下一个信号
- }
- }
复制代码 |