笑了,在 arduino uno 上用红外线遥控器点灯

笑了,在 arduino uno 上用红外线遥控器点灯

序言

最近在用 arduino 开发智能小车,开发红外线模块的时候碰到了一些问题,参照网上的教程基本都是老掉牙的代码或者方案…,好好好,既然没有现成的,那就自己参考官方案例琢磨,通过本文记录一下,也希望能对更多人有所帮助。

前期准备

  1. arduino 开发板 x 1

  2. 红外线遥控器 x 1

    红外线遥控器

  3. Ky-022 红外线接收模块 x 1

  4. 杜邦线若干

环境配置

这个项目我是基于 platformIO + vscode 的形式开发,更符合时代的进步(arduino-ide是什么玩意儿…界面看吐了都)

我愿称这个搭配为最强生产力,至少对于做前端的我来说很好上手。

1. 安装 IRremote 依赖

这个库主要是来负责接收红外线信号,使用起来也是相当的方便。首先去到 platformIO 的首页,进入 library 找到这个库下载就行。

IRremote

2. 线路连接

传感器 GND 连 uno GND,VCC 连接 3.3v 或者 5v,DAT 我这里由于其它端口暂时被占用,连接的是 10 号引脚(理论上2、3、5、6、9、10、11 都可)。

连接示例

开发流程

记得插上你的开发设备,并通电。

1. 测试红外线设备

把下面的代码烧录进 arduino 设备。然后打开串口监视页面,按下遥控器,看终端是否会打印出值。如果返回,那说明正常连接成功,可以进行下一步了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <Arduino.h>
#include <IRremote.hpp>

void setup() {
Serial.begin(9600);
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
}

void loop() {
if (IrReceiver.decode()) {
if (IrReceiver.decodedIRData.protocol != UNKNOWN) {
Serial.println(IrReceiver.decodedIRData.command); // 打印接收到的值
IrReceiver.resume();
IrReceiver.printIRResultShort(&Serial);
IrReceiver.printIRSendUsage(&Serial);
}
}
}

2. 写入 LED 判断语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <Arduino.h>
#include <IRremote.hpp>

int ledPin = A5; // 我这里给 LED 的引脚是 A5
int LED_CODE = 22; // led 对应的按钮 code
bool ledState = false;

void setup() {
Serial.begin(9600);
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
}

void loop() {
if (IrReceiver.decode()) {
if (IrReceiver.decodedIRData.protocol != UNKNOWN) {
switch (IrReceiver.decodedIRData.command) {
case 22:
ledState = !ledState; // 切换LED的状态
digitalWrite(ledPin, ledState ? HIGH : LOW); // 设置LED的状态
break;
default:
// 其他情况不作处理
break;
}
IrReceiver.resume();
IrReceiver.printIRResultShort(&Serial);
IrReceiver.printIRSendUsage(&Serial);
}
}
}

小结

笑了,在 arduino uno 上用红外线遥控器点灯

http://blog.jzxer.cn/20241106/20241106-arduino-with-infrared/

作者

dev

发布于

2024-11-06

更新于

2024-11-11

许可协议

评论

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×