Arduino und DHT11 Temp/Feuchtesensor - Nur Nullen?

OP #3244925
Hallo,

wenn man alles ausgeschöpft hat hilft nur noch fragenm, denn mangels 
Debuggingmöglichkeit kann ich leider nicht in die Bits hieinkriechen.

Konfiguration: Arduiono Mega 2630 mit DHT11 Sensor an Pin 2
Sensor verkabelt, Pull Up Widerstand von 10k.

Library von dem Arduino Playground installiert, Code von der Demom, 
etwas umgestrickt ohne die komplexen Berechnungen, so einfach wie 
möglich.

Tja, in dht.temperature und dht.humidity steht immer nur Null! Der 
Sensor wird einwadfrei erkannt, ziehe ich das Kabel kommt die 
Fehlermeldung.

Alles ok? Nee... wieso nur Nullen in den Variablen der Klasse DHT? Ist 
doch ein Onw-Wire Bus, easy, code sieht ok aus, Timning stimmt auch.

Was is nu wieder los mit mein Arduino?
1
chk = DHT.read11(DHT11_PIN);
2
    switch (chk)
3
    {
4
    case DHTLIB_OK:  
5
                Serial.print("OK,\t"); 
6
                break;
7
    case DHTLIB_ERROR_CHECKSUM: 
8
                Serial.print("Checksum error,\t"); 
9
                break;
10
    case DHTLIB_ERROR_TIMEOUT: 
11
                Serial.print("Time out error,\t"); 
12
                break;
13
    default: 
14
                Serial.print("Unknown error,\t"); 
15
                break;
16
    }
17

18
    temp = DHT.temperature;
19
    feuchte = DHT.humidity;
20
    Serial.print("Humidity (%): ");
21
    Serial.println((float)DHT.humidity, 2);
22

23
    Serial.print("Temperature (oC): ");
24
    Serial.println((float)DHT.temperature, 2);

Gruss,
Christian
OP #3245004
Weil der One Wire Bus per Defintion einen Pull Up braucht und ich keine 
Ahnung habe ob die Pins diesen zugeschaltet haben oder nicht...

edit: Grad mal durchgeknipst den Widerstand..... es geht! Frag mich aber 
bitte mal einer wieso ??? Da muss ein Pull Up dran laut Datenblatt des 
DHT11, es sei denn der ist schon in diesem blauen Kasten mit drin.

Arduino..... jeden Tag eine neue Entdeckung...
Gast #3245022
Im dht11.cpp wird in zeile 44 der Pinmode auf input gesetzt, waehrend
von vorher  durch digitalwrite der Pin noch auf high steht: Dadurch 
sollte der interne pullup des atmegas aktiviert werden.

Gruß
Mike
OP #3245026
Danke für den Tip.

Hier ist ein 5k drin: http://www.micro4you.com/files/sensor/DHT11.pdf
Damit klappt es ja nicht, nur ohne.

Mal ne Frage nebenbei: Gibt es sowas luxuriöses wie den printf Befehl 
mit beliebige langer Parameterliste? Den vermisse ich echt..

Also printf("Temperatur %2.1f Feuchte 2.1f", temperatur, feuchte);

Ansonsten ist die Sprache ja voll C-kompatibel, nur das void setup und 
void loop sind "gewöhnungsbedürftig".
Gast #3245031
Du kannst snprintf verwenden, aber nur mit string und int werten, für 
float  etc. vorher mit dtostrf einen string machen. Evtl. kann man 
irgendwie auch floatingpoint support für snprintf irgendwie mit 
compilerflags freischalten, aber das hab ich gerade nicht parat.


Gruß
Mike

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.