#include "DHT.h"
#define DHTPIN1 D0 // Pin für den ersten DHT22
#define DHTPIN2 D1 // Pin für den zweiten DHT22
#define DHTTYPE DHT22 // DHT 22 (AM2302)
DHT dht1(DHTPIN1, DHTTYPE);
DHT dht2(DHTPIN2, DHTTYPE);
float taupunkt = 0;
int zähler=0;
unsigned long blk1=0;
unsigned long blk=0;
// taupunktberechnng________________
// Magnus-Parameter
const float a = 17.27;
const float b = 237.7;
//__________________________________
void setup() {
Serial.begin(115200);
dht1.begin();
dht2.begin();
pinMode(D2, OUTPUT);
pinMode(D3, OUTPUT);
pinMode(D4, OUTPUT);
}
void loop() {
// Warte 2 Sekunden zwischen den Messungen
delay(1000);
// Werte vom ersten DHT22 lesen
float h1 = dht1.readHumidity();
float t1 = dht1.readTemperature();
// Werte vom zweiten DHT22 lesen
float h2 = dht2.readHumidity();
float t2 = dht2.readTemperature();
// Überprüfen, ob die Messungen erfolgreich waren
if (isnan(h1) || isnan(t1)) {
Serial.println("Fehler beim Lesen des ersten DHT22!");
} else {
//Serial.print("Sensor 1 - Temperatur: ");
//Serial.print(t1);
//Serial.print(" °C, Luftfeuchtigkeit: ");
//Serial.print(h1);
//Serial.println(" %");
}
if (isnan(h2) || isnan(t2)) {
Serial.println("Fehler beim Lesen des zweiten DHT22!");
} else {
//Serial.print("Sensor 2 - Temperatur: ");
//Serial.print(t2);
//Serial.print(" °C, Luftfeuchtigkeit: ");
//Serial.print(h2);
//Serial.println(" %");
}
// Berechne den Taupunkt
float alpha = ((a * t2) / (b + t2)) + log(h2 / 100.0);
taupunkt = (b * alpha) / (a - alpha);
//taupunkt = t2-((100-h2)/5); //nur genähert !
Serial.print("Ext.Temp.- ");
Serial.print(t1);
Serial.print(" °C ");
Serial.print("Raumkon.- ");
Serial.print(t2);Serial.print(" °C ");Serial.print(h2);Serial.print(" %");
Serial.print(" Taupunkt- ");
Serial.print(taupunkt);Serial.println(" °C");
if (t1 < taupunkt) {digitalWrite(D2, HIGH);} //schaltpunkt rot
else {digitalWrite(D2, LOW);}
if (t1 <= taupunkt+3 & t1 >= taupunkt) {digitalWrite(D3, HIGH);} //schaltpunkt blau
else {digitalWrite(D3, LOW);}
if (t1> taupunkt+3) {digitalWrite(D4, HIGH);} // grün
else {digitalWrite(D4, LOW);}
// blinken bau
if (t1 <= taupunkt+1.5 & t1 >= taupunkt-0.5) {
blk=millis();
if (blk-blk1 >= 800){
zähler++;
blk1 = blk;
if (zähler == 1) {
digitalWrite(D3, HIGH);}
else {digitalWrite(D3, LOW);}
if (zähler > 1) {
zähler = 0;
}
}
}
} // ende void loop !
Raumkonditionen
Taupunktstelle