Hallo
ich habe ein NanoESP mit einem DHT und einem LCD Display 16x2 I2C verbunden. Soweit funktioniert das ganz hardwaremässig auch. Allerdings wird unter gewissen Umständen der Feuchtigkeitswert als NAN (not a number) im LCD dargestellt (siehe unten). Mein Sketch sieht wie folgt aus:
/*
* Libraries
*/
#include <DHT.h>
#include <SoftwareSerial.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHTTYPE DHT22
const int DHTPIN = 4;
double v;
char value[10];
String temperature;
String humidity;
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup()
{
Serial.begin(19200);
dht.begin();
lcd.begin();
lcd.backlight();
}
void loop()
{
v = dht.readTemperature();
dtostrf(v, 10, 1, value);
temperature = value;
Serial.print("Raumtemperatur: ");
Serial.print(temperature);
Serial.println(" °C");
v = dht.readHumidity();
Serial.println(String(v));
dtostrf(v, 10, 1, value);
humidity = value;
Serial.print("Relative Luftfeuchtigkeit: ");
Serial.print(humidity);
Serial.println(" %");
lcd.clear();
lcd.setCursor(0,0);
lcd.print("RT:");
lcd.print(temperature);
lcd.print(" ");
lcd.print((char)223);
lcd.print("C");
lcd.setCursor(0,1);
lcd.print("RH:");
lcd.print(humidity);
lcd.print(" %");
delay(2000);
}
Man beachte folgendes: Wenn ich die Zeile nach v = dht.readHumidity();, also Serial.println(String(v)); auskommentiere, dann erhalte ich auf dem Display folgende Zeilen:
RT: 26.2 *C
RH: NAN %
Wenn ich die Zeile aktiviere, dann erhalte ich im Display (korrekt):
RT: 26.2 *C
RH: 44.5 %
Kann mir jemand erklären, warum ein simples fehlendes Serial.println mir den Wert für humidity verhunzt?
Ich bin dankbar für jeden Hinweis!
Vielen Dank
Christian