在本教程中,我们将学习如何为Arduino设置IR远程。IR遥控器可以在你的项目中用于各种各样的事情。你可以使用红外遥控器来开启和关闭设备、LED、继电器,甚至用它来操控Arduino机器人或自动化车辆。有了发射机,你甚至可以制造一个鬼鬼祟祟的小装置,关掉附近的所有电视。这是一个非常多功能的组件,有在你的Arduino武器库!

在本教程中,我们将创建一个非常简单的草图,读取输入按钮按下红外遥控器,然后打开或相应的LED。

这个项目的简单零件清单

如果你还没有这个项目的所有部分,这里有一个快速列表让你开始。有一点需要注意。如果你不想为你的项目买一个专门的遥控器,这个项目将与几乎任何红外遥控器,你有你的房子。试试你的电视或RGB LED电视。你会惊讶于你已经拥有的所有与这个项目一起工作的遥控器。

相关:我们精选的Arduino入门套件

红外光如何工作

在不涉及太多细节的情况下,了解红外工作原理的基础知识是一个好主意,因为这将帮助您了解在您的项目中正在发生的事情。简单地说,红外光与我们观察周围事物时看到的光或我们所说的可见光非常相似。可见光和其他形式的光的唯一区别是频率和波长。频率是指每秒通过多少波,波长是指每个波的长度。

红外光的频率和波长刚好超出了人类肉眼所能看到的范围。这里有一个方便的频谱图,可以帮助你正确地看待事情。

红外光不像可见光那样通过或穿透大多数物体。因此,红外需要瞄准线才能工作。在发射器和接收器之间放置一个不透明的固体物体将停止设备的功能。

红外线发射器和接收器如何工作

在我们为Arduino设置IR Remote之前,让我们快速了解一下设备发生了什么。现在我们知道红外线是光,几乎和其他的光一样可以然后,人们开始怀疑,对于可以在红外光谱中看到东西的生物来说,红外线LED看起来是否像手电筒。答案是肯定的!除了红外线遥控发射时,它实际上在闪烁。这些闪光产生的模式可以转化为数据。这样外星生物就会看到闪烁的光,而这种光会因你按下遥控器上的哪个按钮而略有不同。

了解红外编码

这些模式被称为IR代码。红外遥控器上的每个按钮都传送一个独特的代码。不同的制造商和不同的遥控器可能会在不同的按钮上使用不同的代码。如果你不知道遥控器的代码,也没关系。我们将在下面编写一个草图,它将简单地编写它接收到串行控制台的代码。你可以按遥控器上的任何按钮,找到它的代码。

把红外线接收器连接到Arduino上

在我们编写任何Arduino代码之前,我们需要让我们的Arduino设置通过连接IR接收器(或模块)来接收IR代码。只要按照这个快速的图表和电线连接你的。

红外接收器接地(G)- > Arduino接地
红外接收器Vcc(右)- > Arduino5伏
红外接收器数据(Y)- > Arduino销7

连接好之后,打开Arduino IDE,确保安装了IRRemote库。没有它,这个项目将无法编译。

现在您已经安装了IRRemote库,创建一个新的草图,并将此代码粘贴到其中,然后将其上传到您的Arduino。

// Print IR Buttons to Serial Monitor // TheGeekPub.com #include  //定义IR接收器的pin const int IR_RECV_PIN = 7;//创建IR对象IRrecv gpirrecv(IR_RECV_PIN);decode_results结果;无效的设置(){Serial.begin (9600);gpirrecv.enableIRIn ();gpirrecv.blink13(真正的);以“准备好了。”);} void loop(){if (gpirrecv.decode(&results)){Serial.println(results. result);价值,十六进制);gpirrecv.resume ();} }

现在,您应该能够将遥控器指向IR接收器,并看到串行窗口中显示的代码。

红外遥控装置

现在我们的红外遥控器工作正常,可以破译它的代码,让我们编程两个按钮来打开和关闭我们的电路板上的一个LED。按照下图将LED添加到项目中。

修改我们之前编写的代码,使其看起来如下所示:

#include  //定义红外接收器和LED的引脚const int RECV_PIN = 7;const int BLED_PIN = 8;//创建IR对象IRrecv;decode_results结果;无效的设置(){Serial.begin (9600);irrecv.enableIRIn ();irrecv.blink13(真正的);// flash LED13用于调试pinMode(BLED_PIN, OUTPUT);以“准备好了。”);} void loop(){if (irrecv.decode(&results)){switch(results.value){case 0xFF30CF: //按钮1被按下,打开LED digitalWrite(BLED_PIN, HIGH); break; case 0xFF18E7: // button 2 was pressed, turn off the LED digitalWrite(BLED_PIN, LOW); break; } irrecv.resume(); } }

一定要检查你的IR代码,确保它们和我的一样。如果不是,只需用上面第一个程序中的代码更新switch-case语句,并使用您自己的远程代码。

如果一切正常,遥控器上的按钮1应该打开LED灯,遥控器上的按钮2应该关闭LED灯。LED当然可以被其他设备所替代,如继电器、伺服器、马达等。

检查红外按钮是否被按住

在扩展这个项目的过程中,了解另外一条信息是很重要的。让我们假设你想让LED在你按住按钮的时候保持亮着,然后在你松开按钮的时候关闭。IRRemote库有一个很好的内置方法可以让你轻松完成这个任务。如果按下按钮,它不会再次返回IR代码,而是开始返回0 xffffffff.你的代码需要做的就是不断检查,如果找到0xFFFFFFFF,保持状态不变,而不是继续。

我们希望你喜欢学习如何为Arduino设置红外远程!

产品从Amazon.com