#define DECODE_NEC // DECODE_NEC
#include <IRremote.hpp> // Do not change header order.
uint32_t startzeitluefter; // Timer zum Ausschalten des Lüfters
uint32_t wartezeit; // Timer für die Verzögerung
int verzogerung = 0; // zusätzliche Variable für die Verzögerung
const uint8_t led = 12;
//int RECV_PIN = 11;
int RECV_PIN = 2;
/*
const uint32_t s1 = 1082110031; //Schalte Lüftung ein
const uint32_t s2 = 1082075351; //Schalte Lüftung aus
const uint32_t s3 = 1082122271; //Schalte Lüftung Verzögert ein
*/
const uint16_t s1 = 0x30; // Taste 1
const uint16_t s2 = 0x18; // Taste 2
const uint16_t s3 = 0x7A; // Taste 3
void setup() {
Serial.begin(9600);
pinMode (led, OUTPUT); // Lüfter oder eben zum testen eine LED
digitalWrite (led, LOW);
IrReceiver.begin(RECV_PIN);
Serial.print(F("Ready to receive IR signals at pin "));
Serial.println(RECV_PIN);
}
void loop() {
static uint16_t irSwitch;
irSwitch = irReceive(); // liefert Zahlenwerte für Taste 1,2 und 3
if (irSwitch) {
if (irSwitch == s1) { // Regelung Lüfter Dampf
digitalWrite (led, HIGH); // mache Lüfter an
startzeitluefter = millis(); // starte Zeit um Lüfter danach wieder abzustellen
verzogerung = 1; // stelle Variable Verzögerung auf 1 damit ist die zweite Voraussetzung für die IF Abfrage gegeben
}
if (irSwitch == s2) { // mache Lüfter Dampf aus
digitalWrite (led, LOW);
verzogerung = 2; // stelle Variable Verzögerung auf 2 damit ist die zweite Voraussetzung für die IF Abfrage NICHT mehr gegeben
}
if (irSwitch == s3) { //Schalte Lüftung Verzögert ein
digitalWrite (led, LOW); // Schalte Lüftung erstmal aus
wartezeit = millis(); // Schalte Timer für die Verzögerung an
}
Serial.print(" Code=" ); // schreibe Werte der Fernbedienung in den Serial Monitor
Serial.print(irSwitch); // schreibe Werte der Fernbedienung in den Serial Monitor
Serial.print(" ");
//irrecv.resume(); // Warte auf nächsten Wert
//irSwitch = 0;
}
//if (millis() - wartezeit == 5000) { // prüfe ob Zeit schon abgelaufen
if (millis() - wartezeit >= 5000) { // prüfe ob Zeit schon abgelaufen
if (verzogerung == 1) { // prüfe ob die Variable im Richtigen Zustand ist
digitalWrite(led, HIGH); // Schalte Lüfter / Led ein
//startzeitluefter == millis(); // starte Zeit um Lüfter danach wieder abzustellen
Serial.print("startzeitluefter=");
Serial.println(startzeitluefter);
}
}
if (millis() - startzeitluefter > 10000) { // Wenn Zeit um mache Lüfter wieder aus
Serial.println("startzeitluefter > 10000 => led AUS" );
digitalWrite(led, LOW);
//verzogerung == 2; // setze Variable für die Verzögerung auf 2, so dass nicht erneut ausgelöst wird
verzogerung = 2; // setze Variable für die Verzögerung auf 2, so dass nicht erneut ausgelöst wird
}
}
uint16_t irReceive() {
uint16_t received{0};
if (IrReceiver.decode()) {
//IrReceiver.printIRResultShort(&Serial);
if (IrReceiver.decodedIRData.protocol == UNKNOWN) {
// We have an unknown protocol here, print more info
IrReceiver.printIRResultRawFormatted(&Serial, true);
}
if (IrReceiver.decodedIRData.protocol == NEC) {
received = IrReceiver.decodedIRData.command;
//Serial.print("Command: 0x");
//Serial.println(received, HEX);
}
IrReceiver.resume();
}
return received;
}