Funksteckdosen, DHT 11 Temperaturfühler, LCD Display

Hallo zusammen,

ich stehe gerade ziemlich auf dem Schlauch. Ich bin neu hier und habe mir für ein paar Winterprojekte einen Arduino zugelegt.

Ich arbeite gerade an einer Hauswetterstation die zentral diverse Funksteckdosen schalten soll.

An dem Arduino soll ein LCD Display (Luftfeuchtigkeit, Temperatur, Uhrzeit), ein RTC Modul, ein Temperaturmodul, ein Funk-Modul und eine Infrarot Fernbedienung funktionieren.

Aktuell eingebunden habe ich die Infrarot Fernbedienung und das Thermomodul (DHT-11).

Vier Ausgänge kann ich bereits mit der Fernbedienung ohne Probleme schalten.

Das Einbinden des Thermomoduls hat auch ganz gut geklappt, nur leider liefert mir das Teil keine Werte über den Seriellen Monitor (DHT-11 Read failed).

Ich habe dem Sketch des Beispiels genutzt. Wenn ich bei meinem Aufbau den Beispielsketch benutze funktioniert das Teil ohne Probleme. Komisch… Ich hoffe ihr könnt mir helfen.

Hier der Sketch:

#include <IRremote.h>   //Bib Fernbedienung

int receiver = 11; // Signal Pin of IR receiver to Arduino Digital Pin 11     //Fernbedieung
/*-----( Declare objects )-----*/
IRrecv irrecv(receiver);     // create instance of 'irrecv'
decode_results results;      // create instance of 'decode_results'


#include <SimpleDHT.h>

 int pinDHT11 = 6;       //Definieren Thermometer
 SimpleDHT11 dht11;
 byte temperature = 0;
 byte humidity = 0;
 byte data[40] = {0};


int Dose1 = 2;    //Definieren Ausgänge Steckdosen
int Dose2 = 3;
int Dose3 = 4;
int Dose4 = 5;


void setup()  // put your setup code here, to run once:
{


Serial.begin(9600);                             //Serial Monitor Fernbedienung
Serial.println("IR Receiver Button Decode"); 
irrecv.enableIRIn(); // Start the receiver


pinMode(Dose1, OUTPUT);   //Setup Ausgänge Steckdosen
pinMode(Dose2, OUTPUT);
pinMode(Dose3, OUTPUT);
pinMode(Dose4, OUTPUT);



  digitalWrite(Dose1, HIGH);    //Test alle Ausgänge
  delay(1000);
  digitalWrite(Dose1, LOW);
  delay(1000);
  digitalWrite(Dose2, HIGH);
  delay(1000);
  digitalWrite(Dose2, LOW);
  delay(1000);
  digitalWrite(Dose3, HIGH);
  delay(1000);
  digitalWrite(Dose3, LOW);
  delay(1000);
  digitalWrite(Dose4, HIGH);
  delay(1000);
  digitalWrite(Dose4, LOW);
  delay(1000);





}

