#include "DHT.h"
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
#define DHTPIN 12
#define soil 35
#define DHTTYPE DHT22
#define fan 27
#define pump 14
#define led 26
#define ldr 34
#define foy 26
int val;
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(I2C_ADDR,LCD_COLUMNS,LCD_LINES );
const float GAMMA = 0.7;
const float RL10 = 50;
void setup() {
Serial.begin(115200);
lcd.init();
lcd.backlight();
pinMode(ldr, INPUT);
pinMode(soil, INPUT);
pinMode(fan, OUTPUT);
pinMode(pump, OUTPUT);
pinMode(foy, OUTPUT);
dht.begin();
lcd.begin(20, 4);
}
void loop() {
val = analogRead(soil);
int Mois = map(val,0,4095,0,100);
int analogValue = analogRead(34);
float voltage = analogValue / 4095. * 5;
float resistance = 2000 * voltage / (1 - voltage / 5);
float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);
lcd.setCursor(0, 0);
lcd.print("HUM: ");
lcd.print(h);
lcd.setCursor(0, 1);
lcd.print("TEMP: ");
lcd.print(t);
lcd.setCursor(0, 2);
lcd.print("LIGHT: ");
lcd.print(lux);
lcd.setCursor(0, 3);
lcd.print("SOIL: ");
lcd.print(val);
if(h >= 50|| t>= 40){
digitalWrite(fan, HIGH);
}
else{
digitalWrite(fan, LOW);
}
if(Mois <=50){
digitalWrite(pump, HIGH);
}
else{
digitalWrite(pump, LOW);
}
if(val >= 2000){
digitalWrite(led, HIGH);
}
else{
digitalWrite(led, LOW);
}
if(lux < 2000){
digitalWrite(foy, HIGH);
}
else{
digitalWrite(foy, LOW);
}
}