Bonjour à tous
Je ne suis pas un crack dans le codage mais les differents montages réalisés fonctionnent meme si mo code n'est peu etre ^pas parfait.
L'été dernier j'ai installé un petit montage pour surveiller une cuve pour qu'elle ne déborde pas.
Cet hiver j'ai voulu perfectionner mon système en y ajoutant un petit écran LCd et une serie de tests pour savoir si mes 2 sondes sont ok..... ![]()
C'est peut etre pas très utile mais l'hiver faut bien s'occuper un peu...... :o
Mon système est simple, une sonde ou je connecte le 5v et une autre sonde relié a la masse et a une entréé du UNO. Si pas d'humidité je lis une valeur 0 et si contact entre les 2 sondes la valeur lue passe a 1023. Si par malheur j'ai une broche qui se deconnecte, la valeur lue sera autour de 128 et je peu en déduire une sonde en défaut.
Les valeurs que j'ai mises dans mon code sont pour mon environnement après avoir fait des tests.
Voici mon code:
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
void setup()
{
Serial.begin(9600);
lcd.begin(16, 2);
lcd.print("POMPE ON");
lcd.setCursor(5, 1);
lcd.write("Demarrage ");
pinMode(A1, INPUT); //capteur bas
pinMode(A0, INPUT); //capteur haut
pinMode(10, OUTPUT); //sortie relais pompe
pinMode(9, OUTPUT); //sortie relais lampe
pinMode(8, OUTPUT); //sortie relais alarme
digitalWrite(10, HIGH); //pompe on au démarrage arduino
}
void loop()
{
Serial.print("Humidité : ");
Serial.println(analogRead(A0));
Serial.println(analogRead(A1));
delay(200);
//test capteur1
if (analogRead(A1) > 120 && analogRead(A1) < 180) {
lcd.clear();
lcd.setCursor(0, 0); //positinnement curseur 1ere colonne ligne 0 soit 1ere ligne
lcd.print("POMPE ON"); //Affichage 1ere ligne info
lcd.setCursor(0, 1); //positionnement curseur 5ème colonne ligne 1 soit 2eme ligne
lcd.write("Defaut Capteur 1");
}
//test capteur2
if (analogRead(A0) > 120 && analogRead(A0) < 180) {
lcd.clear();
lcd.setCursor(0, 0); //positinnement curseur 1ere colonne ligne 0 soit 1ere ligne
lcd.print("POMPE ON"); //Affichage 1ere ligne info
lcd.setCursor(0, 1); //positionnement curseur 5ème colonne ligne 1 soit 2eme ligne
lcd.write("Defaut Capteur 2");
}
//test si capteur 1 et 2 HS
if (analogRead(A1) > 320 && analogRead(A1) < 380) {
lcd.clear();
lcd.setCursor(0, 0); //positinnement curseur 1ere colonne ligne 0 soit 1ere ligne
lcd.print("POMPE ON"); //Affichage 1ere ligne info
lcd.setCursor(0, 1); //positionnement curseur 5ème colonne ligne 1 soit 2eme ligne
lcd.write("Capteur1 et 2 HS");
}
//démarrage
if (analogRead(A0) < 500 && analogRead(A1) < 500) {
delay(8000); //attente x secondes après descente du liquide sous les sondes
digitalWrite(10,HIGH); //pompe on
digitalWrite(9, LOW); //lampe off
digitalWrite(8, LOW); //alarme off
lcd.clear();
lcd.setCursor(0, 0); //positinnement curseur 1ere colonne ligne 0 soit 1ere ligne
lcd.print("POMPE ON"); //Affichage 1ere ligne info
lcd.setCursor(9, 1); //positionnement curseur 5ème colonne ligne 1 soit 2eme ligne
lcd.print("Test OK");
}
//Cas 1
if (analogRead(A0) > 500 && analogRead(A1) < 800) {
digitalWrite(10, LOW); //pompe off
digitalWrite(9, HIGH); //lampe on
digitalWrite(8, LOW); //alarme off
lcd.clear();
lcd.setCursor(1, 0); //positinnement curseur 1ere colonne ligne 0 soit 1ere ligne
lcd.print("POMPE OFF"); //Affichage 1ere ligne info
lcd.setCursor(4, 1); //positionnement curseur 5ème colonne ligne 1 soit 2eme ligne
lcd.print("CUVE 95%");
delay(5000);
}
//Cas2
if (analogRead(A0) > 500 && analogRead(A1) > 500) {
digitalWrite(10, LOW); //pompe off
digitalWrite(9, HIGH); //lampe on
digitalWrite(8, HIGH); //alarme on
lcd.clear();
lcd.setCursor(1, 0); //positinnement curseur 1ere colonne ligne 0 soit 1ere ligne
lcd.print("POMPE OFF"); //Affichage 1ere ligne info
lcd.setCursor(5, 1); //positionnement curseur 5ème colonne ligne 1 soit 2eme ligne
lcd.print("ALARME");
delay(20000);
}
}
Tout fonctionne sauf le test du capteur 2, si je débranche la pinA0 (qui est normalement proche de 0), la valeur lu dans le serial passe a 138. L'ecran devrait donc m'afficher "Defaut capteur 2".
Or il m'affiche test ok......
Sur ce coup je sèche.
J'ai peut etre un problème dans la structure de mon code, si quelqu'un pouvait me mettre sur la voie....