void loop()  // put your main code here, to run repeatedly:
{

  

 if (irrecv.decode(&results)) // have we received an IR signal?
 {
  
  
    Serial.println(results.value);
    if(results.value == 16724175)     //Fernbedieung Dose 1
    {
      digitalWrite(Dose1, HIGH);
      Serial.println("Steckdose_1 AN");
    }
    if(results.value == 16753245)
    {
      digitalWrite(Dose1, LOW);
    }

    
    if(results.value == 16718055)     //Fernbedienung Dose2
    {
      digitalWrite(Dose2, HIGH);
      Serial.println("Steckdose_2 AN");
    }
    if(results.value == 16753245)
    {
      digitalWrite(Dose2, LOW);
    }

     if(results.value == 16743045)     //Fernbedienung Dose3
    {
      digitalWrite(Dose3, HIGH);
      Serial.println("Steckdose_3 AN");
    }
    if(results.value == 16753245)
    {
      digitalWrite(Dose3, LOW);
    }


    if(results.value == 16716015)     //Fernbedienung Dose4
    {
      digitalWrite(Dose4, HIGH);
      Serial.println("Steckdose_4 AN");
    }
    if(results.value == 16753245)
    {
      digitalWrite(Dose4, LOW);
    }


    if(results.value == 16738455)     //Fernbedienung Alle AN
    {
     digitalWrite(Dose1, HIGH);
     digitalWrite(Dose2, HIGH);
     digitalWrite(Dose3, HIGH);
     digitalWrite(Dose4, HIGH);
     Serial.println("Alle Steckdosen AN");
    }
    if(results.value == 16753245)
    {
      digitalWrite(Dose4, LOW);
    }  
    irrecv.resume(); // receive the next value

       
  }


  // End Case

  delay(500); // Do not get immediate repeat



  // start working...
  Serial.println("=================================");
  Serial.println("Sample DHT11...");
  
  // read with raw sample data.

  if (dht11.read(pinDHT11, &temperature, &humidity, data)) {
    Serial.print("Read DHT11 failed");
    return;
  }
  
  Serial.print("Sample RAW Bits: ");
  for (int i = 0; i < 40; i++) {
    Serial.print((int)data[i]);
    if (i > 0 && ((i + 1) % 4) == 0) {
      Serial.print(' ');
    }
  }
  Serial.println("");
  
  Serial.print("Sample OK: ");
  Serial.print((int)temperature); Serial.print(" *C, ");
  Serial.print((int)humidity); Serial.println(" %");
  
  // DHT11 sampling rate is 1HZ.
  delay(1000);
  
}

Bitte setze Deinen Sketch in Codetags (oben links </> im Foreneditor oder [code] davor und [/code] dahinter - ohne die *).
Das kannst Du auch noch nachträglich durch Editieren tun. Bitte mach das, der Sketch ist besser zu lesen, besonders auf mobilen Geräten.

delay() mit so vielen Steuerungen ist keine gute Idee. In der Überschrift schreibst Du DHT22, im Text und Code DHT11 - welcher denn nun?

Gruß Tommy

Vielen Dank für den Hinweis.

Verbaut ist ein DHT - 11.

Gruß,
Flo

Moin zusammen,

ich habe den Code nochmal angepasst.

Was mir auffällt wenn ich den Seriellen Monitor betrachte.

Bei meinem Programm wird die Temperaturmessung viel häufiger vorgenommen als in dem Beispielprogramm.

Ich hoffe jemand kann mir helfen!

Hier nochmal der Code:

#include <IRremote.h>   //Bib Fernbedienung

int receiver = 11; // Signal Pin of IR receiver to Arduino Digital Pin 11     //Fernbedieung
/*-----( Declare objects )-----*/
IRrecv irrecv(receiver);     // create instance of 'irrecv'
decode_results results;      // create instance of 'decode_results'


#include <SimpleDHT.h>

 int pinDHT11 = 6;       //Definieren Thermometer
 SimpleDHT11 dht11;



int Dose1 = 2;    //Definieren Ausgänge Steckdosen
int Dose2 = 3;
int Dose3 = 4;
int Dose4 = 5;


