Dorian1975 2 Posted November 6, 2020 Bonjour J'ai fait un petit programme pour arduino avec une sonde de température de type DTH22 ( il fait aussi le taux d'humidité) Bref le programme a juste pour bute de lancer une ventilation pour faire redescendre la température quand celle ci atteint un seuil donner dans le programme 25° modifiable facilement en plus ou en moins chaud. Une fois la valeur atteinte il déclenche un relay qui va allumer une ventilation jusqu'à la refaire passer en dessous des 25° , et se coupé une fois la température inférieur a 25° Rien d extra ordinaire mais a un coup relativement bas pour maintenir une température . J ai aussi un affichage 16x2 pour avoir les valeurs en temps réel Le programme open source #include <DHT.h> // inclure les librairies #include <Wire.h> #include <LiquidCrystal_I2C.h> const int relayPin = A2; // PIN a2 pour test modifiable en A1 A3 A4 au choix const int DHTPIN = A0; // Type de capteur utiliser #define DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE);// Initialise le capteur DHT22 LiquidCrystal_I2C lcd(0x38, 16,2); // Initialise le module 1602 I2C modifiable en fonction des modèles l'adresse peu être différente void setup() { Serial.begin(9600); pinMode(relayPin, OUTPUT); dht.begin(); // Définit l'écran LCD 16 colonnes par 2 lignes lcd.init(); // Réglage du rétroéclairage lcd.setBacklight(HIGH); } void loop() { float h = dht.readHumidity(); // Lit la temperature en degres Celsius (valeur par defaut float t = dht.readTemperature(); float c = dht.readTemperature(true); // Vérifie si toutes les lectures ont échoué et quitte le début (pour réessayer). if (isnan(h) || isnan(t) || isnan(c)) { Serial.println("Failed to read from DHT sensor!"); return; } lcd.setCursor(0, 0); lcd.print("Temp = "); lcd.print(t); lcd.print(" *C "); lcd.setCursor(0, 1); lcd.print(" Hum = "); lcd.print(h); lcd.print(" % "); Serial.print("Temperature = "); Serial.print(t); Serial.print(" *C "); Serial.print("Humidity = "); Serial.print(h); Serial.print(" %\t "); Serial.println(); if (t >= 20 && t <= 25) // si temperature est = ou sup. a 20 ET t infer. ou = a 25 relais ouvert içi on peu modifie la température limite avant le déclanchement du relay. { digitalWrite(relayPin, HIGH); } delay(2000);// Delai deux seconde entre les mesures modifiable 1000 pour l'avoir toute les secondes par exemple } Si cela peu dépanner quelqu'un 1 Share this post Link to post Share on other sites
Dorian1975 2 Posted November 6, 2020 Il faut compter 21€ livrer l'ensemble sur un site bien connue chinois . Share this post Link to post Share on other sites
Gen 2977 Posted November 6, 2020 Yop Tout cela n'a pas lieu d'être ,une fois le programme chargé Serial.print("Temperature = "); Serial.print(t); Serial.print(" *C "); Serial.print("Humidity = "); Serial.print(h); Serial.print(" %\t "); Serial.println(); de plus ceci, ce n'est pas vers le Serial que cela doit-être envoyé, mais vers le LCD sinon comment savoir que la sonde ne fonctionne pas ? if (isnan(h) || isnan(t) || isnan(c)) { Serial.println("Failed to read from DHT sensor!"); return; } PS : Nous avons rencontré trop de problème avec les DHT, il est préférable d'utiliser les AM2320 Bon bricolage ++ GEN Share this post Link to post Share on other sites
Dorian1975 2 Posted November 6, 2020 Merci pour les info toujours bon a prendre , pour mon info perso quel sont les pb en particulier avec le DHT? Share this post Link to post Share on other sites
Gen 2977 Posted November 6, 2020 Yop des blocages intempestifs des process ++ GEN 1 Share this post Link to post Share on other sites