Problème de code

Bonjour a tous
j’ai un projets sur Arduino mais je bloque sur le programme.
Voila l’idéé:
un capteur temp et humidité dth 11 “Sensor V1.2”
un écran lcd
Arduino Uno
une pompe brumification piloté par relais Arduino

explication: je veux que la pompe déclanche si je suis infirieure a 75% jusqu’a atteindre 85%(je n’y arrive pas)
sur le lcd je veux juste l’affichage de la température et de l’humidité.(ok)

Merci de m’aidé.

Bonjour,

Qu'est ce que tu nous fais la? C'est illisible. Pourquoi pas une photo de l'écran?

Mets ton code entre balise comme indiqué ici.

 // Programme terrarium 
#include "DHT.h"
#define DHTPIN A0  // capteur humidité 
#define DHTTYPE DHT11 
DHT dht(DHTPIN, DHTTYPE);
int relais= 13; // pompe a brumifier
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);// Initialisation du LCD
const int intTimePause =1000;

void setup ()
{
  lcd.begin(16,2) ; // config écran
  lcd.clear() ; // initialisé ecran
  pinMode(relais, OUTPUT) ; // config sorti pompe
  Serial.begin(9600) ; 
  Serial.print(" bonjour christopher ") ;  
  dht.begin() ;
}


void loop() {
  
  float h = dht.readHumidity();
  float t = dht.readTemperature();

 Serial.print(" Humidite: " ); //affichage sur le monotoring
 Serial.print(h);
 Serial.print( " %\t ");
 Serial.print(" Degres: " );
 Serial.print(t);
 Serial.print (" C ");

lcd.setCursor(0,0); // on definie la place du curseur sur le lcd, là c’est en haut à gauche
lcd.print(" Degres: "); //on affiche la chaine de caractère
lcd.print(t); // on affichage la variable définie précédement
lcd.print(" C "); // pour celcius

lcd.setCursor(0,1); // là on se met à la ligne 2
lcd.print(" Humidite: "); //idem que pour l’humidité
lcd.print(h);
lcd.print(" % ");
delay(1000);

 int analogRead(DHTPIN);
   if (h<(75));
   {
    digitalWrite(relais, HIGH);
    delay(900000);
    digitalWrite(relais, LOW);
   }
}

Re dsl premiere fois sur ce site, donc je reprends,

j’ai un projets sur Arduino mais je bloque sur le programme.
Voila l’idéé:
un capteur temp et humidité dth 11 “Sensor V1.2”
un écran lcd
Arduino Uno
une pompe brumification piloté par relais Arduino

explication: je veux que la pompe déclanche si je suis infirieure a 75% jusqu’a atteindre 85%(je n’y arrive pas)
sur le lcd je veux juste l’affichage de la température et de l’humidité.(ok)

Merci de m’aidé.

Tu as posté ta réponse dans le forum anglais. Je ne sais pas comment tu as fait. Pour répondre, tu cliques simplement sur “reply” en bas de la page.

Pour répondre à ta quesion: si l’humidité est inférieur au seuil, tu actionnes la pompe et si elle est supérieure, tu arrête la pompe.
Ce qui donne:

  if (h<75);
  {
   digitalWrite(relais, HIGH);
  }
  if (h>75)
  {
   digitalWrite(relais, LOW);
  }

ton analogRead avant le if ne sert à rien puisque tu ne l’affecte à aucune variable.

Si tu trouves que la pompe s’arrête puis redémarre trop souvent tu peux mettre un hystéréris

  float hys=2;
  if (h<75-hys);
  {
   digitalWrite(relais, HIGH);
  }
  if (h>75+hys)
  {
   digitalWrite(relais, LOW);
  }

bonjour,
pourquoi ouvrir un nouveau sujet?
continue sur le premier que tu as ouvert.

 int analogRead(DHTPIN);

sert a rien.

pose sur le papier ton souhait.

si humidité < 75 ===> allumage relais
si humidité >= 85 ===> éteindre relais

Merci pour ta réponse mais après test cela ne fonctionne pas je dois avoir une erreur d’écriture sur le programme

  #include "DHT.h"
#define DHTPIN A0  // capteur humidité 
#define DHTTYPE DHT11 
DHT dht(DHTPIN, DHTTYPE);
int relais= 13; // pompe a brumifier
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);// Initialisation du LCD
const int intTimePause =1000;

void setup ()
{
  lcd.begin(16,2) ; // config écran
  lcd.clear() ; // initialisé ecran
  pinMode(relais, OUTPUT) ; // config sorti pompe
  Serial.begin(9600) ; 
  Serial.print(" bonjour christopher ") ;  
  dht.begin() ;
}


void loop() {
  
  float h = dht.readHumidity();
  float t = dht.readTemperature();

 Serial.print(" Humidite: " ); //affichage sur le monotoring
 Serial.print(h);
 Serial.print( " %\t ");
 Serial.print(" Degres: " );
 Serial.print(t);
 Serial.print (" C ");

lcd.setCursor(0,0); // on definie la place du curseur sur le lcd, là c’est en haut à gauche
lcd.print(" Degres: "); //on affiche la chaine de caractère
lcd.print(t); // on affichage la variable définie précédement
lcd.print(" C "); // pour celcius

lcd.setCursor(0,1); // là on se met à la ligne 2
lcd.print(" Humidite: "); //idem que pour l’humidité
lcd.print(h);
lcd.print(" % ");
delay(1000);

   if (h<(75));
   {
    digitalWrite(relais, HIGH);
   }
   if (h>(75));
   {
    digitalWrite(relais, LOW);
   }
}

