#include <LiquidCrystal_I2C.h>
#include <DHT.h>
// LCD-Konfiguration
#define LCD_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_ROWS 4
LiquidCrystal_I2C lcd(LCD_ADDR, LCD_COLUMNS, LCD_ROWS);
// Sensor-Konfiguration
#define SENSOR_PIN 2
#define DHTTYPE DHT22
DHT dht(SENSOR_PIN, DHTTYPE);
// Aktualisierungsintervall
const unsigned long updateInterval = 2000; // Daten alle 2 Sekunden aktualisieren
unsigned long lastUpdate = 0;
void setup() {
// LCD initialisieren
lcd.begin(LCD_COLUMNS, LCD_ROWS);
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("System startet...");
// Sensor initialisieren
dht.begin();
delay(2000); // Kurze Verzögerung
lcd.clear();
}
void loop() {
// Überprüfen, ob das Update-Intervall abgelaufen ist
unsigned long currentMillis = millis();
if (currentMillis - lastUpdate >= updateInterval) {
lastUpdate = currentMillis;
// Sensordaten auslesen und anzeigen
displaySensorData();
}
}
void displaySensorData() {
// Temperatur und Luftfeuchtigkeit auslesen
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Display aktualisieren
lcd.clear();
if (isnan(temperature) || isnan(humidity)) {
lcd.setCursor(0, 0);
lcd.print("Sensor-Fehler!");
lcd.setCursor(0, 1);
lcd.print("Bitte pruefen!");
} else {
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature, 1);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Feuchte: ");
lcd.print(humidity, 1);
lcd.print(" %");
}
}