void setup()  // put your setup code here, to run once:
{


Serial.begin(9600);                             //Serial Monitor Fernbedienung
Serial.println("IR Receiver Button Decode"); 
irrecv.enableIRIn(); // Start the receiver


pinMode(Dose1, OUTPUT);   //Setup Ausgänge Steckdosen
pinMode(Dose2, OUTPUT);
pinMode(Dose3, OUTPUT);
pinMode(Dose4, OUTPUT);



  digitalWrite(Dose1, HIGH);    //Test alle Ausgänge
  delay(1000);
  digitalWrite(Dose1, LOW);
  delay(1000);
  digitalWrite(Dose2, HIGH);
  delay(1000);
  digitalWrite(Dose2, LOW);
  delay(1000);
  digitalWrite(Dose3, HIGH);
  delay(1000);
  digitalWrite(Dose3, LOW);
  delay(1000);
  digitalWrite(Dose4, HIGH);
  delay(1000);
  digitalWrite(Dose4, LOW);
  delay(1000);





}




  void Fernbedienung()
  {
    
   

    if (irrecv.decode(&results)) // have we received an IR signal?
     {
  
    
      Serial.println(results.value);
     if(results.value == 16724175)     //Fernbedieung Dose 1
     {
      digitalWrite(Dose1, HIGH);
      Serial.println("Steckdose_1 AN");
     }
     if(results.value == 16753245)
     {
      digitalWrite(Dose1, LOW);
     }

    
     if(results.value == 16718055)     //Fernbedienung Dose2
     {
      digitalWrite(Dose2, HIGH);
      Serial.println("Steckdose_2 AN");
      }
      if(results.value == 16753245)
      {
       digitalWrite(Dose2, LOW);
      }

       if(results.value == 16743045)     //Fernbedienung Dose3
       {
      digitalWrite(Dose3, HIGH);
      Serial.println("Steckdose_3 AN");
      }
     if(results.value == 16753245)
     {
      digitalWrite(Dose3, LOW);
      }


    if(results.value == 16716015)     //Fernbedienung Dose4
    {
      digitalWrite(Dose4, HIGH);
      Serial.println("Steckdose_4 AN");
    }
    if(results.value == 16753245)
    {
      digitalWrite(Dose4, LOW);
    }


    if(results.value == 16738455)     //Fernbedienung Alle AN
    {
     digitalWrite(Dose1, HIGH);
     digitalWrite(Dose2, HIGH);
     digitalWrite(Dose3, HIGH);
     digitalWrite(Dose4, HIGH);
     Serial.println("Alle Steckdosen AN");
    }
    if(results.value == 16753245)
    {
      digitalWrite(Dose4, LOW);
    }  
    irrecv.resume(); // receive the next value
    }
       
  }

void Temperatur()
{
  
  // start working...
  Serial.println("=================================");
  Serial.println("Sample DHT11...");
  
  // read with raw sample data.
  byte temperature = 0;
  byte humidity = 0;
  byte data[40] = {0};
  if (dht11.read(pinDHT11, &temperature, &humidity, data)) {
    Serial.print("Read DHT11 failed");
    return;
  }
  
  Serial.print("Sample RAW Bits: ");
  for (int i = 0; i < 40; i++) {
    Serial.print((int)data[i]);
    if (i > 0 && ((i + 1) % 4) == 0) {
      Serial.print(' ');
    }
  }
  Serial.println("");
  
  Serial.print("Sample OK: ");
  Serial.print((int)temperature); Serial.print(" *C, ");
  Serial.print((int)humidity); Serial.println(" %");
  
  // DHT11 sampling rate is 1HZ.
  delay(1000);
}

  
void loop()
{
  Fernbedienung();
  Temperatur();
}

// DHT11 sampling rate is 1HZ.
delay(1000);

das hast du gesehen ?

Dadurch wird deine IR-Fernbedienung ( wofür ist die gut ?) verzögert,
und die DHT Messung ziemlich häufig gemacht.

FloMorris:
ich habe den Code nochmal angepasst.

Was mir auffällt wenn ich den Seriellen Monitor betrachte.

Bei meinem Programm wird die Temperaturmessung viel häufiger vorgenommen als in dem Beispielprogramm.

Das kann nicht sein, da alles hintereinander in der Loop läuft. (1 Sek. verzögert)

Funktioniert jetzt deine Anzeige des DHT11 ?

Ich kenne deine Library für den DHT11 nicht, aber warum nimmst du "RawBits" und nicht das Beispiel "DHT11Default" ?

Und ändere bitte noch den Titel deines Threads auf "DHT11", das kannst du im Startpost ändern.

