
Video
Schaltplan

Quellcode
1#include <LiquidCrystal_I2C.h>
2#include <Wire.h>
3#include <DHT.h>
4
5#define DHTPIN 3
6#define DHTTYPE DHT11
7
8LiquidCrystal_I2C lcd(0x27, 16, 2);
9DHT dht(DHTPIN, DHTTYPE);
10
11void setup() {
12 dht.begin();
13 lcd.init(); // Modern libraries prefer init() over begin()
14 lcd.backlight();
15}
16
17void loop() {
18 int humidity = dht.readHumidity();
19 float temperature = dht.readTemperature();
20
21 // Check if readings failed
22 if (isnan(humidity) || isnan(temperature)) {
23 lcd.setCursor(0, 0);
24 lcd.print("Sensor Error! ");
25 return;
26 }
27
28 lcd.setCursor(0, 0);
29 lcd.print("Temp: ");
30 lcd.print(temperature);
31 lcd.print((char)223); // Degree symbol (°)
32 lcd.print("C ");
33
34 lcd.setCursor(0, 1);
35 lcd.print("Humidity: %");
36 lcd.print(humidity);
37 lcd.print(" "); // Trailing spaces to clear old data
38
39 delay(2000); // DHT11 is slow, 2 seconds is more stable
40}FAQ
Wie genau sind die DHT11-Messungen?▾
Der DHT11 misst die Temperatur mit einer Genauigkeit von ±2 °C und die Luftfeuchtigkeit mit einer Genauigkeit von ±5 % und arbeitet in einem Bereich von 0 bis 50 °C. Für genauere Messungen wird der DHT22 (±0,5 °C) oder der BME280 empfohlen.
Auf dem Bildschirm erscheint „nan“ oder eine Fehlermeldung – warum?▾
Der Sensor konnte nicht ausgelesen werden. Überprüfe den 10-kΩ-Pull-up-Widerstand am Datenpin, den in der Bibliothek eingestellten Sensortyp (DHT11) und stelle sicher, dass zwischen den Messungen mindestens 1–2 Sekunden gewartet wird.
Warum werden die Messwerte nur langsam aktualisiert?▾
Der DHT11 kann höchstens eine Messung pro Sekunde durchführen. Der Versuch, häufiger zu messen, führt zu fehlerhaften oder veralteten Werten; es wird empfohlen, zwischen den Messungen 2 Sekunden zu warten.
Kann ich die gefühlte Temperatur berechnen?▾
Ja, die Funktion `computeHeatIndex()` aus der DHT-Bibliothek berechnet die gefühlte Temperatur anhand von Temperatur und Luftfeuchtigkeit.
