Lección 1.7: Receptor infrarrojo
Un mando a distancia es un control inalámbrico barato. Con un receptor infrarrojo, cualquier montaje puede obedecerlo.
Material
Librerías
- IRremote
Cómo funciona
La luz infrarroja es invisible para nosotros, pero hay mucha a nuestro alrededor: el sol, las bombillas. Para distinguirse, el mando la enciende y apaga a 38 kHz, y el receptor solo reacciona a esa frecuencia.
Cada tecla envía una secuencia de pulsos según un protocolo; el más común en los mandos sencillos es NEC. La librería IRremote mide esos pulsos y los traduce a una dirección y un comando: el comando es lo que distingue una tecla de otra.
Al mantener pulsada una tecla, muchos mandos no la repiten: envían un código especial de repetición. La librería lo marca con una bandera para que puedas ignorarlo o aprovecharlo.
Conexiones
| Componente | Se conecta a | Nota |
|---|---|---|
| Receptor IR, S | Pin 11 | |
| Receptor IR, + | 5V | |
| Receptor IR, − | GND |
Código
// Escribe el código de cada tecla del mando.
#include <IRremote.hpp>
const int IR_PIN = 11;
void setup() {
Serial.begin(9600);
IrReceiver.begin(IR_PIN, ENABLE_LED_FEEDBACK);
Serial.println("Pulsa una tecla del mando");
}
void loop() {
if (!IrReceiver.decode()) return; // no ha llegado nada
bool repeat = IrReceiver.decodedIRData.flags & IRDATA_FLAGS_IS_REPEAT;
if (!repeat) {
Serial.print("Comando: 0x");
Serial.println(IrReceiver.decodedIRData.command, HEX);
}
IrReceiver.resume(); // listo para la siguiente señal
}Qué hace el código
- #include <IRremote.hpp> carga la versión 4 de la librería. Los tutoriales antiguos usan IRrecv y decode(&results): esa forma ya no compila con las versiones actuales.
- IrReceiver.begin() arranca el receptor; ENABLE_LED_FEEDBACK hace parpadear el LED integrado con cada señal.
- decodedIRData.command es el código de la tecla. Apúntalos: la lección del motor paso a paso los necesita.
- resume() deja el receptor listo para la siguiente señal. Sin esa línea solo se recibe la primera.
Paso a paso
- Instala la librería «IRremote» desde el gestor de librerías.
- Conecta el módulo según la tabla.
- Sube el código y abre el monitor serie a 9600 baudios.
- Apunta el mando al receptor y pulsa varias teclas.
Resultado
Cada tecla escribe su código en hexadecimal. La misma tecla da siempre el mismo código, y teclas distintas dan códigos distintos.
Si no funciona
- Si no aparece nada, mira el LED del mando a través de la cámara del móvil: en muchas se ve violeta al pulsar. Si no se enciende, cambia la pila.
- La luz del sol o de algunos fluorescentes puede interferir: prueba en otra zona.
- Si el compilador no encuentra IrReceiver, tienes instalada una versión antigua de IRremote: actualízala.