Ca devrait fonctionner. Qu'est ce que tu as comme valeur d'humidité sur le moniteur série ?

Sur le moniteur série j'ai une valeur de 54%

Donc ta pompe devrait fonctionner. Comme tu utilises le pin 13 tu dois voir la led L allumée

oui en tout logique des choses, mon pin 13 et en sortie, branché sur le In du relais , le relais fonctionne (led du relais allumé )
mais led(qui remplace la pompe pour le test) sorite relais , ne fonctionne pas.
Du coup je ne comprends pas.

Et si tu débranches le relais de ta carte, la led L de la carte fonctionne?

en débranchent le relais de la carte (led verte relais allumé, led rouge relais éteinte ) led carte arduino allumé ) led pompe éteinte

heu je viens de voir que la led L de la carte Arduino ne fonctionne pas, ni branché ,ni débranché

déjà vire les ( )
if (h<(75));
if (h>(75));

tu parlais de 75 et 85, ou est le 85?

vires le relais, mets une led simple sur la pin 13 ou la pin 12 (en modifiant le code).

change pour le test la valeur mini d’humidité, si tu as 54% en serial, mets le mini à 50% et vois si la led s’allume.

sur la pin 13, il y a une résistance, donc le relais n’a pas forcément assez du jus.

Bien vu infobarquee, il y a un ; de trop dans le if (h<(75)); C’est moi qui ai fait l’erreur initiale quand j’ai répondu sans me relire et djlive a ajouté le 2eme ;

récapitulons le test est le suivant

 if (h<75)
 {
  digitalWrite(relais, HIGH);
 }
 if (h>75)
 {
  digitalWrite(relais, LOW);
 }

mais je conseille quand même de mettre un hystérésis pour éviter la marche/arrêt continue de la pompe

merci pour vos conseil je viens de faire le dernier test

  if (h<50);
   {
    digitalWrite(relais, HIGH);
   }
   if (h>55);
   {
    digitalWrite(relais, LOW);
   }

Pour le test les valeurs sont modifié, alors led s’allume oui mais dépasé la valeur maxi elle ne s’éteint pas

mets ton code modifié pour le vérifier.
c'est une anerie toute bête quelque part.

#include "DHT.h"
#define DHTPIN A0  // capteur humidité 
#define DHTTYPE DHT11 
DHT dht(DHTPIN, DHTTYPE);
int relais= 13; // pompe a brumifier
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);// Initialisation du LCD
const int intTimePause =1000;

void setup ()
{
  lcd.begin(16,2) ; // config écran
  lcd.clear() ; // initialisé ecran
  pinMode(relais, OUTPUT) ; // config sorti pompe
  Serial.begin(9600) ; 
  Serial.print(" bonjour christopher ") ;  
  dht.begin() ;
}


void loop() {
  
  float h = dht.readHumidity();
  float t = dht.readTemperature();

 Serial.print(" Humidite: " ); 
 Serial.print(h);
 Serial.print( " %\t ");
 Serial.print(" Degres: " );
 Serial.print(t);
 Serial.print (" C ");

lcd.setCursor(0,0); 
lcd.print(" Degres: ");
lcd.print(t); 
lcd.print(" C ");

lcd.setCursor(0,1); 
lcd.print(" Humidite: "); 
lcd.print(h);
lcd.print(" % ");
delay(1000);

   if (h<50);
   {
    digitalWrite(relais, HIGH);
   }
   if (h>55);
   {
    digitalWrite(relais, LOW);
   }
}

Le voici entier j’ai juste modif valeur pour le test

viresmoi ces fout… ; à la fin de la ligne if :smiling_imp:

   if (h<50)
   {
    digitalWrite(relais, HIGH);
   }
   if (h>55)
   {
    digitalWrite(relais, LOW);
   }

chose faite s’est bon ça fonctionne houpi merci,

#include "DHT.h"
#define DHTPIN A0  // capteur humidité 
#define DHTTYPE DHT11 
DHT dht(DHTPIN, DHTTYPE);
int relais= 13; // pompe a brumifier
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);// Initialisation du LCD
const int intTimePause =1000;

void setup ()
{
  lcd.begin(16,2) ; // config écran
  lcd.clear() ; // initialisé ecran
  pinMode(relais, OUTPUT) ; // config sorti pompe
  Serial.begin(9600) ; 
  Serial.print(" bonjour christopher ") ;  
  dht.begin() ;
}


void loop() {
  
  float h = dht.readHumidity();
  float t = dht.readTemperature();

 Serial.print(" Humidite: " ); 
 Serial.print(h);
 Serial.print( " %\t ");
 Serial.print(" Degres: " );
 Serial.print(t);
 Serial.print (" C ");

lcd.setCursor(0,0); 
lcd.print(" Degres: ");
lcd.print(t); 
lcd.print(" C ");

lcd.setCursor(0,1); 
lcd.print(" Humidite: "); 
lcd.print(h);
lcd.print(" % ");
delay(1000);

   if (h<50)
   {
    digitalWrite(relais, HIGH);
   }
   if (h>55)
   {
    digitalWrite(relais, LOW);
   }
}

Donc si j’ai bien compris mon relais ne peux pas etre conecté a la sorti 13, donc j’ai juste a modifié la sortie par exemple 7 et les valeurs