Und dein Funksteckdosen kann ich nicht finden.

Edit:
Ja, Michael_x hat es geschrieben, in der 1 Sek. Wartezeit passiert nichts und du kannst die Fernbedienung nicht bedienen.

Hallo zusammen,
vielen Dank für die schnellen Antworten.

Ich habe jetzt das andere DHT11 Programm eingefügt und den delay von einer Sekunde entfernt.

Gleiches Problem mir wird von der Temperaturmessung immer nur “Read DHT11 failed” angezeigt.

Ich versuche mich an einer kleinen Haus Automation.

Bisher habe ich hinbekommen via der Infrarot Fernbedienung vier unterschiedliche Ausgänge zu schalten. Diese Ausgänge will ich später mit einem Funkmodul verknüpfen um damit Funksteckdosen zu schalten.

Der DHT11 soll dafür benutzt werden um später an dem Bedienelement immer die aktuelle Raumtemperatur anzeigen zu können.

#include <IRremote.h>   //Bib Fernbedienung

int receiver = 11; // Signal Pin of IR receiver to Arduino Digital Pin 11     //Fernbedieung
/*-----( Declare objects )-----*/
IRrecv irrecv(receiver);     // create instance of 'irrecv'
decode_results results;      // create instance of 'decode_results'


#include <SimpleDHT.h>

 int pinDHT11 = 6;       //Definieren Thermometer
 SimpleDHT11 dht11;



int Dose1 = 2;    //Definieren Ausgänge Steckdosen
int Dose2 = 3;
int Dose3 = 4;
int Dose4 = 5;


void setup()  // put your setup code here, to run once:
{


Serial.begin(9600);                             //Serial Monitor Fernbedienung
Serial.println("IR Receiver Button Decode"); 
irrecv.enableIRIn(); // Start the receiver


pinMode(Dose1, OUTPUT);   //Setup Ausgänge Steckdosen
pinMode(Dose2, OUTPUT);
pinMode(Dose3, OUTPUT);
pinMode(Dose4, OUTPUT);



  digitalWrite(Dose1, HIGH);    //Test alle Ausgänge
  delay(1000);
  digitalWrite(Dose1, LOW);
  delay(1000);
  digitalWrite(Dose2, HIGH);
  delay(1000);
  digitalWrite(Dose2, LOW);
  delay(1000);
  digitalWrite(Dose3, HIGH);
  delay(1000);
  digitalWrite(Dose3, LOW);
  delay(1000);
  digitalWrite(Dose4, HIGH);
  delay(1000);
  digitalWrite(Dose4, LOW);
  delay(1000);





}




  void Fernbedienung()
  {
    
   

    if (irrecv.decode(&results)) // have we received an IR signal?
     {
  
    
      Serial.println(results.value);
     if(results.value == 16724175)     //Fernbedieung Dose 1
     {
      digitalWrite(Dose1, HIGH);
      Serial.println("Steckdose_1 AN");
     }
     if(results.value == 16753245)
     {
      digitalWrite(Dose1, LOW);
     }

    
     if(results.value == 16718055)     //Fernbedienung Dose2
     {
      digitalWrite(Dose2, HIGH);
      Serial.println("Steckdose_2 AN");
      }
      if(results.value == 16753245)
      {
       digitalWrite(Dose2, LOW);
      }

       if(results.value == 16743045)     //Fernbedienung Dose3
       {
      digitalWrite(Dose3, HIGH);
      Serial.println("Steckdose_3 AN");
      }
     if(results.value == 16753245)
     {
      digitalWrite(Dose3, LOW);
      }


    if(results.value == 16716015)     //Fernbedienung Dose4
    {
      digitalWrite(Dose4, HIGH);
      Serial.println("Steckdose_4 AN");
    }
    if(results.value == 16753245)
    {
      digitalWrite(Dose4, LOW);
    }


    if(results.value == 16738455)     //Fernbedienung Alle AN
    {
     digitalWrite(Dose1, HIGH);
     digitalWrite(Dose2, HIGH);
     digitalWrite(Dose3, HIGH);
     digitalWrite(Dose4, HIGH);
     Serial.println("Alle Steckdosen AN");
    }
    if(results.value == 16753245)
    {
      digitalWrite(Dose4, LOW);
    }  
    irrecv.resume(); // receive the next value
    }
       
  }

