bonjour à tous,
je m'initie à arduino depuis peu et je ne cache pas que je transpire ...
mon 1er projet a été une CNC 3 axes qui fonctionne aujourd'hui très bien.
Et le 2ème, une simple mesure de T° avec un DHT22 et arduino uno R3 et je galère !
Impossible de lire une T° négative, dès que j'expose la DHT22 <0°c le moniteur série du soft arduino me retourne une valeur vers 400°c alors qu'il fait -18°C dans le congel, les T° positives sont bien retranscrites, juste une correction de -0,7°C.
J'ai 3 sondes DHT22 sur 3 pins différentes (4, 5 et 6), le problème est identique.
J'utilise la biblio DHT.h
voici le code avec les 3 sondes DHT22, dispo sur le net et modifié pour mon essai avec 3 sondes
Je ne sais pas pourquoi elles ne veulent pas afficher les T° négatives ... GRrrrrr ....
#include <DHT.h>
#define brocheDeBranchementDHTJaune 4 // La ligne de communication du DHT22 sera donc branchée sur la pin D6 de l'Arduino
#define brocheDeBranchementDHTBleu 5
#define brocheDeBranchementDHTBlanc 6
#define typeDeDHT DHT22 // Ici, le type de DHT utilisé est un DHT22 (que vous pouvez changer en DHT11, DHT21, ou autre, le cas échéant)
// Instanciation de la librairie DHT
DHT dhtJaune(brocheDeBranchementDHTJaune, typeDeDHT);
DHT dhtBleu(brocheDeBranchementDHTBleu, typeDeDHT);
DHT dhtBlanc(brocheDeBranchementDHTBlanc, typeDeDHT);
// ========================
// Initialisation programme
// ========================
void setup () {
// Initialisation de la liaison série (pour retourner les infos au moniteur série de l'ordi)
Serial.begin(9600);
Serial.println("Programme de test du DHT22");
Serial.println("==========================");
Serial.println();
// Initialisation du DHT22;
dhtJaune.begin();
dhtBleu.begin();
dhtBlanc.begin();
}
// =================
// Boucle principale
// =================
void loop () {
// Lecture des données
float temperatureEnCelsiusJaune = dhtJaune.readTemperature(); // Lecture de la température, exprimée en degrés Celsius
float temperatureEnCelsiusBleu = dhtBleu.readTemperature();
float temperatureEnCelsiusBlanc = dhtBlanc.readTemperature();
// Vérification si données bien reçues
if (isnan(temperatureEnCelsiusJaune))
Serial.println("Aucune valeur retournée par le DHT22 Jaune. Est-il bien branché ?"); {
if (isnan(temperatureEnCelsiusBleu))
Serial.println("Aucune valeur retournée par le DHT22 Bleu. Est-il bien branché ?");
if (isnan(temperatureEnCelsiusBlanc))
Serial.println("Aucune valeur retournée par le DHT22 Blanc. Est-il bien branché ?");
}
// Affichage des valeurs
Serial.print("T° Jaune = "); Serial.print(temperatureEnCelsiusJaune); Serial.print(" °C, ");
Serial.print("T° Bleu = "); Serial.print(temperatureEnCelsiusBleu); Serial.print(" °C, ");
Serial.print("T° Blanc = "); Serial.print(temperatureEnCelsiusBlanc); Serial.println(" °C");
// Temporisation de 2 secondes (pour rappel : il ne faut pas essayer de faire plus d'1 lecture toutes les 2 secondes, avec le DHT22, selon le fabricant)
delay(2000);
return; // Si aucune valeur n'a été reçue par l'Arduino, on attend 2 secondes, puis on redémarre la fonction loop()
}
Merci,
je viens de réinstaller la biblio " 1.4.6 Bump version in library.properties" pour être sûr de ne pas avoir fait d'erreur (je l'avais déjà installée) puis versé le code proposé en enlevant, pour le moment, l'inutile.
La sonde est dans le congélateur (-18°C), emballé dans une petite poche antistatique, et au début j'ai ça dans le moniteur,
(source)
Ici, il est dit qu'il existe des contrefaçons de ces capteurs : ce pourrait être des DHT11, vendus pour des DHT22. Or le DHT11 ne serait pas conçu pour lire des températures négatives.
Visiblement ce fix ne marche pas. Vu que tu n'es pas le seul à avoir ce problème et que personne n'a de solution qui fonctionne, je te conseille de changer de capteur