DHT22 und DS18b20 zusammen anzeigen lassen

Hallo, da ich noch anfänger bin steh ich gerade vor dem problem das ich die Sensoren DHT22 und DS18B20 nicht gleichzeitig auf meinem Display angezeigt bekomme. Ich habe schon das Netz durchgeforstet aber bekomme keine Antwort dadrauf. Hat jemand eine Lösung für mich? ich kann beides separat anzeigen lassen aber eben nicht zusammen.

#include "DHT.h"                            
#define DHTPIN 2                            
#define DHTTYPE DHT22                       
DHT dht22(DHTPIN, DHTTYPE);
#include <Time.h> Bibliotheken laden
#include <Wire.h> 
#include <OneWire.h>
#include <DS1307RTC.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
int DS18S20_Pin = 3; //DS18S20 Signal pin on digital 3
//Temperature chip i/o
OneWire ds(DS18S20_Pin);  // on digital pin 3
void setup() 

{ 
lcd.begin(20, 4); //Im Setup wird angegeben, wie viele Zeichen und Zeilen werwendet werden.
Serial.begin(9600); //Öffnet den seriellen Port und legt die Baud Rate (9600) für die serielle Übertragung fest.
setSyncProvider(RTC.get); //Dies ist die Funktion um die Zeit- und Datumsangabe von der RTC zu bekommen
dht22.begin();
 lcd.backlight(); 
}

void loop() 
{
delay(100); //Zwei Sekunden Vorlaufzeit bis zur Messung (der Sensor ist etwas träge)

 float tl = dht22.readTemperature();        // Die Temperatur wird vom DHT22 ausgelesen, Wert in "tl" schreiben
  float h = dht22.readHumidity();           // Die Luftfeuchte wird vom DHT22 ausgelesen, Wert in "h" schreiben
    float temperature = getTemp();

  Serial.print("Temperatur: ");             // Ausgabe im Seriellen Monitor
  Serial.print(tl);                          // Ausgabe im Seriellen Monitor
  Serial.print(" C\tl");                     // Ausgabe im Seriellen Monitor  
  Serial.print("Luftfeuchte: ");            // Ausgabe im Seriellen Monitor
  Serial.print(h);                          // Ausgabe im Seriellen Monitor
  Serial.println(" %");                     // Ausgabe im Seriellen Monitor
Serial.print(hour()); //Serial.print ist der Befehl etwas im seriellen Monitor anzuzeigen (Stunde, Minute, Sekunde, Leerzeichen, Tag, Leerzeichen, usw.)
printDigits(minute()); //bei den Minuten und Sekunden wird der Befehl
printDigits(second()); //printDigits angegeben welcher am Ende des Codes noch festgelegt wird.

Serial.print(" ");
Serial.print(day());
Serial.print(" ");
Serial.print(month());
Serial.print(" ");
Serial.print(year());
Serial.println();
delay(1000); 


//TEMP DHT22
lcd.setCursor(0, 1);                       
lcd.print("Temp.Luft:");                      
lcd.setCursor(11, 1);                       
lcd.print(tl);                              
lcd.setCursor(17, 1);                      
lcd.print("C");                           
lcd.setCursor(0, 2);                       
lcd.print("Luftf.:");                      
lcd.setCursor(11, 2);                       
lcd.print(h);                              
lcd.setCursor(17, 2);                      
lcd.print("%");                            

//TEMP DS18B20
  lcd.setCursor(0, 3);                       
lcd.print("Temp.Was:");
  Serial.println(temperature);
  lcd.setCursor(10, 3); 
  lcd.print(temperature);
lcd.setCursor(17, 3);                      
lcd.print("C");

//UHR
lcd.setCursor(1, 0); //setCursor gibt an wo der Text beginnen soll. In diesem Fall beim dritten Zeichen in der ersten Reihe.
lcd.print(hour()); //Hier soll jetzt die Uhrzeit angezeigt werden, also „hour“ „:“ „minute“ usw..
lcd.print(":");
lcd.print (minute());
lcd.print(":");
lcd.print(second());
lcd.print(" ");
lcd.setCursor(10, 0); // Der nächste „Text“ soll nun beim zweiten Zeichen in der zweiten Reihe beginnen.
lcd.print(day()); // Das Datum soll nun als
lcd.print("."); // „Tag“, „.“ „Monat“ usw. angegeben werden.
lcd.print(month());
lcd.print(".");
lcd.print(year());
}
void printDigits(int digits) //In diesem Abschnitt wird festgelgt, dass bei Zahlen <10 im seriellen Monitor automatisch eine 0 vor den Ziffern angezeigt wird. Das gilt nur für den seriellen Monitor und nicht für LCD Display.
{ 
Serial.print(":"); 
if(digits < 10) 
Serial.print('0'); 
Serial.print(digits); 
}

