// LCD1602 to Arduino Uno connection example
#include <LiquidCrystal.h>
LiquidCrystal lcd(4, 15, 5, 19, 21, 22);
#define RELAY_PIN 18 // Pin GIOP18 connecté à un relaie
#define MOISTURE_PIN 34 // Pin GIOP34 connecté à AOUT pin du capteur d'humidité
#define WLEVEL_PIN 35 // Pin GIOP34 connecté à S pin du capteur du niveau d'eau
#define Moist_THRESHOLD 20 // Valeur de seuil humidité
#define WLVL_THRESHOLD 5 // Valeur de seuil niveau d'eau
void setup() {
Serial.begin(9600);
pinMode(RELAY_PIN, OUTPUT);
pinMode(MOISTURE_PIN, INPUT);
pinMode(WLEVEL_PIN, INPUT);
lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Sys Irrigation");
lcd.setCursor(3,1);
lcd.print("Automatique");
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("H=");
lcd.setCursor(5,0);
lcd.print("% NV=");
lcd.setCursor(15,0);
lcd.print("%");
lcd.setCursor(0,1);
lcd.print("Pompe:");
}
bool previous_state_pump = false;
bool state_pump;
bool empty;
void loop() {
int moisture = analogRead(MOISTURE_PIN)* 100 / 4095; // lire la valeur analogique du capteur d'humidité
int wlevel = analogRead(WLEVEL_PIN)* 100 / 4095; // lire la valeur analogique du capteur du niveau d'eau
// Test
if (wlevel > WLVL_THRESHOLD) {
empty = false;
}else{
empty = true;
}
if (moisture < Moist_THRESHOLD && !(empty)) {
state_pump = true;
}else{
state_pump = false;
}
// Activation-Desactivation
if (state_pump != previous_state_pump) {
if (state_pump){
digitalWrite(RELAY_PIN, HIGH);
}else{
digitalWrite(RELAY_PIN, LOW);
}
}
previous_state_pump = state_pump;
// Affichage
// 1ere ligne
lcd.setCursor(2,0);
lcd.print(" ");
lcd.setCursor(2,0);
lcd.print(moisture);
lcd.setCursor(12,0);
lcd.print(" ");
lcd.setCursor(12,0);
lcd.print(wlevel);
// 2eme ligne
lcd.setCursor(6,1);
if (state_pump){
lcd.print("ON ");
}else{
lcd.print("OFF");
}
lcd.setCursor(10,1);
if (empty){
lcd.print("R.VIDE");
}else{
lcd.print(" ");
}
delay(100);
}