# include # include # include // Sensor einen Namen zuweisen (dht22) int SENSOR_DHT22 = 9; SimpleDHT22 dht22(SENSOR_DHT22); RTC_DS3231 rtc; char daysOfTheWeek[7][12] = {"Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"}; // LCD einen Namen zuweisen LiquidCrystal_I2C lcd(0x27, 20, 4); // Pin des Luefters int LUEFTER = 8; void setup() { // LCD einschalten lcd.init(); lcd.backlight(); pinMode(LUEFTER, OUTPUT); // RTC starten rtc.begin(); /* wenn Datum und Zeit nicht korrekt -> Datum/Zeit setzen Jahr, Monat, Tag, Stunde, Minute, Sekunde keine fuehrende 0 setzen Beispiel: rtc.adjust(DateTime(2019, 8, 22, 20, 12, 30)); */ } void loop() { float Temperatur; // aktuelle Zeit holen DateTime aktuell = rtc.now(); // wenn Stunden < 10 -> fuehrende 0 setzen if (aktuell.hour() < 10) lcd.print("0"); lcd.print(aktuell.hour()); lcd.print(':'); // wenn Minuten < 10 -> fuehrende 0 setzen if (aktuell.minute() < 10) lcd.print("0"); lcd.print(aktuell.minute()); lcd.print(':'); // wenn Sekunden < 10 -> fuehrende 0 setzen if (aktuell.second() < 10) lcd.print("0"); lcd.print(aktuell.second()); // Daten lesen // nur Temperatur dht22.read2(&Temperatur, NULL, NULL); // in Strings umwandeln, . durch , ersetzen String AnzeigeTemperatur = String(Temperatur); AnzeigeTemperatur.replace(".", ","); // Anzeige LCD lcd.setCursor(0, 0); lcd.setCursor(0, 1); lcd.print("Temperatur: "); lcd.setCursor(0, 2); // \337C -> ° lcd.print(AnzeigeTemperatur + " \337C -> DHT22"); // Luefter einschalten if (Temperatur > 25) { digitalWrite(LUEFTER, HIGH); lcd.setCursor(0, 3); lcd.print("L\365fter eingeschaltet"); } // Luefter ausschalten else { digitalWrite(LUEFTER, LOW); lcd.setCursor(0, 3); lcd.print("L\365fter ausgeschaltet"); } delay(3000); }