void Temperatur()
{
  
 // start working...
  Serial.println("=================================");
  Serial.println("Sample DHT11...");
  
  // read without samples.
  byte temperature = 0;
  byte humidity = 0;
  if (dht11.read(pinDHT11, &temperature, &humidity, NULL)) {
    Serial.print("Read DHT11 failed.");
    return;
  }
  
  Serial.print("Sample OK: ");
  Serial.print((int)temperature); Serial.print(" *C, "); 
  Serial.print((int)humidity); Serial.println(" %");
  
  // DHT11 sampling rate is 1HZ.
  
}

  
void loop()
{
  Fernbedienung();
  Temperatur();
}

FloMorris:
Ich habe jetzt das andere DHT11 Programm eingefügt und den delay von einer Sekunde entfernt.

Gleiches Problem mir wird von der Temperaturmessung immer nur "Read DHT11 failed" angezeigt.

Dann liegt der Fehler ja nicht (unmittelbar) am Sketch, sondern am Aufbau. Es wird ja etwas angezeigt, wenn auch eine Fehlermeldung.

Wie hast du denn den DHT11 angeschlossen ?

Zeig uns mal ein Schaltbild und Foto vom Aufbau.

Ich habe den Fehler gefunden.

Es liegt an dem void setup teil der Fernbedienung.

int receiver = 11; // Signal Pin of IR receiver to Arduino Digital Pin 11 //Fernbedieung
/-----( Declare objects )-----/
IRrecv irrecv(receiver); // create instance of 'irrecv'
decode_results results; // create instance of 'decode_results'

Wenn ich den Teil Lösche, dann gib mir den DHT11 die benötigten Werte aus.

Aber wo muss ich nun den void setup Teil der Fernbedienung hin setzten?

Gruß,
Flo

Ich habe nochmal nachgeschaut.

Genau an diesem Setup liegt es:

irrecv.enableIRIn(); // Start the receiver

wenn ich den Teil ausblende, dann liefert mir der DHT11 die richtigen Werte.

Jemand eine Idee? Die Start the receiver Funktion brauche ich unbedingt. Ohne geht meine Fernbedienung nicht.

Das Zeitverhalten der DHT11/22 in der Übertragung ist ziemlich kritisch.
Hier hat einer eine Lösung aber Die wird Dir nicht unbedingt gefallen.

Gruß Tommy

Top. Vielen Dank für den Tipp.

Das Problem verstehe ich. Die Lösung ist aber doch etwas zu hoch.... Bin noch Anfänger....

Wäre es nicht auch möglich dem DHT11 zu sagen das alle 20 Sekunden eine Messung vornehmen soll? Damit sollte das Problem doch auch gelöst sein, oder?

Wenn ja, mit welcher Funktion kann ich Temperaturmessung alle 20 Sekunden am einfachsten umsetzen.

Gruß,
Flo

Der entscheidende Satz ist: "Disabling interrupts before measuring temperature and enabling it after solved a problem." - in dieser Zeit funktioniert aber die IR-Fernbedienung nicht.

Also in etwa so:

  noInterrupts();
  // Kommunikation mit dem DHT
  interrupts();
  // Berechnung usw.

Gruß Tommy

Hilfe!

Hey Tommy, vielen Dank für den Denkanstoß. Nur ich bekomme es nicht hin den Interrupt an die richtige Stelle zu setzen.

Wäre super wenn du mir nochmal helfen kannst.

Danke!

