ventilateur géré par dht11 et relais

Bonjour,

Je cherche à gérer un ventilateur grâce à un DHT11 et un module relais.
Je voudrai que le ventilateur s'allume lorsque la température atteint 22° et qu'il s'éteint lorsque la température retombe à 20°.

Le code ci-dessous fonctionne correctement et déclenche le relais. La led du relais fonctionne correctement mais au niveau de la sortie en 220 V, ça ne fonctionne pas. Le ventilateur ne s'allume pas...Les branchements sont correctes et j'ai vérifié avec d'autres relais, sans succès.

Merci pour votre aide

#include "DHT.h"

#define RELAY_FAN_PIN A5 // Arduino pin connected to relay which connected to fan
#define DHTPIN 12 // Arduino pin connected to relay which connected to DHT sensor
#define DHTTYPE DHT11

const int TEMP_THRESHOLD_UPPER = 23; // upper threshold of temperature, change to your desire value
const int TEMP_THRESHOLD_LOWER = 20; // lower threshold of temperature, change to your desire value

DHT dht(DHTPIN, DHTTYPE);

float temperature; // temperature in Celsius

void setup()
{
Serial.begin(9600); // initialize serial
dht.begin(); // initialize the sensor
}

void loop()
{
// wait a few seconds between measurements.
delay(2000);

temperature = dht.readTemperature();; // read temperature in Celsius

if (isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
} else {
if(temperature > TEMP_THRESHOLD_UPPER){
Serial.println("The fan is turned on");
digitalWrite(RELAY_FAN_PIN, HIGH); // turn on
} else if(temperature < TEMP_THRESHOLD_LOWER){
Serial.println("The fan is turned off");
digitalWrite(RELAY_FAN_PIN, LOW); // turn on
}
}
}

Tu devrais lire les messages épinglés en haut du forum pour apprendre comment formatter un code dans un message. Un code formatté correctement (entre balises CODE) est plus lisible surtout sur un smartphone (nombre d'entre nous s'en servent sur le forum).

Pour ton problème, tu peux créer une variable stockant l'état du ventilateur. Par exemple, un booléen :

bool allume = false; // true pour ventilo allumé, false sinon

Puis selon la valeur de température, tu mets cette variable à jour :

if (isnan(temperature)) {
   Serial.println("Failed to read from DHT sensor!");
 } else {
   if (temperature > TEMP_THRESHOLD_UPPER && !allume) allume = true;
   if (temperature < TEMP_THRESHOLD_LOWER &&  allume) allume = false;
 }
digitalWrite(RELAY_FAN_PIN, allume);

Il faut aussi déclarer ta pin en OUTPUT dans le setup

pinMode (RELAY_FAN_PIN, OUTPUT);

Merci pour ta réponse.
J'ai fait les modifications par contre, il m'indique "expected ')' before numeric constant" lorsque je renseigne les degrés...
Que dois-je modifier ?

C'est bon ça marche parfaitement !!!
Merci bcp !!