#define DECODE_NEC // DECODE_NEC
#include <IRremote.hpp> // Do not change header order.
const uint16_t s1 = 0x30; // Taste 1
const uint16_t s2 = 0x18; // Taste 2
const uint16_t s3 = 0x7A; // Taste 3
/*
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
*/
//#include <Arduino.h>
//#include <IRremote.h>
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;
uint16_t irCode;
int RECV_PIN = 11;
//IRrecv irrecv(RECV_PIN);
//decode_results results;
void setup() {
Serial.begin(9600);
IrReceiver.begin(RECV_PIN);
Serial.print(F("Ready to receive IR signals at pin "));
Serial.println(RECV_PIN);
pinMode (led, OUTPUT); // Lüfter oder eben zum testen eine LED
//irrecv.enableIRIn();
digitalWrite (led, LOW);
}
void loop() {
irCode = irReceive();
if (irCode)) {
if (irCode == 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 (irCode == 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 (irCode == 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(irCode ); // schreibe Werte der Fernbedienung in den Serial Monitor
Serial.print(" ");
irrecv.resume(); // Warte auf nächsten Wert
}
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
}
}
if (millis() - startzeitluefter > 10000) { // Wenn Zeit um mache Lüfter wieder aus
digitalWrite(led, LOW);
verzogerung == 2; // setze Variable für die Verzögerung auf 2, so dass nicht erneut ausgelöst wird
}
}