Réception depuis Arduino des signaux d’une télécommande

L’objectif

Comme nous savons récupérer le type et les codes d’une télécommande,
on peut alors, à la réception d’un signal émis par cette télécommande, choisir de faire telle ou telle action.

Un exemple de code

Dans cet exemple, le récepteur est branché sur le pin11 d’Arduino.

En fichier sont définies les codes correspondant à chaque touche de la télécommande.

Il suffit alors de comparer le signal reçu avec ces codes pour agir en conséquence.

/* 
 Reception infrarouge 
 Utilisation du kit LDB (LadDeGaragem)
 Type NEC
 */


#define LDB_Touche_0 0xE12430CF
#define LDB_Touche_1 0xE12440BF
#define LDB_Touche_2 0xE12428D7
#define LDB_Touche_3 0xE1246897
#define LDB_Touche_4 0xE124B847
#define LDB_Touche_5 0xE124F00F
#define LDB_Touche_6 0xE1249867
#define LDB_Touche_7 0xE1247887
#define LDB_Touche_8 0xE124B04F
#define LDB_Touche_9 0xE124F807
#define LDB_Touche_Volume_Up 0xE12458A7
#define LDB_Touche_Volume_Down 0xE124A05F
#define LDB_Touche_Diese 0xE124E817
#define LDB_Touche_Sel 0xE12418E7
#define LDB_Touche_Mute 0xE124609F
#define LDB_Touche_Source 0xE12448B7
#define LDB_Touche_Disp 0xE124C837
#define LDB_Touche_Band 0xE124D827



#include <IRremote.h>

int broche_reception = 11; // broche 11 utilisée 
IRrecv reception_ir(broche_reception); // crée une instance 
decode_results decode_ir; // stockage données reçues


void setup() 
{ 
  Serial.begin(9600); 
  reception_ir.enableIRIn(); // démarre la réception 
}

void loop() 
{ 
  if (reception_ir.decode(&decode_ir)) 
  { 
    Serial.println(decode_ir.value, HEX);
    switch (decode_ir.value)
    {
    case  LDB_Touche_0 : //// Touche 0
      Serial.println("Touche 0");
      break;

    case  LDB_Touche_1 : //// Touche 1
      Serial.println("Touche 1");
      break;

    case  LDB_Touche_2 : //// Touche 2
      Serial.println("Touche 2");
      break;

    case  LDB_Touche_3 : //// Touche 3
      Serial.println("Touche 3");
      break;	
    case  LDB_Touche_4 : //// Touche 4
      Serial.println("Touche 4");
      break;	

    case  LDB_Touche_5 : //// Touche 5
      Serial.println("Touche 5");
      break;

    case  LDB_Touche_6 : //// Touche 6
      Serial.println("Touche 6");
      break;	

    case  LDB_Touche_7 : //// Touche 7
      Serial.println("Touche 7");
      break;	

    case  LDB_Touche_8 : //// Touche 8
      Serial.println("Touche 8");
      break;

    case  LDB_Touche_9 : //// Touche 9
      Serial.println("Touche 9");
      break;

    case  LDB_Touche_Volume_Up : //// Touche Volume Up
      Serial.println("Touche Volume Up");
      break;	

    case  LDB_Touche_Volume_Down : //// Touche Volume Down
      Serial.println("Touche Volume Down");
      break;	

case  LDB_Touche_Diese : //// Touche Diese
      Serial.println("Touche Diese");
      break;	

    case  LDB_Touche_Sel : //// Touche Sel
      Serial.println("Touche Sel");
      break;	

    case  LDB_Touche_Mute : //// Touche Mute
      Serial.println("Touche Mute");
      break;	

    case  LDB_Touche_Source : //// Touche Source
      Serial.println("Touche Source");
      break;	
    case  LDB_Touche_Disp : //// Touche Disp
      Serial.println("Touche Disp");
      break;	

    case  LDB_Touche_Band : //// Band
      Serial.println("Touche Band");
      break;	

    }


    reception_ir.resume(); // reçoit le prochain code

  } 
}


Simulation

  • Lancer la simulation
  • Cliquer sur « Code »
  • Clique sur « Moniteur Série »
  • Cliquer sur la télécommande et regarder les messages sur la liaison série.

Niveau supérieur : La communication infrarouge