找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 450|回复: 0
打印 上一主题 下一主题
收起左侧

手机控制灯泡开关

[复制链接]
跳转到指定楼层
楼主
ID:1162851 发表于 2025-12-4 20:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
连接红外接收头到 Arduino:
VCC -> Arduino 5V
GND -> Arduino GND
OUT 或 DATA -> Arduino 数字引脚( D11)

连接继电器模块到 Arduino:
VCC -> Arduino 5V
GND -> Arduino GND
IN 或 SIG -> Arduino 数字引脚( D10)
使用带红外遥控的手机,先用串口读出某键的值,作为后面代码中控制灯泡的值。
本例还加上普通红外遥控的一个键值。
  1. #include <IRremote.hpp> // 使用IRremote库

  2. const int RECV_PIN = 11; // 红外接收头连接的数字引脚
  3. const int RELAY_PIN = 10; // 继电器连接的数字引脚
  4. bool lightState = false; // 记录灯的当前状态:false表示关,true表示开

  5. void setup() {
  6.   Serial.begin(9600);
  7.   IrReceiver.begin(RECV_PIN, ENABLE_LED_FEEDBACK); // 启动红外接收
  8.   pinMode(RELAY_PIN, OUTPUT);
  9.   digitalWrite(RELAY_PIN, LOW); // 确保继电器初始为断开状态,灯为关闭
  10. }

  11. void loop() {
  12.   if (IrReceiver.decode()) { // 如果接收到红外信号
  13.     uint32_t receivedCode = IrReceiver.decodedIRData.decodedRawData;
  14.     Serial.print("接收到红外码: 0x");
  15.     Serial.println(receivedCode, HEX); // 在串口监视器打印按键码
  16.    
  17.     // 检查接收到的码值是否是有效的键码
  18.     if (receivedCode == 0xBF40FF00 || receivedCode == 0xFE01FE01) {
  19.       // 切换灯的状态
  20.       lightState = !lightState;
  21.       
  22.       if (lightState) {
  23.         digitalWrite(RELAY_PIN, HIGH); // 吸合继电器,灯亮
  24.         Serial.println("灯已打开");
  25.       } else {
  26.         digitalWrite(RELAY_PIN, LOW); // 断开继电器,灯熄
  27.         Serial.println("灯已关闭");
  28.       }
  29.     } else {
  30.       Serial.println("无效的红外码");
  31.     }
  32.    
  33.     IrReceiver.resume(); // 等待接收下一个信号
  34.   }
  35. }
复制代码

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表