#include #include #include const int ledPin = 8; const int ldrPin = A0; LiquidCrystal_I2C lcd(0x27,16,4); dht DHT; #define soilWet 750 #define soilDry 500 #define sensorPower 7 #define sensorPin A1 #define relay 6 #define DHT22_PIN 2 float hum; float temp; void setup() { lcd.init(); lcd.clear(); lcd.backlight(); pinMode(sensorPower, OUTPUT); pinMode(relay, OUTPUT); digitalWrite(relay, LOW); digitalWrite(sensorPower, LOW); pinMode(ledPin, OUTPUT); pinMode(ldrPin, INPUT); Serial.begin(9600); } void loop() { int moisture = readSensor(); lcd.setCursor(2,0); Serial.print("Analog Output: "); if (moisture > soilWet) { lcd.print("Soil Dry"); lcd.setCursor(2,1); lcd.print("Time to Water"); digitalWrite(relay, LOW); } else if (moisture <= soilWet && moisture >= soilDry) { lcd.print("Soil Perfect"); } else { lcd.print ("Soil Wet"); lcd.setCursor(2,1); lcd.print("Stop Watering"); digitalWrite(relay, HIGH); } delay(7000); int chk = DHT.read22(DHT22_PIN); hum = DHT.humidity; temp= DHT.temperature; lcd.setCursor(0,0); lcd.print("Humidity: "); lcd.print(hum); lcd.print("%"); lcd.setCursor(0,1); lcd.print("Temp: "); lcd.print(temp); lcd.println(" C"); delay(7000); int ldrStatus = analogRead(ldrPin); lcd.clear(); lcd.setCursor(0,0); lcd.print(" LDR "); lcd.setCursor(6,1); lcd.print(ldrStatus); delay(0); if (ldrStatus < 750) { digitalWrite(ledPin, LOW); } else { digitalWrite(ledPin, HIGH); } delay(7000); } int readSensor() { digitalWrite(sensorPower, HIGH); delay(10); int val = analogRead(sensorPin); digitalWrite(sensorPower, LOW); return val; }