Da musst Du noch mal den aktuellen Sketch rein stellen. Damit wir nicht aneinander vorbei reden.

Ich kann das abr auch nur pauschal machen, ohne es zu testen.

Gruß Tommy

Hallo Tommy,

hier der aktuelle Sketch.

Ich habe jetzt alles mögliche ausprobiert, komme aber kein Stück weiter :frowning:

#include <SimpleDHT.h>
#include <IRremote.h>   //Bib Fernbedienung


int receiver = 11; // Signal Pin of IR receiver to Arduino Digital Pin 11     //Fernbedieung
/*-----( Declare objects )-----*/
IRrecv irrecv(receiver);     // create instance of 'irrecv'
decode_results results;      // create instance of 'decode_results'


int pinDHT11 = 6;       //Definieren Thermometer
SimpleDHT11 dht11;


int Dose1 = 2;    //Definieren Ausgänge Steckdosen
int Dose2 = 3;
int Dose3 = 4;
int Dose4 = 5;


#include <Wire.h>   //Definieren RTC
#include <DS3231.h>

DS3231 clock;
RTCDateTime dt;


void setup()  // put your setup code here, to run once:
{


Serial.begin(9600);                             //Serial Monitor Fernbedienung




irrecv.enableIRIn(); // Start the receiver




pinMode(Dose1, OUTPUT);   //Setup Ausgänge Steckdosen
pinMode(Dose2, OUTPUT);
pinMode(Dose3, OUTPUT);
pinMode(Dose4, OUTPUT);



  digitalWrite(Dose1, HIGH);    //Test alle Ausgänge
  delay(100);
  digitalWrite(Dose1, LOW);
  delay(100);
  digitalWrite(Dose2, HIGH);
  delay(100);
  digitalWrite(Dose2, LOW);
  delay(100);
  digitalWrite(Dose3, HIGH);
  delay(100);
  digitalWrite(Dose3, LOW);
  delay(100);
  digitalWrite(Dose4, HIGH);
  delay(100);
  digitalWrite(Dose4, LOW);
  delay(100);


  // Initialize DS3231                      //Setup RTC
    clock.begin();

  // Set sketch compiling time
  clock.setDateTime(__DATE__, __TIME__);



}

  void Fernbedienung()
  {

  

 if (irrecv.decode(&results)) // have we received an IR signal?
 {
  
  
    Serial.println(results.value);
    if(results.value == 16724175)     //Fernbedieung Dose 1
    {
      digitalWrite(Dose1, HIGH);
      Serial.println("Steckdose_1 AN");
    }
    if(results.value == 16753245)
    {
      digitalWrite(Dose1, LOW);
    }

    
    if(results.value == 16718055)     //Fernbedienung Dose2
    {
      digitalWrite(Dose2, HIGH);
      Serial.println("Steckdose_2 AN");
    }
    if(results.value == 16753245)
    {
      digitalWrite(Dose2, LOW);
    }

     if(results.value == 16743045)     //Fernbedienung Dose3
    {
      digitalWrite(Dose3, HIGH);
      Serial.println("Steckdose_3 AN");
    }
    if(results.value == 16753245)
    {
      digitalWrite(Dose3, LOW);
    }


    if(results.value == 16716015)     //Fernbedienung Dose4
    {
      digitalWrite(Dose4, HIGH);
      Serial.println("Steckdose_4 AN");
    }
    if(results.value == 16753245)
    {
      digitalWrite(Dose4, LOW);
    }


    if(results.value == 16738455)     //Fernbedienung Alle AN
    {
     digitalWrite(Dose1, HIGH);
     digitalWrite(Dose2, HIGH);
     digitalWrite(Dose3, HIGH);
     digitalWrite(Dose4, HIGH);
     Serial.println("Alle Steckdosen AN");
    }
    if(results.value == 16753245)
    {
      digitalWrite(Dose4, LOW);
    }  
    irrecv.resume(); // receive the next value

       
  }
  }

  void Temperatur()
{


 
  
  


  // start working...
  Serial.println("=================================");
  Serial.println("Sample DHT11...");

  
  // read with raw sample data.
  byte temperature = 0;
  byte humidity = 0;
  byte data[40] = {0};


  
  if (dht11.read(pinDHT11, &temperature, &humidity, data)) {
    Serial.print("Read DHT11 failed");
   // return;
  }

  
  
  Serial.print("Sample RAW Bits: ");
  for (int i = 0; i < 40; i++) {
    Serial.print((int)data[i]);
    if (i > 0 && ((i + 1) % 4) == 0) {
      Serial.print(' ');
    }


  }

 

  Serial.println("");
  
  Serial.print("Sample OK: ");
  Serial.print((int)temperature); Serial.print(" *C, ");
  Serial.print((int)humidity); Serial.println(" %");
  Serial.println("");
  
  delay(1000);
  

  
  
 
}
  

