#include <IRremote.h>
#include <LiquidCrystal.h>
#define PIN_RECEIVER 2 // Broche de signal du récepteur IR
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
IRrecv receiver(PIN_RECEIVER); // Broche de signal du récepteur IR
void setup() {
receiver.enableIRIn(); // Démarrer le récepteur
lcd.begin(20, 4);
lcd.setCursor(0, 0); lcd.print("Pot 1:");
lcd.setCursor(0, 1); lcd.print("Pot 2:");
lcd.setCursor(2, 2); lcd.print("<Telecommande>");
}
void loop() {
int Pot1Value = analogRead(A0);
int Pot2Value = analogRead(A1);
lcd.setCursor(8,0); lcd.print(" ");
lcd.setCursor(8,0); lcd.print(Pot1Value);
lcd.setCursor(8,1); lcd.print(" ");
lcd.setCursor(8,1); lcd.print(Pot2Value);
delay(250);
// Les checks ont reçu un signal IR
if (receiver.decode()) {
translateIR();
receiver.resume(); // Recevoir la valeur suivante
}
}
void lcdPrint(char* text)
{
lcd.setCursor(2, 3); lcd.print("bouton enfoncé:");
lcd.setCursor(0, 3); lcd.print(" ");
lcd.setCursor(0, 3); lcd.print(text);
lcd.print(" code: ");
lcd.print(receiver.decodedIRData.command);
}
void translateIR() // Prend la commande en fonction du code IR reçu
{
switch (receiver.decodedIRData.command) {
case 162: lcdPrint("POWER"); break;
case 226: lcdPrint("MENU"); break;
case 34: lcdPrint("TEST"); break;
case 2: lcdPrint("PLUS"); break;
case 194: lcdPrint("BACK"); break;
case 224: lcdPrint("PREV."); break;
case 168: lcdPrint("PLAY"); break;
case 144: lcdPrint("NEXT"); break;
case 104: lcdPrint("num: 0"); break;
case 152: lcdPrint("MINUS"); break;
case 176: lcdPrint("key: C"); break;
case 48: lcdPrint("num: 1"); break;
case 24: lcdPrint("num: 2"); break;
case 122: lcdPrint("num: 3"); break;
case 16: lcdPrint("num: 4"); break;
case 56: lcdPrint("num: 5"); break;
case 90: lcdPrint("num: 6"); break;
case 66: lcdPrint("num: 7"); break;
case 74: lcdPrint("num: 8"); break;
case 82: lcdPrint("num: 9"); break;
default:
lcd.clear();
lcd.print(receiver.decodedIRData.command);
lcd.print(" other button");
}
}