#include <LiquidCrystal.h>
#define sensorPin A0
#define relayPin 3
LiquidCrystal lcd(12, 11, 10, 9, 8, 7); // define LCD pins
bool pump_status;
float moistureValue;
void setup()
{
lcd.begin(16, 2); // Initializes the LCD
// Serial.begin(9600);
pinMode(relayPin, OUTPUT); // Set realy pin as OUTPUT
lcd.print("WELCOME TO SMART");
lcd.setCursor(0,1);
lcd.print("IRIGATION SYSTEM");
delay(5000);
moistureValue = calculate_moisture(); //calculate moisture value and store to "moistureValue" variable
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Moisture:"+ String(moistureValue) + "%"); //print moisture value on LCD
if (moistureValue < 30) // check intially what is moisture value
{
digitalWrite(relayPin, LOW); // Actuate relay (NOTE: relay is actuated when given logic low)
pump_status = HIGH;
lcd.setCursor(0,1); // set cursor to second row
lcd.print("Pump Status: ON"); // print pump status on LCD
}
else
{
digitalWrite(relayPin, HIGH);
pump_status = LOW;
lcd.setCursor(0,1);
lcd.print("Pump Status:OFF");
}
delay (1000);
}
// The line below can be removed after setting the date and time
// setDateTime();
void loop()
{
// Extracts the time from the DS1307 and shows it on the LCD
float moistureValue = calculate_moisture();
lcd.setCursor(0,0);
lcd.print("Moisture:"+ String(moistureValue) + "%");
if (moistureValue < 30 && ! pump_status)
{
digitalWrite(relayPin, LOW);
pump_status = HIGH;
lcd.setCursor(0,1);
lcd.print("Pump Status: ON");
}
else if (moistureValue > 50 && pump_status)
{
digitalWrite(relayPin, HIGH);
pump_status = LOW;
lcd.setCursor(0,1);
lcd.print("Pump Status:OFF");
}
delay(1000);
}
float calculate_moisture()
{
int sensorValue = analogRead(sensorPin);
//Serial.println(sensorValue);
float Corrected_sensorValue = 1024-sensorValue;
float Normalised_sensorValue = (Corrected_sensorValue)/1024 ;
float moisturePercent = Normalised_sensorValue*100 ;
//Serial.println(Normalised_sensorValue);
return moisturePercent;
}