Mein weiß nie wann man Lüften soll und wenn doch wie lange. Das Problem kann man Mathematisch mit einem Arduino lösen. Er ist in der Lage uns den Taupunkt zu berechnen.
//SENSOR #include <Wire.h> #include <AM2320.h> AM2320 th; //DISPLAY #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //REFERENZEN !!!!! //https://www.wetterochs.de/wetter/feuchte.html //Vielen Dank an den Wetterochsen für seine nahezu perfekte Annäherung zu berechnung des Taupunktes. void setup() { Serial.begin(9600); Wire.begin(); Serial.print("Start"); lcd.begin(20, 4); lcd.setCursor(0,0); lcd.print("Luftfeuchte: "); lcd.setCursor(0,1); lcd.print("Temperatur: "); lcd.setCursor(0,2); lcd.print("Abs. Feuchte: "); lcd.setCursor(0,3); lcd.print("Taupunkt: "); } unsigned long previousMillis = 0; void loop() { if (millis() - previousMillis >= 1000) { previousMillis = millis(); switch(th.Read()) { case 2: Serial.println("CRC failed"); break; case 1: Serial.println("Sensor offline"); break; case 0: Serial.print("humidity: "); Serial.print(th.h); lcd.setCursor(14,0); lcd.print(th.h); Serial.print("%, temperature: "); Serial.print(th.t); Serial.println("*C"); if(th.t >= 0) { lcd.setCursor(13,1); lcd.print(" "); lcd.setCursor(14,1); lcd.print(th.t); } else { lcd.setCursor(13,1); lcd.print(th.t); } double T = th.t; double r = th.h; double a = 0; double b = 0; if(T >= 0) { a = 7.5; b = 237.3; } else { a = 7.6; b = 240.7; } double SDD = 6.1078 * pow(10,((a*T)/(b+T))); double DD = r/100 * SDD; double v = log10(DD/6.1078); double TD = b*v/(a-v); lcd.setCursor(14,3); lcd.print(TD); double TK = T + 273.15; double mw = 18.016; //Molekulargewicht des Wasserdampfes double R = 8314.3; //J/(kmol*K) (universelle Gaskonstante) double AF = pow(10,5) * mw / R * DD / TK; lcd.setCursor(14,2); lcd.print(AF); if(AF >= 0) { lcd.setCursor(13,2); lcd.print(" "); lcd.setCursor(14,2); lcd.print(AF); } else { lcd.setCursor(13,2); lcd.print(AF); } lcd.setCursor(19,0); lcd.print((char)223); //Degree symbol lcd.setCursor(19,1); lcd.print((char)223); lcd.setCursor(19,2); lcd.print("%"); lcd.setCursor(19,3); lcd.print((char)223); break; } } }