#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include "DHTesp.h"
#define RelayPin 2
#define I2C_ADDR 0x27
#define LCD_COLUMNS 16
#define LCD_LINES 2
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
const int DHT_PIN = 15;
DHTesp dhtSensor;
void setup() {
lcd.init();
lcd.backlight();
Serial.begin(115200);
Wire.begin(23, 22);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
pinMode(RelayPin, OUTPUT);
}
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
lcd.setCursor(0, 0);
lcd.print("Temperature:"+ String(data.temperature, 1) + "\xDF"+"C ");
lcd.setCursor(0, 1);
lcd.print("Humidity: "+ String(data.humidity, 1) + "% ");
delay(500);
int16_t i = analogRead(34);
String msg = i < 2165 ? "WET" : i > 3135 ? "DRY" : "NORMAL";
lcd.clear();
lcd.print("Soil Con: ");
lcd.print(msg);
delay(500);
if (data.temperature< 24 && data.humidity> 60 && i > 2800){
digitalWrite(RelayPin, LOW);
delay(500);
}
else if (data.temperature> 24 || data.humidity< 60 || i < 2800) {
digitalWrite(RelayPin,HIGH);
delay(500);
}
}