Comunicación por IR

Descrición:

ir_mandosensor
[tecnoloxia.org CC By-SA]
Nesta sección imos comunicarnos coa nosa placa Arduíno a través dun mando e un receptor de infrevermellos (IR). Lograremos acender e apagar LEDs premendo nas teclas do mando. Despois podes adaptar os programas para actuar sobre outros elementos do teu proxecto (motores, servos, displays, etc.)

Imos utilizar o mando que aparece na imaxe, pero tamén poderiamos facer probas cun mando da televisión dos que temos por casa. Nese caso previamente debemos identificar o código que envía cada tecla e facer o programa en función do mesmo.

Montaxe:

Segundo o teu modelo de receptor IR, debes identificar os pins VCC, GND e sinal. Se os conectas mal podes estragar o teu receptor e xa non conseguirás nada. Consulta o datasheet.

ir-receivers-900
[CC from arduino]
O sinal do receptor IR debe conectarse nunha entrada dixital. Imos conectalo no pin 3. Tamén imos engadir dous LEDs con resistencias de 220Ω.

ir_esquema

Programas:

O primeiro que debemos facer é instalar unha librería que me permita empregar un mando. Eu usei a librería IRremote que vén neste enlace de GitHub.

1. Códigos

Este programa ímolo utilizar para ver o código que emite cada tecla en hexadecimal. Abre a consola, preme en cada unha das teclas e copia o resultado para poder programar despois en función deses valores.

#include <IRremoteInt.h>
#include <IRremote.h>

int RECV_PIN = 3;          // Pin que recibe o sinal IR

IRrecv irrecv(RECV_PIN);
decode_results results;

// Configuración:
 
void setup() {
  Serial.begin(9600);    // Comunicación serie
  while(!Serial);
  irrecv.enableIRIn();   // Comunicación IR
}

// Programa:
 
void loop() {
 
  if (irrecv.decode(&results)){             // Se hai sinal no receptor
    Serial.println(results.value, HEX);     // imprime o valor en hexadecimal
    irrecv.resume();                        // Prepárase para recibir o seguinte valor
  }
  delay(10);

}

/* Resultados obtidos:
0   FD30CF
1   FD08F7
2   FD8877
3   FD48B7
4   FD28D7
5   FDA857
6   FD6897
7   FD18E7
8   FD9867
9   FD58A7
*/

2. Leds

Imos acender e apagar un leds premendo nas teclas do mando. Modifica os valores hexadecimais segundo o teu mando e as teclas que desexes utilizar para o control.

#include <IRremoteInt.h>
#include <IRremote.h>

int led1=13;
int led2=12;

int RECV_PIN = 3;          // Pin que recibe o sinal IR

IRrecv irrecv(RECV_PIN);
decode_results results;

// Configuración
 
void setup() {
  Serial.begin(9600);    // Comunicación serie
  while(!Serial);
  irrecv.enableIRIn();   // Comunicación IR

  pinMode(led1,OUTPUT);
  pinMode(led2,OUTPUT);
  
}

// Programa
 
void loop() {

  results.value=0;
 
  if (irrecv.decode(&results)){
    Serial.println(results.value, HEX);   // imprime o valor en hexadecimal
    irrecv.resume();

    if(results.value == 0xFD08F7){        // tecla 1 acender Led1
      digitalWrite(led1,HIGH);
      Serial.println(results.value, HEX);
    }
    if(results.value == 0xFD28D7){        // tecla 4 apagar Led1
      digitalWrite(led1,LOW);
      Serial.println(results.value, HEX); 
    }
    if(results.value == 0xFD8877){        // tecla 2 acender Led2
      digitalWrite(led2,HIGH);
      Serial.println(results.value, HEX);
    }
    if(results.value == 0xFDA857){        // tecla 5 apagar Led2
      digitalWrite(led2,LOW);
      Serial.println(results.value, HEX); 
    }
    if(results.value == 0xFD30CF){        // tecla 0 apagar todos
      digitalWrite(led1,LOW);
      digitalWrite(led2,LOW);
      Serial.println(results.value, HEX); 
    }
    delay(200);
    irrecv.resume();
  }

}

Propostas:

  1. Mando da tele: Proba descubrir o código de varias teclas do mando da túa tele, equipo de música, etc.
  2. Control: Fai que premendo teclas do mando se executen diversos programas dos que xa tes feitos. Por exemplo, tecla1:escintileo, tecla2: melodía, tecla3:coche fantástico, tecla4: xiro dun motor cara á esquerda, tecla5: xiro cara á dereita, tecla6: parada, ou o que se che ocorra. Define funcións para cada un dos programas.
  3. Ascensor: Para o proxecto dun ascensor de 3 pisos, utiliza un mando para introducir o piso ao que desexas ir.

Deixa un comentario