找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 24|回复: 0

红外遥控解码+外设开关控制

[复制链接]

15

主题

0

回帖

73

积分

管理员

积分
73
发表于 2026-6-24 09:21:05 | 显示全部楼层 |阅读模式
本课学习目标
1. 学会IRremote库安装、红外按键解码方法
2. 读取遥控器按键十六进制编码
3. 实现遥控器一键控制LED开关、舵机转动
所需器材
Uno主板、红外接收头、万能红外遥控器、LEDSG90舵机、杜邦线
一、核心理论
红外接收头:一键接收遥控信号,串口打印按键编码
使用IRremote库,新版库需开启legacy旧版模式
逻辑:匹配编码执行对应设备动作
二、图文接线
【插图点位12】图11-1 红外接收接线示意图
接收头VCC-5VGND-GNDOUT-2引脚;LED13引脚;舵机接9引脚
适配设置:安装IRremote库后,文件示例→IRremote→changeLegacy勾选启用
三、红外遥控整合代码
arduino
#include <IRremote.h>
#include <Servo.h>
Servo myServo;
int recvPin = 2;
int ledPin = 13;
IRrecv irrecv(recvPin);
decode_results result;

//自定义本机遥控编码,自行串口读取替换
#define POWER 0xFFA25D
#define ADD 0xFF629D
#define SUB 0xFFE01F

void setup() {
  Serial.begin(9600);
  irrecv.enableIRIn();
  myServo.attach(9);
  pinMode(ledPin,OUTPUT);
}
void loop() {
  if(irrecv.decode(&result)){
    Serial.println(result.value,HEX);
    //电源键:LED开关
    if(result.value == POWER){
      digitalWrite(ledPin,!digitalRead(ledPin));
    }
    //加号键:舵机90度
    if(result.value == ADD){
      myServo.write(90);
    }
    //减号键:舵机0度
    if(result.value == SUB){
      myServo.write(0);
    }
    irrecv.resume();
  }
}
避坑要点
每款遥控器编码不同,必须先解码再写入代码;接收头避免强光直射,信号会干扰
课后作业
设置3个遥控按键,分别控制风扇低速/中速/高速启停
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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