在此项目中,您将使用红外(IR)接收器和Arduino通过遥控器控制3个LED。这对于重新使用旧的遥控器或在功能上给遥控器的某些按钮很有用。
该项目分为两个部分:
- 您将解码遥控器发送的红外信号
- 您将使用该信息通过Arduino执行任务(控制3个LED)
目录
所需零件
要遵循此项目,您需要以下部分:
- Arduino UNO
- 1x面包板
- 1个遥控器(某宝上面买的两块钱的即可)
- 1个红外接收器(我将使用TSOP4838)
- 3个LED
- 3个220欧姆电阻
- 杜邦线
红外线(IR)接收器介绍
红外接收器是下图所示的组件。这是TSOP4838。
红外接收器引脚:
- 第一针:Vout
- 第二针:GND
- 第三针:Vcc
当您按遥控器时,它将发送红外调制信号。这些信号包含您的接收器收集的信息。
每个按钮发送特定的信息。因此,我们可以将该信息分配给特定的按钮。
解码红外信号
在项目的此部分中,您需要解码与每个按钮关联的IR信号。
原理图
相应地将IR接收器连接到以下示意图。
代码
要控制IR接收器,您需要 在Arduino IDE中安装IRremote库。
安装IRremote库
- 看文章最后面下载红外库。您的下载中应该有一个.zip文件夹
- 解压缩.zip文件夹,您应该得到 IRremote-master 文件夹
- 重命名您的文件夹 IRremote-master 到 IRremote
- 将 IRremote 文件夹移至Arduino IDE安装库文件夹
- 最后,重新打开您的Arduino IDE
将以下代码复制到Arduino IDE,然后将其上传到Arduino开发板。确保选择了正确的板卡和COM端口。
/* * IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv * An IR detector/demodulator must be connected to the input RECV_PIN. * Version 0.1 July, 2009 * Copyright 2009 Ken Shirriff * http://arcfn.com */
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume(); // Receive the next value
}
delay(100);
}
以9600的波特率打开串行监视器。
在此项目中,您要控制3个LED。选择6个按钮执行以下任务:
- LED1 –亮
- LED1 –熄灭
- LED2 –亮
- LED2 –熄灭
- LED3 –亮
- LED3 –熄灭
例如,按遥控器上的数字1。您应该在串行监视器上看到一个代码。多次按相同的按钮,以确保该按钮具有正确的代码。如果您看到诸如FFFFFFFF之类的东西忽略它,那就是错误的信号。
对其他按钮执行相同的操作。
写下与每个按钮关联的代码,因为稍后您将需要该信息。
建立最终电路
在这一部分中,您将用三个LED构建电路,这三个LED将使用遥控器进行控制。
原理图
请按照以下示意图组装所有零件。
代码
现在,获取您在上一步中捕获的代码。您需要将代码从十六进制转换为十进制。
为此,您可以使用以下网站: www.binaryhexconverter.com/hex-to-decimal-converter
这是我的其中一个代码的转换示例:
对所有十六进制值重复该过程,然后保存 十进制 值。这些是您需要在下面的代码中替换的代码。
将以下程序下载或复制到Arduino IDE。 在案例行提供的程序中编写您自己的十进制值 ,并将其上载到Arduino板。确保选择了正确的板卡和COM端口。
程序:
示范
最后,您可以使用遥控器上的按钮分别控制每个LED。
红外库IRremote下载:
先赚个积分
我也赚个积分
积分