#include <IRremote.hpp>
enum : uint16_t {
onoff = 0x00A2, menu = 0x00E2,
test = 0x0022, plus = 0x0002, entree = 0x00C2,
retrap = 0x00E0, joue = 0x00A8, avrap = 0x0090,
zero = 0x0068, moins = 0x0098, efface = 0x00B0,
un = 0x0030, deux = 0x0018, trois = 0x007A,
quatre = 0x0010, cinq = 0x0038, six = 0x005A,
sept = 0x0042, huit = 0x004A, neuf = 0x0052,
};
enum : uint8_t {AUCUN, PGM1, PGM2} mode = AUCUN;
void pgm1() {
static const uint32_t periode = 1000;
static uint32_t chrono = -periode;
if (millis() - chrono >= periode) {
Serial.println(F("\tune étape dans PGM1"));
chrono = millis();
}
}
void pgm2() {
static const uint32_t periode = 500;
static uint32_t chrono = -periode;
if (millis() - chrono >= periode) {
Serial.println(F("\tune étape dans PGM2"));
chrono = millis();
}
}
void setup() {
IrReceiver.begin(2, false);
Serial.begin(115200);
}
void loop() {
if (IrReceiver.decode()) {
switch (IrReceiver.decodedIRData.command) {
case onoff: Serial.println(F("onoff")); break;
case menu: Serial.println(F("menu")); break;
case test: Serial.println(F("test")); break;
case plus: Serial.println(F("plus")); break;
case entree: Serial.println(F("entree")); break;
case retrap: Serial.println(F("retrap")); break;
case joue: Serial.println(F("joue")); break;
case avrap: Serial.println(F("avrap")); break;
case zero: Serial.println(F("zero")); break;
case moins: Serial.println(F("moins")); break;
case efface: Serial.println(F("efface")); mode = AUCUN; break;
case un: Serial.println(F("un")); mode = PGM1; break;
case deux: Serial.println(F("deux")); mode = PGM2; break;
case trois: Serial.println(F("trois")); break;
case quatre: Serial.println(F("quatre")); break;
case cinq: Serial.println(F("cinq")); break;
case six: Serial.println(F("six")); break;
case sept: Serial.println(F("sept")); break;
case huit: Serial.println(F("huit")); break;
case neuf: Serial.println(F("neuf")); break;
}
IrReceiver.resume();
}
switch (mode) {
case AUCUN: break;
case PGM1: pgm1(); break;
case PGM2: pgm2(); break;
}
}