#include <IRremote.hpp>
const int pinBuzzer = A7; // buzzer sur A7
const int pinIR = 18;
const int pinOut1 = 3;
const int pinOut2 = 4;
const int pinOut3 = 5;
const int pinTemoin = 6;
bool flagDizaine = false;
uint32_t precedentChronoDetection = 0;
const uint32_t detectionDelai = 200;
void setup() {
Serial.begin(9600);
pinMode(pinIR,INPUT_PULLUP);
pinMode(pinOut1, OUTPUT);
pinMode(pinOut2, OUTPUT);
pinMode(pinOut3, OUTPUT);
pinMode(pinTemoin, OUTPUT);
pinMode(pinBuzzer, OUTPUT);
/* initialisation de la lecture IR */
IrReceiver.begin(pinIR, ENABLE_LED_FEEDBACK); // seulement IR sur D18 avec led interne (D13) en témoin
/* =============================== */
} // Fin de setup
void loop() {
if ((IrReceiver.decode()) && (IrReceiver.decode() != -1)) {
decodeSignalIR();
} // Fin de if ((IrReceiver.decode()) && (IrReceiver.decode() != -1))
} // Fin de loop
void delay_ms (uint8_t compteur)
{
for (uint8_t t = 0; t < compteur; t++)
{
delayMicroseconds(10000);
}
}
void decodeSignalIR(){
Serial.print(F("detection IR => "));
//Serial.println(IrReceiver.decode());
if (millis() - precedentChronoDetection >= detectionDelai) {
switch(IrReceiver.decodedIRData.decodedRawData){
// Télécommande 21 touches sur la 1er ligne
// Télécommande 17 touches sur la 2eme
// Télécommande wokwi sur la 3ème ligne /!\ interférences pour les touches 6 et 9 /!\
// avec IRrmote.hpp
case 0xEF10BF00:
case 0xBA45FF00:
case 0xCF30FF00:
if (flagDizaine == true){
flagDizaine = false;
Serial.println(F("Aiguillage 11 "));
} else {
Serial.println(F("Aiguillage 1 "));
digitalWrite(pinOut1, HIGH);
delay_ms(15);
digitalWrite(pinOut1, LOW);
} // Fin de if (flagDizaine == true)
//tone(pinBuzzer,1000,50);
break;
// avec IRrmote.hpp
case 0xEE11BF00:
case 0xB946FF00:
case 0xE718FF00:
if (flagDizaine == true){
flagDizaine = false;
Serial.println(F("Aiguillage 12"));
} else {
Serial.println(F("Aiguillage 2"));
digitalWrite(pinOut2, HIGH);
delay_ms(15);
digitalWrite(pinOut2, LOW);
} // Fin de if (flagDizaine == true)
//tone(pinBuzzer,1000,50);
break;
// avec IRrmote.hpp
case 0xED12BF00:
case 0xB847FF00:
case 0x857AFF00:
if (flagDizaine == true){
flagDizaine = false;
Serial.println(F("Aiguillage 13"));
} else {
Serial.println(F("Aiguillage 3"));
digitalWrite(pinOut3, HIGH);
delay_ms(15);
digitalWrite(pinOut3, LOW);
} // Fin de if (flagDizaine == true)
//tone(pinBuzzer,1000,50);
break;
// avec IRrmote.hpp
case 0xEB14BF00:
case 0xBB44FF00:
case 0xEF10FF00:
if (flagDizaine == true){
flagDizaine = false;
Serial.println(F("Aiguillage 14"));
} else {
Serial.println(F("Aiguillage 4"));
} // Fin de if (flagDizaine == true)
//tone(pinBuzzer,1000,50);
break;
// avec IRrmote.hpp
case 0xEA15BF00:
case 0xBF40FF00:
case 0xC738FF00:
if (flagDizaine == true){
flagDizaine = false;
Serial.println(F("Aiguillage 15"));
} else {
Serial.println(F("Aiguillage 5"));
} // Fin de if (flagDizaine == true)
//tone(pinBuzzer,1000,50);
break;
// avec IRrmote.hpp
case 0xE916BF00:
case 0xBC43FF00:
if (flagDizaine == true){
flagDizaine = false;
Serial.println(F("Aiguillage 16"));
} else {
Serial.println(F("Aiguillage 6"));
} // Fin de if (flagDizaine == true)
//tone(pinBuzzer,1000,50);
break;
// avec IRrmote.hpp
case 0xE718BF00:
case 0xF807FF00:
case 0xBD42FF00:
flagDizaine = false;
Serial.println(F("Aiguillage 7"));
//tone(pinBuzzer,1000,50);
break;
// avec IRrmote.hpp
case 0xE619BF00:
case 0xEA15FF00:
case 0xB54AFF00:
flagDizaine = false;
Serial.println(F("Aiguillage 8"));
//tone(pinBuzzer,1000,50);
break;
// avec IRrmote.hpp
case 0xE51ABF00:
case 0xF609FF00:
flagDizaine = false;
Serial.println(F("Aiguillage 9"));
//tone(pinBuzzer,1000,50);
break;
// avec IRrmote.hpp
case 0xF30CBF00:
case 0xE619FF00:
if (flagDizaine == false) {
flagDizaine = true;
Serial.println(F("Aiguillage + 10"));
} else {
flagDizaine = false;
Serial.println(F("Aiguillage 10"));
}
//tone(pinBuzzer,1000,50);
break;
// avec IRrmote.hpp
case 0xFE01BF00:
case 0xE916FF00:
case 0x9768FF00:
flagDizaine = true;
Serial.println(F("Aiguillage +10"));
//Serial.println(IrReceiver.decodedIRData.decodedRawData,HEX);
//tone(pinBuzzer,1000,50);
break;
// avec IRrmote.hpp
case 0xF609BF00:
case 0xE31CFF00:
case 0x3DC2FF00:
flagDizaine = false;
Serial.println(F("Validation"));
//Serial.println(IrReceiver.decodedIRData.decodedRawData,HEX);
break;
// avec IRrmote.hpp
case 0xF10EBF00:
case 0xF20DFF00:
case 0x4FB0FF00:
Serial.println(F("Abandon"));
flagDizaine = false;
//Serial.println(IrReceiver.decodedIRData.decodedRawData,HEX);
break;
// avec IRrmote.hpp
case 0xFA05BF00:
//case 0xE718FF00:
case 0xFD02FF00:
Serial.println(F("angle +"));
//Serial.println(IrReceiver.decodedIRData.decodedRawData,HEX);
break;
// avec IRrmote.hpp
case 0xF20DBF00:
case 0xAD52FF00:
case 0x6798FF00:
Serial.println(F("angle -"));
//Serial.println(IrReceiver.decodedIRData.decodedRawData,HEX);
break;
// avec IRrmote.hpp
case 0xF708BF00:
case 0xF708FF00:
Serial.println(F("angle Direct"));
//Serial.println(IrReceiver.decodedIRData.decodedRawData,HEX);
break;
// avec IRrmote.hpp
case 0xF50ABF00:
case 0xA55AFF00:
Serial.println(F("angle Devie"));
//Serial.println(IrReceiver.decodedIRData.decodedRawData,HEX);
break;
// avec IRrmote.hpp
case 0xFD00FF:
case 0xFF00BF00:
case 0x6F90FF00:
Serial.println(F("Reglage"));
//Serial.println(IrReceiver.decodedIRData.decodedRawData,HEX);
break;
// avec IRrmote.hpp
case 0xFD40BF:
case 0xFD02BF00:
case 0x1FE0FF00:
Serial.println(F("Commande"));
//Serial.println(IrReceiver.decodedIRData.decodedRawData,HEX);
break;
case 0xFFFFFFFF:
break;
default:
Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX);
Serial.print(F(" - "));Serial.println(F(" Touche non reconnue "));
digitalWrite(pinTemoin, HIGH);
delay_ms(15);
digitalWrite(pinTemoin, LOW);
flagDizaine = false;
//tone(pinBuzzer,10000,100);
} // Fin de switch(results.value)
IrReceiver.resume();
delay_ms(20);
precedentChronoDetection = millis();
} // Fin de if (millis() - precedentChronoDetection >= detectionDelai)
} // Fin de procedure decodeSignalIR()
/* ========================================================================== */