#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