Saltar al contenido
Contenido de Arduino

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

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

ComponenteSe conecta aNota
Receptor IR, SPin 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

  1. Instala la librería «IRremote» desde el gestor de librerías.
  2. Conecta el módulo según la tabla.
  3. Sube el código y abre el monitor serie a 9600 baudios.
  4. 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.