控制任何电子与电视远程|yabo7. com Arduino红外教程

在本Arduino IR教程中,我们将学习如何使用电视遥控器和Arduino控制电子设备。我们将做几个例子,从控制一个简单的LED,然后控制一个直流风扇的速度,到控制高压家电。你可以观看下面的视频或阅读下面的书面教程。

亚博88下载


我们可以注意到,当我们按下按钮时,电视机遥控器前面的LED就会闪烁。实际上,我们只能通过摄像机看到这一点,因为这是红外光,人类的眼睛是看不见的。

TV-Remote-LED-1

闪烁意味着当我们按下按钮时,红外LED就会发送一束光或脉冲,我们需要用红外接收器接收它们。

Arduino-IR-TV-Remote-Control-How-It-Works-2

在本教程中,我们将使用V 34838 IR接收器,它具有如下框图,我们可以看到它将对接收到的信号进行放大、滤波和解调,并提供清晰的逻辑输出,可用于Arduino板的数字输入。

v - 34838 -红外接收机数据表

然后使用Ken Shirriff的Arduino-IRremote库和它的演示示例,我们可以从串行监视器看到一个独特的十六进制代码,每个按钮按下,我们可以在制作我们的程序时使用它。

Ken-Shirriff 's-IRremote——library-1

链接到Ken Shirriff的Arduino-IRremote库:https://github.com/z3t0/Arduino-IRremote

用电视遥控器控制RGB LED


你可以从下面的任何网站获得组件:

yaboAG娱乐城披露:这些是附属链接。作为一名亚马逊助理,我的收入来自符合条件的购买。

所以我们将使用电视遥控器上的4个彩色按钮来控制LED的颜色。这意味着,首先我们需要通过上传IRrecvDemo示例来查看每个按钮的十六进制代码,然后运行串行监视器。我们将按下每个按钮并写下它们的密码。

IRrecvDemo-Serial-Monitor-and-TV-Remote-RGB-LED-Control-Example

现在,我们将像这样修改演示代码,并添加如果按下特定按钮将执行的if语句。因此,我们将为每个按钮设置适当的RGB值改变颜色()功能将照亮LED在特定的颜色。要了解更多关于RGB LED如何与Arduino一起工作的细节,请查看myArduino RGB教程

/* * * control a RGB LED with a TV Remote * * Modified IRrecvDemo example from Ken Shirriff IRremote Library * Ken Shirriff * https://arcfn.com * * Modified by Dejan Nedelkovski, * www.Ho亚搏手机版官方下载wToMechatronics.com * */ #include  int RECV_PIN = 8;//红外接收器Arduino Pin Number 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, OUTPUT);pinMode (greenPin、输出); 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红外控制RGB LED电路原理图:

Controlling-a-RGB-LED-with-TV-Remote-Circuit-Schematics-2

用电视遥控器控制直流风扇的转速


本例所需的组件:

在这个例子中,我们将使用电视遥控器的前进和后退按钮来控制直流风扇的速度。我们将使用电路原理图来控制风扇的速度,或者实际上我们将使用按钮来控制PWM信号。有关电路原理图如何工作的更多细节,你可以查看我的Arduino汽车教程

Controlling-a-DC-Fan-speed-with-a-TV-Remote-Circuit-Schematics

下面是这个示例的源代码。所以使用analogWrite ()函数将PWM信号发送到晶体管基极。播放按钮将以最大速度启动电机,或者PWM信号占空比为100%,停止按钮将停止电机。前进按钮通过增加PWM信号的占空比来增加风机的转速,而后退按钮则减少PWM信号的占空比。

/* * * control a DC Fan Speed with a TV Remote * * Modified IRrecvDemo from Ken Shirriff IRremote Library * Ken Shirriff * https://arcfn.com * * Modified by Dejan Nedelkovski, * www.HowToMecha亚搏手机版官方下载tronics.com * */ #include  int RECV_PIN = 8;//红外接收器- Arduino Pin Number 8 int pwmPin = 7;// Arduino引脚7到晶体管的底部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); }

用电视遥控器控制高压家电


本教程需要的组件:

最后一个例子是使用电视遥控器控制高压家用电器。为此,我们需要一个中继模块。我将使用HL-52S继电器模块,它在250和125 V交流时的额定电压为10 a。下面是Arduino IR控制高压家电示例的电路原理图。用Arduino板上的7号引脚我们就能控制继电器上面有一个插座可以连接任何高压电子设备。

Controlling-high-voltage-home-appliances-using-the-TV-Remote-Circuit-Schematics

由于我们将使用高电压,我们必须非常小心,我在这里警告您,不适当或不正确的使用可能会导致严重的伤害或死亡,我不为您的行为承担任何责任。更多的细节如何使用继电器和如何制作插座,以插任何电子设备,你可以检查我的Arduino继电器教程

Warning-High-Voltage

下面是这个例子的源代码:

/* * * control High Voltage Home Appliances with a TV Remote * * Modified IRrecvDemo from Ken Shirriff IRremote Library * Ken Shirriff * https://arcfn.com * * Modified by Dejan, * www.HowToMecha亚搏手机版官方下载tronics.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(relayOut, OUTPUT);buttonState =高;//关闭继电器启动程序。 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); }

推荐

2019年最佳入门级示波器为初学者和爱好者

最好的示波器为初学者和爱好者

推荐

8个最好的Arduino入门工具包,适合2019年初学者

8个最好的ARDUINO初学者工具包

推荐

最好的3D打印机为初学者和爱好者- 3D打印

最好的3D打印机为初学者和业余爱好者