#include <IRremote.h>
#include <LiquidCrystal_I2C.h>
#define PIN_RECEIVER 11
// I2C Display
#define I2C_ADDR 0x27
#define LCD_COLUMNS 16
#define LCD_LINES 2
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
IRrecv receiver(PIN_RECEIVER);
decode_results irRecvResults;
enum set_wecker_stellen { uebersicht, uebersicht_2 };
set_wecker_stellen state_wecker_stellen = set_wecker_stellen::uebersicht;
bool set_alarm_clock_entry = true;
bool weckerA = true;
bool weckerB = false;
unsigned long current_time = 0;
unsigned long acttime = 0;
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
receiver.enableIRIn(); // Aktiviere IR-Empfang
}
void loop() {
acttime = millis();
switch (state_wecker_stellen) {
case (uebersicht):
if (set_alarm_clock_entry) {
current_time = acttime;
lcd.setCursor(0, 0);
lcd.print("Wecker A:");
lcd.setCursor(0, 1);
lcd.print("Wecker B:");
set_alarm_clock_entry = false;
if (weckerA) {
lcd.setCursor(11, 0);
lcd.print("HH:MM");
}
if (weckerB) {
lcd.setCursor(11, 1);
lcd.print("HH:MM");
}
if (!weckerA) {
lcd.setCursor(11, 0);
lcd.print("aus");
}
if (!weckerB) {
lcd.setCursor(11, 1);
lcd.print("aus");
}
}
if (receiver.decode(&irRecvResults)) {
unsigned int value = irRecvResults.value;
if (value == 0xFF4AB5) { // Wert für die Taste "8" auf der Fernbedienung
lcd.setCursor(0, 0);
lcd.print("Taste 8 wurde gedrückt!");
delay(2000);
lcd.clear();
}
receiver.resume();
}
if (acttime - current_time > 2000) {
lcd.clear();
state_wecker_stellen = set_wecker_stellen::uebersicht_2;
set_alarm_clock_entry = true;
}
break;
case(uebersicht_2):
if (set_alarm_clock_entry) {
current_time = acttime;
lcd.setCursor(0, 0);
lcd.print("8 => Eingabe IRF");
lcd.setCursor(0, 1);
lcd.print("Button =>NodeRED");
set_alarm_clock_entry = false;
}
if (acttime - current_time > 2000) {
lcd.clear();
state_wecker_stellen = set_wecker_stellen::uebersicht;
set_alarm_clock_entry = true;
}
break;
}
}