使用Arduino红外遥控控制任意设备:分步教程
本Arduino红外教程将讲解如何使用电视遥控器和Arduino控制电子设备。我们将从控制简单LED开始,进阶到控制直流风扇转速,最后控制高压家用电器。您可以观看以下视频或阅读下方文字教程。 按下遥控器按键时,遥控器前端的红外LED会闪烁。这只能通过摄像头看到,因为红外光人眼不可见。 闪烁意味着按键按下时红外LED发出一连串光脉冲,需用红外接收器接收。 本教程使用V 34838红外接收器,其框图显示它将放大、滤波并解调接收信号,输出适合Arduino数字输入的干净逻辑信号。 使用Ken Shirriff的Arduino-IRremote库及其演示示例,可在串口监视器看到每个按键对应的唯一十六进制代码,供编程使用。 Ken Shirriff Arduino-IRremote库地址:https://github.com/z3t0/Arduino-IRremote 所需组件: 我们将用遥控器的4个颜色按键控制LED颜色。首先上传IRrecvDemo示例并打开串口监视器,按下各颜色按键记录其十六进制代码。 修改演示代码,添加if语句判断按键代码,设置相应RGB值,调用setColor()函数点亮LED。RGB LED详细用法请参考我的Arduino RGB教程。 Arduino红外控制RGB LED电路原理图: 所需组件: 本示例用遥控器的前进/后退按键控制风扇转速。电路原理图用于控制风扇转速,实际是通过按键控制PWM信号。电路原理详见我的Arduino电机教程。 源代码:用analogWrite()向三极管基极发送PWM信号。PLAY键启动电机全速(PWM占空比100%),STOP键停止。前进键每按一次增加占空比(加速),后退键减少占空比(减速)。 所需组件: 最后示例:用遥控器控制高压家电。需继电器模块,我用HL-52S,额定10A @ 250V和125V AC。电路原理图:Arduino 7号引脚控制继电器,继电器上有插座可接任意高压设备。 警告:使用高压,操作不当可能导致严重伤害或死亡,后果自负。 继电器用法及制作插座详见我的Arduino继电器教程。 源代码:工作原理




用电视遥控器控制RGB LED

代码语言: Arduino (arduino)
/*
* 用电视遥控器控制RGB LED
* 修改自Ken Shirriff IRremote库的IRrecvDemo示例
* Ken Shirriff https://arcfn.com
* 修改:Dejan Nedelkovski, www.HowToMechatronics.com
*/
#include <IRremote.h>
int RECV_PIN = 8; // 红外接收器接Arduino 8号引脚
IRrecv irrecv(RECV_PIN);
decode_results results;
int redPin = 5; int greenPin = 6; int bluePin = 7;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn(); // 启动接收器
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void loop() {
if (irrecv.decode(&results)) {
if (results.value == 0xF21D7D46) { // 红色按键
setColor(255, 0, 0); delay(100);
}
if (results.value == 0x87CF1B29) { // 绿色按键
setColor(0, 255, 0); delay(100);
}
if (results.value == 0x6623D37C) { // 黄色按键
setColor(255, 255, 0); delay(100);
}
if (results.value == 0x854115F2) { // 蓝色按键
setColor(0, 0, 255); delay(100);
}
if (results.value == 0x1639AB6E) { // 停止按键
setColor(0, 0, 0); delay(100);
}
irrecv.resume(); // 接收下一个值
}
delay(100);
}
// 自定义函数:激活RGB LED
void setColor(int red, int green, int blue) {
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);
}
用电视遥控器控制直流风扇转速

代码语言: Arduino (arduino)
/*
* 用电视遥控器控制直流风扇转速
* 修改自Ken Shirriff IRremote库的IRrecvDemo示例
* Ken Shirriff https://arcfn.com
* 修改:Dejan Nedelkovski, www.HowToMechatronics.com
*/
#include <IRremote.h>
int RECV_PIN = 8; int pwmPin = 7; int pwmValue;
IRrecv irrecv(RECV_PIN); decode_results results;
void setup() {
Serial.begin(9600); irrecv.enableIRIn();
pinMode(pwmPin, OUTPUT); pwmValue = 0; // 启动时电机关闭
}
void loop() {
if (irrecv.decode(&results)) {
analogWrite(pwmPin, pwmValue);
if (results.value == 0xAFAF8374) { // PLAY键
pwmValue = 255; // 100%占空比 | 最大速度
}
if (results.value == 0x98519C65) { // STOP键
pwmValue = 0; // 0%占空比 | 关闭
}
if (results.value == 0x93F1BA08) { // 前进键
if(pwmValue <= 245){ pwmValue += 10; delay(20); }
}
if (results.value == 0x71D086FF) { // 后退键
if(pwmValue >= 20){ pwmValue -= 10; delay(20); }
}
Serial.print(pwmValue); Serial.print(" "); Serial.println(results.value, HEX);
irrecv.resume();
}
delay(100);
}用电视遥控器控制高压家用电器


代码语言: Arduino (arduino)
/*
* 用电视遥控器控制高压家用电器
* 修改自Ken Shirriff IRremote库的IRrecvDemo示例
* Ken Shirriff https://arcfn.com
* 修改:Dejan, www.HowToMechatronics.com
*/
#include <IRremote.h>
int RECV_PIN = 8; int relayOut = 7; int buttonState;
IRrecv irrecv(RECV_PIN); decode_results results;
void setup() {
Serial.begin(9600); irrecv.enableIRIn();
pinMode(relayOut, OUTPUT);
buttonState = HIGH; // 启动时继电器关闭。继电器输入反相,HIGH=断开
}
void loop() {
buttonState = digitalRead(relayOut);
if (irrecv.decode(&results)) {
if (results.value == 0xAFAF8374) { // PLAY键
digitalWrite(relayOut, LOW); // 激活继电器
}
if (results.value == 0x98519C65) { // STOP键
digitalWrite(relayOut, HIGH); // 断开继电器
}
irrecv.resume();
}
Serial.print(" "); Serial.println(results.value, HEX);
delay(100);
}
制造工艺
- 基于 Arduino、1Sheeld 与红外控制的万能安卓遥控器
- 智能存钱罐:Arduino Nano 控制硬币识别器实现余额显示
- 自制 Arduino 电视遥控器:3D 打印外壳、电池供电、支持三大品牌协议
- Arduino + HC-05 蓝牙控制 LED:MIT App Inventor 手机 App 开发全攻略
- Arduino Nano + 摇杆控制双步进电机:Visuino 图形化教程
- 让大嘴鲈鱼玩具随音频起舞:分步制作指南
- ThimbleKrox:基于 Arduino Micro 与 MPU-6050 的指戴式鼠标控制器
- DIY Arduino 蟑螂控制系统 —— 30 美元以内自制指南
- 使用 Arduino Uno 和蓝牙实现遥控小车:分步指南
- 通过专用 Android App 蓝牙控制 Arduino 机械臂
- 基于 ACS712 传感器的 Arduino 交流电流精准测量(真有效值)
- Arduino Uno 控制 25kHz 4 针 PWM 风扇 - 硬件、代码与测试