Bonjour, débutante dans la programmation. À la demande d'un professeur pour un nouveau volet environnement. L'écran LCD, inscrit des résultats environ 3 minutes et ensuite elle affiche un symbole de $. De plus, les pompes ne se mettent pas en marche tel que demandé selon un range d'humidité. Nos capteurs donnent des résultats différents l'un de l'autre et nous comprenons pas comment calibrer ceux-ci. Nous avons réussi à se rendre à cette programmation après plusieurs recherche sur internet et plusieurs tests. Mais nous sommes bloquer et les élèves attendent après nous. Merci pour votre aide.
#include <Wire.h>
#include <LiquidCrystal_I2C.h> // Ecran LCD I2C
int CapteurH1 = A0; // Pin pour le capteur d'humidité
int Valeur_Humidite1;
int Pourcentage_Humidite1;
int sec1 = 1167;
int humide1 = 357;
int Relais1 = 3; // Pin pour le relais
int CapteurH2 = A1; // Pin pour le capteur d'humidité
int Valeur_Humidite2;
int Pourcentage_Humidite2;
int sec2 = 1167;
int humide2 = 357;
int Relais2 = 4; // Pin pour le relais
int CapteurH3 = A2; // Pin pour le capteur d'humidité
int Valeur_Humidite3;
int Pourcentage_Humidite3;
int sec3 = 1167;
int humide3 = 357;
int Relais3 = 5; // Pin pour le relais
int CapteurH4 = A3; // Pin pour le capteur d'humidité
int Valeur_Humidite4;
int Pourcentage_Humidite4;
int sec4 = 1167;
int humide4 = 357;
int Relais4 = 6; // Pin pour le relais
LiquidCrystal_I2C lcd(0x27,16,2); //Ecran LCD I2C
void setup() {
Serial.begin(9600);
lcd.begin(16,2);
lcd.clear();
lcd.init();
pinMode(Relais1, OUTPUT);
pinMode(Relais2, OUTPUT);
pinMode(Relais3, OUTPUT);
pinMode(Relais4, OUTPUT);
}
void loop() {
digitalWrite(Relais1, HIGH);
digitalWrite(Relais2, HIGH);
digitalWrite(Relais3, HIGH);
digitalWrite(Relais4, HIGH);
lcd.backlight();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("C1:");
lcd.print(Pourcentage_Humidite1);
lcd.print("%");
lcd.print(" C3:");
lcd.print(Pourcentage_Humidite3);
lcd.print("%");
lcd.setCursor(0,1);
lcd.print("C2:");
lcd.print(Pourcentage_Humidite2);
lcd.print("%");
lcd.print(" C4:");
lcd.print(Pourcentage_Humidite4);
lcd.print("%");
delay(5000);
lcd.clear();
Valeur_Humidite1 = analogRead(CapteurH1); // Lecture de la valeur du capteur d'humidité
Pourcentage_Humidite1 = map(Valeur_Humidite1,sec1,humide1,0,100);
Serial.print("Humidite du sol1= ");
Serial.print(Pourcentage_Humidite1);
Serial.println("%");
//déterminé sir le sol est sec ou humide
if (Pourcentage_Humidite1< 20) { // Si le niveau d'humidité est inférieur au seuil
digitalWrite(Relais1,LOW ); // Allume le relais pour activer la pompe à eau
}
else if (Pourcentage_Humidite1> 25){
digitalWrite(Relais1,HIGH); // Éteint le relais pour désactiver la pompe à eau
}
delay(3000);
Valeur_Humidite2 = analogRead(CapteurH2); // Lecture de la valeur du capteur d'humidité
Pourcentage_Humidite2 = map(Valeur_Humidite2,sec2,humide2,0,100);
Serial.print("Humidite du sol2= ");
Serial.print(Pourcentage_Humidite2);
Serial.println("%");
//déterminé sir le sol est sec ou humide
if (Pourcentage_Humidite2< 25) { // Si le niveau d'humidité est inférieur au seuil
digitalWrite(Relais2,LOW ); // Allume le relais pour activer la pompe à eau
}
else if (Pourcentage_Humidite1> 30) {
digitalWrite(Relais2,HIGH); // Éteint le relais pour désactiver la pompe à eau
}
delay(3000);
Valeur_Humidite3 = analogRead(CapteurH3); // Lecture de la valeur du capteur d'humidité
Pourcentage_Humidite3 = map(Valeur_Humidite3,sec3,humide3,0,100);
Serial.print("Humidite du sol3= ");
Serial.print(Pourcentage_Humidite3);
Serial.println("%");
//déterminé sir le sol est sec ou humide
if (Pourcentage_Humidite3 < 30) { // Si le niveau d'humidité est inférieur au seuil
digitalWrite(Relais3,LOW ); // Allume le relais pour activer la pompe à eau
}
else if (Pourcentage_Humidite1> 35) {
digitalWrite(Relais3,HIGH); // Éteint le relais pour désactiver la pompe à eau
}
delay(3000);
Valeur_Humidite4 = analogRead(CapteurH4); // Lecture de la valeur du capteur d'humidité
Pourcentage_Humidite4 = map(Valeur_Humidite4,sec4,humide4,0,100);
Serial.print("Humidite du sol4= ");
Serial.print(Pourcentage_Humidite4);
Serial.println("%");
//déterminé sir le sol est sec ou humide
if (Pourcentage_Humidite4 < 35) { // Si le niveau d'humidité est inférieur au seuil
digitalWrite(Relais4,LOW ); // Allume le relais pour activer la pompe à eau
}
else if (Pourcentage_Humidite1> 40){
digitalWrite(Relais4,HIGH); // Éteint le relais pour désactiver la pompe à eau
}
delay(3000);
}