void RTCModul()        
{
  dt = clock.getDateTime();

  // For leading zero look to DS3231_dateformat example


  Serial.println("");
  Serial.print(dt.year);   Serial.print("-");
  Serial.print(dt.month);  Serial.print("-");
  Serial.print(dt.day);    Serial.print(" ");
  Serial.print(dt.hour);   Serial.print(":");
  Serial.print(dt.minute); Serial.print(":");
  Serial.print(dt.second); Serial.println("");

  delay(1000);
  
}





void loop()
{
Fernbedienung();

Temperatur();

RTCModul();
}

Das Thema hat mich auch interessiert, daher habe ich mal kurz einen Test mit dem DHT22 und IRremote aufgebaut.

Du solltest eine andere Library für den DHT11 verwenden, dann funktioniert das prima zusammen.

Und zwar die: DHT-Sensor-Library, die ist auch für den DHT11 geeignet.

Wenn du es nach folgendem Muster aufbaust, funktioniert es:

void loop() {
  readIRdecode();

  INTERVAL(3000UL) {                      
    readTemperature();
  }

  INTERVAL(1000UL) {                      
    RTCModul();
  }
}

In die Funktion "readIRremote" packst du deinen IR-Remote-Code, in die Funktion "readTeperature" deinen DHT11-Code. Der wird dann alle 3 Sek. aufgerufen.

Die Library "Interval" findest du hier.

Edit:
Alles weitere baust du auch in die Loop per weitere Funktion.
So werden alle 3 Sek. die Daten aus dem DHT angezeigt und ich kann immer zwischendurch die IR-Fernbedienung bedienen.

Edit2:
Habe mir gerade deinen aktuellen Sketch angesehen. Die RTC rufst du dann auch per "Intervall" aus der Loop auf und zwar alle Sek. Und wichtig, die delays müssen verschwinden. (Oben geändert)

Hallo,

super. Vielen Dank für die Hilfe. Das Hauptproblem in meinem Sketch lag an der gewählten Bibliothek für den DHT 11 und der verwendete Code.

Jetzt läuft alles so wie es soll. Nach dem ich alle Delays gelöscht habe war das ansprechverhalten der Fernbedienung auch super.

Genau sowas wie die Intervall Funktion hatte ich gesucht.

Einfach Top!

Gruß,
Flo

FloMorris:
Hallo,

super. Vielen Dank für die Hilfe. Das Hauptproblem in meinem Sketch lag an der gewählten Bibliothek für den DHT 11 und der verwendete Code.

Jetzt läuft alles so wie es soll. Nach dem ich alle Delays gelöscht habe war das ansprechverhalten der Fernbedienung auch super.

Genau sowas wie die Intervall Funktion hatte ich gesucht.

Einfach Top!

Gruß,
Flo

Prima, dass freut mich.
Das ist doch bestimmt ein Karma wert.

Und bitte stelle auch das Ergebnis hier rein.
Danke...