在这个Arduino IR教程中,我们将学习如何使用电视遥控器和Arduino来控制电子设备。我们将从控制简单的LED,然后控制直流风扇速度,以控制高压家电的少数示例。您可以观看以下视频或阅读下面的书面教程。
我们可以注意到,当我们按下按钮时,电视遥控器前面的LED会闪烁。实际上我们只能通过摄像机看到因为这是红外线人眼是看不见的。
所以,闪烁意味着当我们按下按钮时,红外LED会发出一束光或脉冲,我们需要用红外接收器接收它们。
在本教程中,我们将使用v34838 IR接收器,它有以下框图,从这里我们可以看到,它将放大,滤波和解调接收信号,并提供清晰的逻辑输出,这是Arduino板的数字输入可接受的。
然后使用Ken Shirriff的Arduino-IRremote库和它的演示示例,我们可以从串行监视器看到一个独特的十六进制代码,每个按钮按下,我们可以使用它时,我们的程序。
链接到Ken Shirriff的Arduino-IRremote库:https://github.com/z3t0/arduino-irremote.
使用电视遥控器控制RGB LED
你可以从以下任何一个网站获得组件:
- 红外接收器 ....................................亚马逊/Banggood/aliexpress.
- RGB LED .......................................亚马逊/Banggood/aliexpress.
- 3x 220欧姆电阻...................亚马逊/Banggood/aliexpress.
- Arduino电路板 ................................亚马逊/Banggood/aliexpress.
- 面包板和跳线...... ..亚马逊/Banggood/aliexpress.
yaboAG娱乐城披露:这些是联盟链接。作为亚马逊助理,我从合格购买中获得。
所以我们将使用电视遥控器的4个彩色按钮来控制LED的颜色。这意味着,首先我们需要通过上传IRrecvDemo示例并运行串行监视器来查看每个按钮的十六进制代码。我们将按下这些按钮并写下它们的代码。
现在,我们将修改像这样的演示代码,并在按下特定按钮时添加的陈述。因此,对于每个按钮,我们将设置适当的RGB值,以及setcolor()功能将点亮特定颜色的LED。更多细节如何RGB LED与Arduino工作,你可以检查我的Arduino RGB教程。
/ * *使用电视遥控器控制RGB LED * *修改的Irrecvdemo示例来自Ken Shirriff Irremote Library * Ken Shirriff * https://arcfn.com * *由Dejan Nedelkovski修改,* www.www.kuaixg.com * * / #include亚搏手机版官方下载int recv_pin = 8;// IR接收器 - Arduino PIN号8 IRRECV IRRECV(RECV_PIN);decode_results结果;int Redpin = 5;int greenpin = 6;int bluepin = 7;void setup() {Serial.begin(9600);irrecv.enableIRIn ();//启动接收器Pinmode(Redpin,输出); pinMode(greenPin, OUTPUT); pinMode(bluePin, OUTPUT); } void loop() { if (irrecv.decode(&results)) { if (results.value == 0xF21D7D46) { // Red Button setColor(255, 0, 0); // Sets Red Color to the RGB LED delay(100); } if (results.value == 0x87CF1B29) { // Green Button setColor(0, 255, 0); // Green Color delay(100); } if (results.value == 0x6623D37C) { // Yellow Button setColor(255, 255, 0); // Yellow Color delay(100); } if (results.value == 0x854115F2) { // Blue Button setColor(0, 0, 255); // Blue Color delay(100); } if (results.value == 0x1639AB6E) { // Stop Button setColor(0, 0, 0); // OFF delay(100); } irrecv.resume(); // Receive the next value } delay(100); } // Custom made function for activating the RGB LED void setColor(int red, int green, int blue) { analogWrite(redPin, red); // Sends PWM signal to the Red pin analogWrite(greenPin, green); analogWrite(bluePin, blue); }
下面是Arduino IR控制RGB LED的电路原理图:
使用电视遥控器控制DC风扇速度
此示例所需的组件:
- 直流电机 ...................亚马逊/Banggood/aliexpress.
- 或直流风扇 ...................亚马逊/Banggood/aliexpress.
- NPN型晶体管……亚马逊/Banggood/aliexpress.
- 二极管 .........................亚马逊/Banggood/aliexpress.
- 电容- 1uF ........亚马逊/Banggood/aliexpress.
- 电阻- 1k欧姆..亚马逊/Banggood/aliexpress.
在此示例中,将使用电视遥控器的前向和向后按钮来控制DC风扇速度。我们将使用此电路原理图来控制风扇的速度,或者实际上我们将使用按钮控制PWM信号。有关更多详细信息,此电路原理图如何工作,您可以查看我的Arduino Motors教程。
下面是本例的源代码。所以使用analogWrite ()功能,我们将发送PWM信号到晶体管的基础。PLAY按钮将以最高速度启动电机,或者PWM信号占空比为100%,STOP按钮将停止。前进按钮将通过增加PWM信号的占空比来增加风扇的速度,而后退按钮将降低它。
/* *控制直流风扇速度与电视遥控器* *修改的IRrecvDemo示例从Ken Shirriff IRremote Library * Ken Shirriff * https://arcfn.com * *修改的Dejan Nedelkovski, * www.HowToMechatronics.com * */ #includeint RECV_P亚搏手机版官方下载IN = 8;// IR Receiver - Arduino Pin Number 8 int pwmPin = 7;// Arduino Pin Number 7 to the Base of Transistor int pwmValue;IRrecv IRrecv (RECV_PIN);decode_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 Button pwmValue = 255; // 100% Duty Cycle | Max Speed } if (results.value == 0x98519C65) { // STOP Button pwmValue = 0; // 0% Duty Cycke | Turned off } if (results.value == 0x93F1BA08) { // FORWARD Button if(pwmValue <= 245){ pwmValue = pwmValue + 10; // Increases the Duty Cycle of the PWM Signal delay(20); } } if (results.value == 0x71D086FF) { // BACKWARD Button if(pwmValue >= 20){ pwmValue = pwmValue - 10; // Decreases the Duty Cycle of the PWM Signal delay(20); } } Serial.print(pwmValue); Serial.print(" "); Serial.println(results.value, HEX); irrecv.resume(); // Receive the next value } delay(100); }
用电视遥控器控制高压家用电器
本教程所需的组件:
- 5 v继电器模块……亚马逊/Banggood/aliexpress.
- 电缆、插头、插座
最后一个例子是使用电视遥控器控制高压家用电器。为此,我们需要一个继电器模块。我将使用HL-52S继电器模块,它在250和125 V AC下的额定电流为10a。这里是Arduino IR控制的高压家用电器例子的电路原理图。通过Arduino板上的7号引脚,我们将控制继电器,继电器上有一个插座,可以连接任何高压电子设备。
正如我们将使用高电压,我们必须非常谨慎,我在这里警告您的使用不当或不正确的使用可能导致严重伤害或死亡,并且我对您的行为不承担任何责任。有关更多详细信息,如何使用继电器以及如何制作插座,用于插入您可以查看我的任何电子设备Arduino继电器教程。
下面是这个例子的源代码:
/ * *用电视遥控器控制高压家电* *修改的Irrecvdemo示例来自Ken Shirriff Irremote Library * ken shirriff * https://arcfn.com * *由dejan修改,* www.www.kuaixg.com * * / #include亚搏手机版官方下载int recv_pin = 8;int relayout = 7;int buttonstate;IRrecv IRrecv (RECV_PIN);decode_results结果;void setup() {Serial.begin(9600);irrecv.enableIRIn ();//启动接收器Pinmode(中继,输出);ButtonState =高; // Starts the program with turned off Relay. The relay input works inversly so HIGH state means deactivated relay } void loop() { buttonState = digitalRead(relayOut); if (irrecv.decode(&results)) { if (results.value == 0xAFAF8374) { // PLAY Button digitalWrite(relayOut, LOW); // Activates the relay } if (results.value == 0x98519C65) { // STOP Button digitalWrite(relayOut, HIGH); // Deactivates the relay } irrecv.resume(); // Receive the next value } Serial.print(" "); Serial.println(results.value, HEX); delay(100); }