#include <IRremote.h>
#include <LiquidCrystal.h>
#define PIN_RECEIVER 2
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
IRrecv receiver(PIN_RECEIVER); //Borche de signal du récepteur IR
void setup() { // Initialisation
receiver.enableIRIn(); //Démarre le récepteur
lcdIni();
}
void lcdIni() {
lcd.begin(20, 4); delay(2000);
lcd.setCursor(4, 0); lcd.print("Telecommande"); delay(2000);
lcd.setCursor(0, 1); lcd.print("<Pressez une touche>");
}
void loop() {
if (receiver.decode()) {
translateIR();
// delay(2000);
receiver.resume(); // Recevoir la valeur suivante
lcd.setCursor(0, 1); lcd.print("<Pressez une touche>");
}
}
void lcdPrint(char* text) {
lcd.clear();
lcd.setCursor(4, 0); lcd.print("Telecommande");
lcd.setCursor(3, 1); lcd.print("Bouton enfonce");
lcd.setCursor(6, 2); lcd.print("Code: ");
lcd.print(receiver.decodedIRData.command);
lcd.setCursor(4, 3);
lcd.print(text);
delay(2000);
lcd.setCursor(0, 1); lcd.print("<------------------>");
delay(2000);
}
void translateIR(){
switch (receiver.decodedIRData.command) {
case 162: lcdPrint("Touche: POWER"); break;
case 226: lcdPrint("Touche: MENU"); break;
case 34: lcdPrint("Touche: TEST"); break;
case 2: lcdPrint("Touche: PLUS"); break;
case 194: lcdPrint("Touche: BACK"); break;
case 224: lcdPrint("Touche: PREV."); break;
case 168: lcdPrint("Touche: PLAY"); break;
case 144: lcdPrint("Touche: NEXT"); break;
case 104: lcdPrint("Touche: 0"); break;
case 152: lcdPrint("Touche: MINUS"); break;
// Appel de la fonction "lcdReset()" après avoir appuyé sur la touche C
case 176: lcdPrint("Touche: C"); delay(2000); lcdReset(); break;
case 48: lcdPrint("Touche: 1"); break;
case 24: lcdPrint("Touche: 2"); break;
case 122: lcdPrint("Touche: 3"); break;
case 16: lcdPrint("Touche: 4"); break;
case 56: lcdPrint("Touche: 5"); break;
case 90: lcdPrint("Touche: 6"); break;
case 66: lcdPrint("Touche: 7"); break;
case 74: lcdPrint("Touche: 8"); break;
case 82: lcdPrint("Touche: 9"); break;
default:
lcd.clear();
lcd.print(receiver.decodedIRData.command);
lcd.print(" other button");
}
}
void lcdReset(){
lcd.clear(); delay(1000);
lcd.setCursor(4, 0); lcd.print("La touche <C>");
lcd.setCursor(0, 1); lcd.print("Appelle la fonction.");
lcd.setCursor(6, 2); lcd.print("lcdReset");
lcd.setCursor(0, 3); lcd.print("et affiche ce texte.");
delay(6000);
lcd.clear();
lcd.setCursor(0, 0); lcd.print("1- Appelle lcdReset."); delay(2000);
lcd.setCursor(0, 1); lcd.print("2- Efface l'ecran."); delay(2000);
lcd.setCursor(0, 2); lcd.print("3- Reinitialise");
lcd.setCursor(4, 3); lcd.print("le programme"); delay(3000);
lcd.clear();
lcd.setCursor(2, 1); lcd.print("Reinitialisation"); //delay(2000);
lcd.setCursor(2, 3); lcd.print("dans 03 secondes"); delay(1000);
lcd.setCursor(2, 3); lcd.print("dans 02 secondes"); delay(1000);
lcd.setCursor(2, 3); lcd.print("dans 01 secondes"); delay(1000);
lcd.setCursor(2, 3); lcd.print("dans 00 secondes"); delay(1000);
setup();
}