|
本课学习目标 1. 学会IRremote库安装、红外按键解码方法 2. 读取遥控器按键十六进制编码 3. 实现遥控器一键控制LED开关、舵机转动 所需器材 Uno主板、红外接收头、万能红外遥控器、LED、SG90舵机、杜邦线 一、核心理论 • 红外接收头:一键接收遥控信号,串口打印按键编码 • 使用IRremote库,新版库需开启legacy旧版模式 • 逻辑:匹配编码→执行对应设备动作 二、图文接线 【插图点位12】图11-1 红外接收接线示意图 接收头VCC-5V、GND-GND、OUT-2引脚;LED接13引脚;舵机接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个遥控按键,分别控制风扇低速/中速/高速启停
|