Salut à tous,
Je travaille sur un système de surveillance du niveau d'eau.
Mon but est de relever le niveau de l'eau, afficher le niveau de l'eau et avertir à l'aide d'un buzzer si le niveau d'eau est trop élevé.
Pour cela je dispose de deux capteurs de niveau d'eau "Grove 101020018", d'un buzzer, d'un écran LCD et d'une carte Arduino uno.
Je souhaite que si mes 2 capteurs ne détectent pas d'eau, l'écran affiche "Niveau d'eau bon"; si mon capteur le plus bas détecte de l'eau, l'écran affiche "Niveau d'eau dangereux" et si mes 2 capteurs détectent de l'eau alors l'écran affiche "Niveau d'eau critique" et le buzzer sonne.
Mon problème est que si je téléverse le code suivant sur Arduino l'écran affiche "Niveau d'eau bon" quand aucun capteurs n'est dans l'eau. Quand le capteur déclaré en broche 7 est dans l'eau le message sur l'écran reste le même. Quand les 2 capteurs sont dans l'eau l'écran passe très rapidement de "Niveau d'eau bon" à "Niveau d'eau dangereux" puis à "Niveau d'eau critique" et reste sur critique mais le buzzer ne sonne pas.
#include<LiquidCrystal.h>
LiquidCrystal lcd(8,9,4,5,6,7);
int buzzer = 6;
#define sensorPin 7
#define liquid_level 1
void setup()
{
pinMode(sensorPin, INPUT);
pinMode(liquid_level, INPUT);
pinMode(buzzer, OUTPUT);
lcd.begin(16, 2);
}
void loop()
{
if (digitalRead(7)== LOW && digitalRead(1)== HIGH)//Première condition
{
lcd.setCursor(2,0);
lcd.print("Niveau d'eau");
lcd.setCursor(6,1);
lcd.print("Bon");
delay(500);
}
else if (digitalRead(7)== HIGH && digitalRead(1)== LOW)//Deuxième condition
{
lcd.setCursor(2,0);
lcd.print("Niveau d'eau");
lcd.setCursor(3,1);
lcd.print("Dangereux");
delay(500);
lcd.clear();
}
else if (digitalRead(7)== LOW && digitalRead(1)== LOW)//Troisième condition
{
lcd.setCursor(2,0);
lcd.print("Niveau d'eau");
lcd.setCursor(4,1);
lcd.print("Critique");
delay(500);
lcd.clear();
tone (buzzer,1000,1000);
digitalWrite (buzzer,LOW);
delay(1000);
digitalWrite(buzzer,HIGH);
delay(1000);
}
}
Si je fais le code suivant (qui semblerais plus logique) j'obtient :
.....
void loop()
{
if (digitalRead(7)== HIGH && digitalRead(1)== HIGH)//Première condition
{
lcd...
}
else if (digitalRead(7)== LOW && digitalRead(1)== HIGH)//Deuxième condition
{
lcd...
}
else if (digitalRead(7)== LOW && digitalRead(1)== LOW)//Troisième condition
{
lcd...
}
.....
Et cela ne fonctionne toujours pas car quand les 2 capteurs sont hors de l'eau l'écran affiche en boucle "Niveau d'eau bon" et "Niveau d'eau dangereux". Quand le capteur branché en 7 est dans l'eau le message reste le même et quand les deux capteurs sont dans l'eau le message passe sur "Niveau d'eau critique" et le buzzer ne sonne pas.
Mon buzzer est monter avec un transistor, une diode et une résistance.
(Je vous ait mis une photo du montage complet).
Merci d'avance pour votre aide.