Erreur de lecture température/humidité DHT22

Bonjour à tous,

J'ai un problème lorsque je souhaite exécuter ce programme. Tout d'abord la validation du programme ce fait sans soucis. Ensuite, lorsque je téléverse mon programme dans l'arduino il n'y a aucune erreur. Mais quand je vais dans le Moniteur série pour vérifier les résultats il y a écrit " Error reading temperature " et
" Error reading humidity ".

Ps: J'utilise une carte arduino UNO sur laquelle repose un base shield. Le capteur est un DHT22 de la marque GROVE et j'ai installé toutes les bibliothèques utiles. Le capteur est connecté à la borne A0 du base shield.

Je vous remercie de votre aide.

#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>

#define DATA_PIN 0   


#define DHTTYPE    DHT22     


DHT_Unified dht(DATA_PIN, DHT22);

uint32_t delayMS;

void setup() {
  Serial.begin(9600);
  
  dht.begin();
  Serial.println(F("DHTxx Unified Sensor Example"));
  
  sensor_t sensor;
  dht.temperature().getSensor(&sensor);
  Serial.println(F("------------------------------------"));
  Serial.println(F("Temperature Sensor"));
  Serial.print  (F("Sensor Type: ")); Serial.println(sensor.name);
  Serial.print  (F("Driver Ver:  ")); Serial.println(sensor.version);
  Serial.print  (F("Unique ID:   ")); Serial.println(sensor.sensor_id);
  Serial.print  (F("Max Value:   ")); Serial.print(sensor.max_value); Serial.println(F("°C"));
  Serial.print  (F("Min Value:   ")); Serial.print(sensor.min_value); Serial.println(F("°C"));
  Serial.print  (F("Resolution:  ")); Serial.print(sensor.resolution); Serial.println(F("°C"));
  Serial.println(F("------------------------------------"));
 
  dht.humidity().getSensor(&sensor);
  Serial.println(F("Humidity Sensor"));
  Serial.print  (F("Sensor Type: ")); Serial.println(sensor.name);
  Serial.print  (F("Driver Ver:  ")); Serial.println(sensor.version);
  Serial.print  (F("Unique ID:   ")); Serial.println(sensor.sensor_id);
  Serial.print  (F("Max Value:   ")); Serial.print(sensor.max_value); Serial.println(F("%"));
  Serial.print  (F("Min Value:   ")); Serial.print(sensor.min_value); Serial.println(F("%"));
  Serial.print  (F("Resolution:  ")); Serial.print(sensor.resolution); Serial.println(F("%"));
  Serial.println(F("------------------------------------"));
  
  delayMS = sensor.min_delay / 1000;
}

void loop() {
  
  delay(delayMS);
  
  sensors_event_t event;
  dht.temperature().getEvent(&event);
  if (isnan(event.temperature)) {
    Serial.println(F("Error reading temperature!"));
  }
  else {
    Serial.print(F("Temperature: "));
    Serial.print(event.temperature);
    Serial.println(F("°C"));
  }
  
  dht.humidity().getEvent(&event);
  if (isnan(event.relative_humidity)) {
    Serial.println(F("Error reading humidity!"));
  }
  else {
    Serial.print(F("Humidity: "));
    Serial.print(event.relative_humidity);
    Serial.println(F("%"));
  }
}

hello

:o :o :o :o

#define DATA_PIN 0 
#define DHTTYPE    DHT22    

DHT_Unified dht(DATA_PIN, DHT22);

Serial.begin(9600);
#define DATA_PIN 0

Crois-tu que A0 corresponde à ZÉRO ?

Pourquoi choisir une broche analogique ?

Sans rien faire d'autre A0 = D14 et est numérique.

Mais si par ailleurs il faudra des pins analogiques autant commencer par les pins que ne sont que numériques.
Et autant bien comprendre la différence entre les différentes pins.

Aymene92:
Le capteur est un DHT22 de la marque GROVE et j'ai installé toutes les bibliothèques utiles. Le capteur est connecté à la borne A0 du base shield.

Est ce que ton capteur ressemble à celui-ci ?

Selon ce qui est écrit dans le lien indiqué ci-dessus, tu dois connecter comme ceci :

  • Step 1. Connect Grove - Temperature&Humidity Sensor Pro to port D2 of Grove-Base Shield.
  • Step 2. Plug Grove - Base Shield into Seeeduino.
  • Step 3. Connect Seeeduino to PC via a USB cable
    .

Le code de test est ici. Il commence comme ceci :

// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain

#include "DHT.h"

#define DHTPIN 2     // what pin we're connected to

// Uncomment whatever type you're using!
//#define DHTTYPE DHT11   // DHT 11
#define DHTTYPE DHT22   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

/*Notice: The DHT10 is different from other DHT* sensor ,it uses i2c interface rather than one wire*/
/*So it doesn't require a pin.*/

//#define DHTTYPE DHT10

// Connect pin 1 (on the left) of the sensor to +5V
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

DHT dht(DHTPIN, DHTTYPE);

Donc c'est bien sur le connecteur D2 de la base qu'il faut le connecter :

#define DHTPIN 2     // what pin we're connected to

Pour info Grove c'est un système de connexion, ce n'est pas une marque de fabricant de composant.
C'est simplement un dispositif pour simplifier les branchements des modules.

Le DHT22 ne nécessite que 3 connexions :

  • la masse
  • le Vcc
  • la sortie à connecter sur une entrée quelconque du moment qu'elle est digitale (Sur un UNO absolument toutes les entrées sont digitales).
    Voir les exemples joints aux différentes bibliothèques qui gèrent le DHT22 pour voir comment indiquer au programme sur quelle entrée le DHT22 est connecté.

Le DHT22 est à sortie "Drain ouvert" ce qui signifie qu'il faut ajourer une résistance (entre 4,7k et 10 k) entre la sortie et le Vcc.
Généralement les DHT22 montés sur circuit imprimé ont déjà cette résistance mais il est préférable de le vérifier.

Merci à tous pour votre aide. Effectivement je n'ai pas fais la distinction entre les différentes pins. Je suis encore un débutant donc tout ça est nouveau pour moi. Merci encore.