Extraire 2 variables de DHT21

Bonjour,

DEBUTANT

Dans mon projet de DHT j’ai besoin de la temperature et l’humidité:
Dans le croquis test DHT21 je voudrais installer 2 variables pour la temp et humidité comme ci-dessous.

temperature_float = DHT.temperature;
humidity_float = DHT.humidity;

Mais je bute. Si je remplace:

// DISPLAY DATA

temperature_float = DHT.temperature; // declaration des nouvelles variables
humidity_float = DHT.humidity;

// Serial.print(DHT.humidity, 1);
Serial.print(humidity_float, 1); ICI humidity_float est juste
Serial.print(",\t");
// Serial.println(DHT.temperature, 1);
Serial.println(temperature_float, 1); ICI température_float=0.0 !! pourquoi?

Que fais-je de travers?
J’ai mis le code.
Merci beaucoup pour le coup de main!
Cdt.
Georges

//
//    FILE: dht21_test.ino
//  AUTHOR: Rob Tillaart
// VERSION: 0.1.02
// PURPOSE: DHT library test sketch for DHT21 && Arduino
//     URL:
//
// Released to the public domain
//

#include <dht.h>

 float temperature_float = 0.0;
 float humidity_float = 0.0;
dht DHT;

#define DHT21_PIN 5

void setup()
{
    Serial.begin(9600);
    Serial.println("DHT TEST PROGRAM ");
    Serial.print("LIBRARY VERSION: ");
    Serial.println(DHT_LIB_VERSION);
    Serial.println();
    Serial.println("Type,\tstatus,\tHumidity (%),\tTemperature (C)");
}

void loop()
{
    // READ DATA
    Serial.print("DHT21, \t");
    int chk = DHT.read21(DHT21_PIN);
    switch (chk)
    {
    case DHTLIB_OK:
        Serial.print("OK,\t");
        break;
    case DHTLIB_ERROR_CHECKSUM:
        Serial.print("Checksum error,\t");
        break;
    case DHTLIB_ERROR_TIMEOUT:
        Serial.print("Time out error,\t");
        break;
    case DHTLIB_ERROR_CONNECT:
        Serial.print("Connect error,\t");
        break;
    case DHTLIB_ERROR_ACK_L:
        Serial.print("Ack Low error,\t");
        break;
    case DHTLIB_ERROR_ACK_H:
        Serial.print("Ack High error,\t");
        break;
    default:
        Serial.print("Unknown error,\t");
        break;
    }
    // DISPLAY DATA
     temperature_float = DHT.temperature;
     humidity_float = DHT.humidity; 
    
   // Serial.print(DHT.humidity, 1);
    Serial.print(humidity_float, 1);
    Serial.print(",\t");
   // Serial.println(DHT.temperature, 1);
    Serial.println(temperature_float, 1);

    delay(2000);
}
//
// END OF FILE
//

Je ne sais pas ou tu as récupéré la bibliothèque mais maintenant elle en version 1.20, la tienne en 1.02 ! Github

Donc le mieux serait de prendre la dernière version

Elle couvre DHT11 (de la daube), DHT21 et DHT22 DHT21 et 22 sont identiques il n'y a que la nature des connexions qui change.

Merci beaucoup!

J’ai crée un compte chez GitHub mais je n’arrive pas à trouver le téléchargement de la “library”.

Bonjour Georges97427,

Plein d' info chez Skywodd sur le DHT 11, il me semble que ça fonctionne avec les DHT 21 et 22 en adaptant le code si nécessaire.

Sinon il y a cette lib dans le playground qui couvre tout les DHTxx.

@pluch'

Georges97427: Merci beaucoup!

J'ai crée un compte chez GitHub mais je n'arrive pas à trouver le téléchargement de la "library".

bonjour, lorsqu'il n'y a pas l'option de télécharger le zip sur gihtub, il faut utiliser sous windaub un soft pour git sous linux, c'est en ligne de commande git clone xxxxxxxxxxxx

Surprenant mais c'est pas la peine de prendre un marteau-pilon pour enfoncer un clou. S'il n'y a pas de bouton de téléchargement il suffit de sélectionner le texte a la souris et de le coller dans un fichier texte, ce n'est pas plus difficile que cela.

J'ai un peu joué avec la bête et je te déconseille fortement les vielles librairies comme celle que Sky a utilisé à la date de son article. Elles sont basées sur le seul torchon de datasheet disponible a l'époque. J'ai eu la chance d'en trouver des moins pires que j'ai communiqué a Rob T, ce qui lui a permis de corriger des erreurs. Néanmoins si nous sommes d'accord sur le constat : digitalRead et millis sont trop lent, nous divergeons sur la solution. Rob s'obstine a rester dans les fonctions arduino au prix d'astuces plus ou moins bancales, mais qui fonctionnent. Moi je préfère utiliser directement les registres des ports et le compteur du Timer. Rob veut a tout prix mesurer le temps des bits "1" et "0" . J'estime qu'il suffit de seleument comparer leur durée, un temps est donc inutile, la seule comparaison d'un paramètre proportionnel à la durée suffit ce rend le mammouth plus véloce. Mais la lib de Rob fonctionne a 99,9 %.

Le défaut constaté est un "timeout" aléatoire.

Merci! Pour le "tuyau" pour le téléchargement sans "download zip" Effectivement j'ai pu installer la "library" et le DHT21 fonctionne parfaitement. Comme j'ai aussi installé un Transfo d'intensité (octopus TA17-03) pour mesurer la Puissance + Irms.

2 petits problèmes surviennent: L'affichage un QC2004A à chaque fois que je rebranche l'installation, le LCD m'affiche que des caractères aléatoires. Sur le Mega 2560 je suis obligé de "reseter" plusieurs fois, normal? J'ai branché D0,D1,D2,D3 =GND et D4,D5,D6,D7