Arduino : initiation à l’usage des radioamateurs. 7ème partie.
Et si nous apprenions à utiliser une télécommande, nous pourrions piloter un récepteur, un rotor et bien d’autres appareillages.

Pour moins d’1 €, on a une télécommande (sans pile) et un récepteur infrarouge.
Comme il existe plusieurs modèles, nous allons « nous amusez » à tester les codes renvoyés avant de les utiliser.
Le câblage est vraiment simple, le récepteur comporte 3 bornes, 2 pour l’alimentation (+ et – 5V) et une pour les signaux.
On garde toujours notre afficheur LCD et on ajoute le récepteur connecté par exemple sur la borne numérique 3

// <<<< Déclarer >>>>
#include <IRremote.h> // on appelle la biblihoteque
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
int Borne_Reception = 3; // on affecte la borne 3 au
IRrecv RecepteurIR(Borne_Reception); // recepteur infrarouge
decode_results Valeur_lue; // la variable Valeur_lue
// contiendra le code
// <<<< Préparer >>>>
void setup()
{
lcd.begin(16, 2);
RecepteurIR.enableIRIn(); // Initialise le recepteur
lcd.print("EN RECEPTION");
}
// <<<< Répéter >>>>
void loop() {
if (RecepteurIR.decode(&Valeur_lue)) { // on scrute le récepteur
lcd.setCursor(0, 1); // on se positionne colonne 1 ligne 2
lcd.print (" "); // on efface la ligne
lcd.setCursor(0, 1); // on se positionne colonne 1 ligne 2
lcd.print(Valeur_lue.value,HEX); // on affiche la valeur hexadecimale
// de la touche pressee
delay (1000);
RecepteurIR.resume(); // Recoit la valeur suivante
}
}

Ce « bout de programme » va nous permettre de relever les codes des touches pour nos utilisations futures.
Dans l’exemple ci dessous on a pressé la touche 2 et le code retourné est FF6229D.
Autres touches :
1 …………………..renvoie FFA25D
2 …………………..renvoie FF629D
3 …………………..renvoie FFE21D
flèche haute ..renvoie FF18E7
flèche basse ..renvoie FF4AB5
flèche gauche renvoie FF10EF
flèche droite renvoie FF5AA5 … etc …
Et voilà le code permettant de tester et d’afficher quelques touches pressées, il suffira dans nos (très) prochaines utilisations de remplacer les commandes d’affichage par des actions (commuter un relais, allumer une LED , changer une fréquence …. )
#include <IRremote.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
int Borne_Reception = 3;
IRrecv RecepteurIR(Borne_Reception);
decode_results Valeur_lue;
void setup()
{
lcd.begin(16, 2);
RecepteurIR.enableIRIn(); // Initialise le recepteur
lcd.print("EN RECEPTION");
}
void loop() {
if (RecepteurIR.decode(&Valeur_lue)) {
lcd.setCursor(0, 1);
if (Valeur_lue.value ==0xFFA25D) {lcd.print("T1");}
if (Valeur_lue.value ==0xFF629D) {lcd.print("T2");}
if (Valeur_lue.value ==0xFFE21D) {lcd.print("T3");}
if (Valeur_lue.value ==0xFF18E7) {lcd.print("HH");}
if (Valeur_lue.value ==0xFF4AB5) {lcd.print("BB");}
if (Valeur_lue.value ==0xFF10EF) {lcd.print("GG");}
if (Valeur_lue.value ==0xFF5AA5) {lcd.print("DD");}
lcd.setCursor(4, 1);
lcd.print (" ");
lcd.setCursor(4, 1);
lcd.print(Valeur_lue.value,HEX);
delay (1000);
RecepteurIR.resume(); // Recoit la valeur suivante
}
}
