Enlace a la biblioteca Arduino-IRremote de Ken Shirriff:https://github.com/z3t0/Arduino-IRremote
Entonces controlaremos el color del LED usando los 4 botones de colores del control remoto de TV. Eso significa que primero necesitamos ver los códigos hexadecimales para cada uno de estos botones cargando el ejemplo IRrecvDemo y ejecutando Serial Monitor. Pulsaremos cada uno de estos botones y anotaremos sus códigos.
Ahora modificaremos el código de demostración de esta manera y agregaremos declaraciones if que se ejecutarán si se presiona un botón en particular. Entonces, para cada botón, estableceremos los valores RGB apropiados y el setColor() La función encenderá el LED en el color particular. Para obtener más detalles sobre cómo funciona un LED RGB con Arduino, puede consultar mi tutorial Arduino RGB.
/*
* Controlling 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.HowToMechatronics.com
*
*/
#include <IRremote.h>
int RECV_PIN = 8; // IR Receiver - Arduino Pin Number 8
IRrecv irrecv(RECV_PIN);
decode_results results;
int redPin = 5;
int greenPin = 6;
int bluePin = 7;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
pinMode(redPin, OUTPUT);
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);
}
Code language: Arduino (arduino)
Aquí están los esquemas del circuito del LED RGB controlado por infrarrojos de Arduino:
Controlar la velocidad de un ventilador de CC con un control remoto de TV
Componentes necesarios para este ejemplo:
Motor CC……………….
o ventilador de CC……………….
Transistor NPN………
Diodo…………………….
Condensador – 1uF ……..
Resistencia – 1k ohmios ..
En este ejemplo, controlará la velocidad de un ventilador de CC con los botones de avance y retroceso del control remoto del televisor. Usaremos este esquema de circuito para controlar la velocidad del ventilador, o en realidad controlaremos la señal PWM usando los botones. Para obtener más detalles sobre cómo funciona este esquema de circuito, puede consultar mi tutorial de Arduino Motors.
Aquí está el código fuente para este ejemplo. Entonces usando analogWrite() función enviaremos señal PWM a la base del transistor. El botón PLAY arrancará el motor a la velocidad máxima, o el ciclo de trabajo de la señal PWM será del 100 % y el botón STOP lo detendrá. El botón de avance aumentará la velocidad del ventilador con cada pulsación aumentando el ciclo de trabajo de la señal PWM, y el botón de retroceso la disminuirá.
/*
* Controlling a DC Fan Speed with a TV Remote
*
* Modified IRrecvDemo example from Ken Shirriff IRremote Library
* Ken Shirriff
* https://arcfn.com
*
* Modified by Dejan Nedelkovski,
* www.HowToMechatronics.com
*
*/
#include <IRremote.h>
int RECV_PIN = 8; // IR Receiver - Arduino Pin Number 8
int pwmPin = 7; // Arduino Pin Number 7 to the Base of the Transistor
int pwmValue;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
pinMode( pwmPin, OUTPUT);
pwmValue = 0; // Starts the program with turned off motor
}
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);
}
Code language: Arduino (arduino) Control de electrodomésticos de alto voltaje con un control remoto de TV
Componentes necesarios para este tutorial:
Módulo de relé de 5 V……. Amazon/Banggood/Aliexpress
Cable, enchufe, enchufe
El último ejemplo será el control de electrodomésticos de alto voltaje con el control remoto de TV. Para eso necesitaremos un módulo de relé. Usaré el módulo de relé HL-52S que tiene una clasificación de 10 A a 250 y 125 V CA. Aquí está el esquema del circuito del ejemplo de electrodomésticos de alto voltaje controlados por infrarrojos de Arduino. Con el pin número 7 de la placa Arduino controlaremos el relé en el que hay un zócalo para conectar cualquier dispositivo electrónico de alta tensión.
Como usaremos ALTA TENSIÓN, debemos ser muy cautelosos y le advierto aquí que el uso inadecuado o incorrecto podría provocar lesiones graves o la muerte y no asumo ninguna responsabilidad por sus acciones. Para obtener más detalles sobre cómo usar el relé y cómo hacer un enchufe para enchufar cualquier dispositivo electrónico, puede consultar mi Tutorial de Arduino Relay.
Aquí está el código fuente de este ejemplo:
/*
* Controlling High Voltage Home Appliances with a TV Remote
*
* Modified IRrecvDemo example from Ken Shirriff IRremote Library
* Ken Shirriff
* https://arcfn.com
*
* Modified by Dejan,
* www.HowToMechatronics.com
*
*/
#include <IRremote.h>
int RECV_PIN = 8;
int relayOut = 7;
int buttonState ;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
pinMode( relayOut, OUTPUT);
buttonState = HIGH; // 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);
}
Code language: Arduino (arduino)