Uhrund2temptest.ino (4.43 KB)

Setze Deinen Code bitte direkt ins Forum. Benutze dazu Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *). So ist er auch auf portablen Geräten lesbar.
Das kannst Du auch noch nachträglich ändern.

Gruß Tommy

Dann poste doch mal deinen Sketch direkt im Forum.
Verwende dazu die Schaltfläche </> oben links im Editorfenster, dann wird der Sketch für alle gut lesbar, auch für mobile User.

wo soll d was links oben sein wo ich das hochladen kann?

Standardmäßig sind die Schaltflächen im Quick Reply deaktiviert, du hast 3 Möglichkeiten;

  1. du bereitest deinen Beitrag vor, klickst dann auf Preview und nutzt darüber die Schaltfläche </>
  2. du setzt deinen Sketch manuell in Code-Tags: [code]Hier der Code[/code] (Ohne *)
  3. du änderst die Foreneinstellung "Use full editor in Quick Reply" unter https://forum.arduino.cc/index.php?action=profile;area=theme und siehst dann die Schaltflächen im Quick Reply.

Hallo,

der obige Sketch kompiliert nicht. Es fehlt die Instanz vom Dallas-Sensor.
Vorschlag. Schau die das Bsp. WaitForConversion2 der Dallas Lib an.

Bis du das verstanden hast.
Den obigen Sketch bekommst du erstmal ohne Dallas zum laufen.
Wenn beides funktioniert wird es zusammengeführt.

Schmeißt endlich diese DHT's zu Fenster raus.
Die Dinger sind so nützlich, wie ein Kropf.
Nimm einen BME280 und das Leben ist plötzlich wunderbar.

freddy64:
Schmeißt endlich diese DHT's zu Fenster raus.
Die Dinger sind so nützlich, wie ein Kropf.
Nimm einen BME280 und das Leben ist plötzlich wunderbar.

Kann ich genau so unterschreiben.

freddy64:
Schmeißt endlich diese DHT's zu Fenster raus.
Die Dinger sind so nützlich, wie ein Kropf.
Nimm einen BME280 und das Leben ist plötzlich wunderbar.

Das ist doch quatsch.
Die sind zwar nicht sehr genau, aber man kann damit gut lernen und später immer noch umsteigen.
Es muss nicht gleich jeder was neues kaufen, nur weil du die nicht gut findest.

@ Doc_Arduino soweit ich mich da entsine gehts da nur um die verschienen Bus-Adressen der DS18B20?!

freddy64:
Schmeißt endlich diese DHT's zu Fenster raus.
Die Dinger sind so nützlich, wie ein Kropf.
Nimm einen BME280 und das Leben ist plötzlich wunderbar.

Und hier geht es nur um die DHT. Über kurz oder lang messen die Mist bei der Luftfeuchtigkeit. Über die absolute Ungenauigkeit kann man ja noch hinwegsehen. Aber wenn durch falsches Ergebnis der Feuchtemessung immer ein Havarie-Alarm ausgelöst wird, nervt das.

Ben85:
@ Doc_Arduino soweit ich mich da entsine gehts da nur um die verschienen Bus-Adressen der DS18B20?!

Hallo,

nicht ganz, da geht es um weit mehr, Dinge die du auch benötigst. Wie gesagt sehe ich in deinem Sketch Fehler in der Verwendung der Dallas Lib. Deswegen der Hinweis das du dir die Bsp. der Lib nochmal genauer anschauen sollst.

In der IDE alle Compilerwarnungen einschalten.
Datei > Voreinstellungen >

  • Ausführliche Ausgabe während > beide Haken rein
  • Compilerwarnungen > "ALLE"

Zeilennummern und Codefaltung sind auch hilfreich.