#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
unsigned long lcdpreviousMillis = 0;
const long lcdinterval = 1000;
const int sv1 = 23;
const int sv2 = 25;
const int sv3 = 27;
const int sv4 = 29;
const int sv5 = 31;
const int sv6 = 33;
void setup() {
lcd.begin(20, 4);
lcd.backlight();
pinMode(sv1, OUTPUT);
pinMode(sv2, OUTPUT);
pinMode(sv3, OUTPUT);
pinMode(sv4, OUTPUT);
pinMode(sv5, OUTPUT);
pinMode(sv6, OUTPUT);
}
void loop() {
int Pot1 = analogRead(A8);
int Pot2 = analogRead(A9);
int Pot3 = analogRead(A10);
int Pot4 = analogRead(A11);
int Pot5 = analogRead(A12);
int outputValue1 = map(Pot1, 0, 1023, 0, 100);
int outputValue2 = map(Pot2, 0, 1023, 0, 100);
int outputValue3 = map(Pot3, 0, 1023, 0, 100);
int outputValue4 = map(Pot4, 0, 1023, 0, 100);
int outputValue5 = map(Pot5, 0, 1023, 0, 100);
if(outputValue1 <= 40) {
digitalWrite(sv1, HIGH);
if(outputValue1 > 40 && outputValue1 < 70) {
digitalWrite(sv1, LOW);
}
}
else {
digitalWrite(sv1, LOW);
}
if(outputValue2 <= 40) {
digitalWrite(sv2, HIGH);
if(outputValue2 > 40 && outputValue2 < 70) {
digitalWrite(sv2, LOW);
}
}
else {
digitalWrite(sv2, LOW);
}
if(outputValue3 <= 40) {
digitalWrite(sv3, HIGH);
if(outputValue3 > 40 && outputValue3 < 70) {
digitalWrite(sv3, LOW);
}
}
else {
digitalWrite(sv3, LOW);
}
if(outputValue4 <= 40) {
digitalWrite(sv4, HIGH);
if(outputValue4 > 40 && outputValue4 < 70) {
digitalWrite(sv4, LOW);
}
}
else {
digitalWrite(sv4, LOW);
}
if(outputValue5 <= 40) {
digitalWrite(sv5, HIGH);
if(outputValue5 > 40 && outputValue5 < 70) {
digitalWrite(sv5, LOW);
}
}
else {
digitalWrite(sv5, LOW);
}
//To water Pump
bool sv1state = digitalRead(sv1);
bool sv2state = digitalRead(sv2);
bool sv3state = digitalRead(sv3);
bool sv4state = digitalRead(sv4);
bool sv5state = digitalRead(sv5);
int highsv = 0;
if(sv1state == HIGH) highsv++;
if(sv2state == HIGH) highsv++;
if(sv3state == HIGH) highsv++;
if(sv4state == HIGH) highsv++;
if(sv5state == HIGH) highsv++;
if(highsv == 5) {
digitalWrite(sv6, HIGH);
}
else {
digitalWrite(sv6, LOW);
}
//LCD PRINT
unsigned long lcdcurrentMillis = millis();
if (lcdcurrentMillis - lcdpreviousMillis >= lcdinterval) {
lcdpreviousMillis = lcdcurrentMillis;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("SOIL MOISTURE VALUE");
lcd.setCursor(0, 1);
lcd.print("S1=");
lcd.print(outputValue1);
lcd.print("% ");
lcd.setCursor(9, 1);
lcd.print("S4=");
lcd.print(outputValue4);
lcd.print("% ");
lcd.setCursor(0, 2);
lcd.print("S2=");
lcd.print(outputValue2);
lcd.print("% ");
lcd.setCursor(9, 2);
lcd.print("S5=");
lcd.print(outputValue5);
lcd.print("% ");
lcd.setCursor(0, 3);
lcd.print("S3=");
lcd.print(outputValue3);
lcd.print("% ");
}
}