A02 – Télécommande

Télécommande

Avec certains kits vous ferez l’acquisition d’une petite télécommande, similaire à celle illustrée ci-contre.
Avec un récepteur complémentaire, il est facile d’utiliser celle-ci.

Principe de fonctionnement

Une télécommande envoie un signal infra-rouge, il est donc nécessaire que celle-ci et le récepteur soient en vue directe (contrairement au RFID). La télécommande transmet un signal qui correspond à une séquence de bits, le récepteur en fait la conversion en un nombre, qu’il faut ensuite interpréter.

Le code

La librairie IRremote doit être installée pour utiliser l’exemple qui suit, qui est basé sur le code proposé dans l’ouvrage « Home automation projects with Arduino, publié par Elektor« .

#include <IRremote.h>

// Structure des codes
typedef struct {
  long hexValue;
  String result;
} IRCode;

// Codes possibles
IRCode irCodes[] = {
  { 0xFFA25D, "CH-" },
  { 0xFF629D, "CH"},
  { 0xFFE21D, "CH+" },
  { 0xFF22DD, "<<" },
  { 0xFF02FD, ">>" },
  { 0xFFC23D, ">||" },
  { 0xFFE01F, "-" },
  { 0xFFA857, "+" },
  { 0xFF906F, "EQ" },
  { 0xFF6897, "0" },
  { 0xFF9867, "100+" },
  { 0xFFB04F, "200+" },
  { 0xFF30CF, "1" },
  { 0xFF18E7, "2" },
  { 0xFF7A85, "3" },
  { 0xFF10EF, "4" },
  { 0xFF38C7, "5" },
  { 0xFF5AA5, "6" },
  { 0xFF42BD, "7" },
  { 0xFF4AB5, "8" },
  { 0xFF52AD, "9" },
  { 0xFFFFFFFF, "REPEAT" },  
  { 0x000000, "" }  
};

const int recvPin = 2;

IRrecv irrecv(recvPin);
decode_results results;

void setup() {
  Serial.begin(9600);
  irrecv.enableIRIn();
}

void loop() {
  if (irrecv.decode(&results)) {
    irrecv.resume();
    boolean found = false;
    int i=0;
    while (irCodes[i].hexValue != 0 && !found) {
      if (irCodes[i].hexValue == results.value) {
        Serial.println(irCodes[i].result);
        found = true;
      }
      i++;
    }
    if (!found) {
      Serial.println(results.value, HEX);
    }
  }
  delay(100);
}

Laisser un commentaire