#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27,20,4);
#define DHTPIN 9
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
const int AirValue = 540;
const int WaterValue = 250;
int Value1 = 0;
int Value2 = 0;
int Value3 = 0;
int Value4 = 0;
int percent1=0;
int percent2=0;
int percent3=0;
int percent4=0;
int redpin=8;
int greenpin=7;
int bluepin=6;
int pump1 = 2;
int pump2 = 3;
int pump3 = 4;
int pump4 = 5;
byte m[8]= {4,14,14,31,4,4,4,14};
byte n[8]= {0,0,16,8,5,3,7,0};
int sensorpin1=A0;
int sensorpin2=A1;
int sensorpin3=A2;
int sensorpin4=A3;
void setup() {
Serial.begin(9600);
pinMode(9,INPUT);
pinMode(8,OUTPUT);
pinMode(7,OUTPUT);
pinMode(6,OUTPUT);
lcd.init();
lcd.backlight();
lcd.createChar(1,m);
lcd.createChar(2,n);
dht.begin();
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);
float hif = dht.computeHeatIndex(f, h);
float hic = dht.computeHeatIndex(t, h, false);
Value1 = analogRead(A0);
Value2 = analogRead(A1);
Value3 = analogRead(A2);
Value4 = analogRead(A3);
Serial.print("value1: ");
Serial.println(percent1);
Serial.print("value2: ");
Serial.println(percent2);
Serial.print("value3: ");
Serial.println(percent3);
Serial.print("value4: ");
Serial.println(percent4);
Serial.print("Humidity: ");
Serial.print(h);
Serial.print("% Temp: ");
Serial.println(t);
percent1 = map(Value1, AirValue, WaterValue, 0, 100);
percent2 = map(Value2, AirValue, WaterValue, 0, 100);
percent3 = map(Value3, AirValue, WaterValue, 0, 100);
percent4 = map(Value4, AirValue, WaterValue, 0, 100);
if (h<20 && h>0 || h<100 && h>60 ){
digitalWrite(8,HIGH);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(500);}
else if (h<40 && h>20){
digitalWrite(6,HIGH);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
delay(500);}
else if(h<60 && h>40){
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
digitalWrite(6,LOW);}
if(percent1 >= 100)
{
lcd.setCursor(0, 0);
lcd.print("M1=100");
lcd.setCursor(6, 0);
lcd.print("%");
lcd.setCursor(7, 0);
lcd.write( 2);
lcd.write(1);
delay(250);
}
else if(percent1 <=0)
{
lcd.setCursor(0, 0);
lcd.print("M1=0");
lcd.setCursor(6, 0);
lcd.print("%");
lcd.setCursor(7, 0);
lcd.write( 2);
lcd.write(1);
delay(250);
}
else if(percent1 >0 && percent1 < 100)
{
lcd.setCursor(0, 0);
lcd.print("M1=");
lcd.print(percent1);
lcd.setCursor(6, 0);
lcd.print("%");
lcd.setCursor(7, 0);
lcd.write( 2);
lcd.write(1);
delay(500);
}
if(percent2 >= 100)
{
lcd.setCursor(10, 0);
lcd.print("M2=100");
lcd.setCursor(17, 0);
lcd.print("%");
lcd.setCursor(18, 0);
lcd.write( 2);
lcd.write(1);
delay(250);
}
else if(percent2 <=0)
{
lcd.setCursor(10, 0);
lcd.print("M2=0");
lcd.setCursor(17, 0);
lcd.print("%");
lcd.setCursor(18, 0);
lcd.write( 2);
lcd.write(1);
delay(250);
}
else if(percent2 >0 && percent2 < 100)
{
lcd.setCursor(10, 0);
lcd.print("M2=");
lcd.print(percent2);
lcd.setCursor(17, 0);
lcd.print("%");
lcd.setCursor(18, 0);
lcd.write( 2);
lcd.write(1);
delay(500);
}
if(percent3 >= 100)
{
lcd.setCursor(0, 1);
lcd.print("M3=100");
lcd.setCursor(6, 1);
lcd.print("%");
lcd.setCursor(7, 1);
lcd.write( 2);
lcd.write(1);
delay(250);
}
else if(percent3 <=0)
{
lcd.setCursor(0, 1);
lcd.print("M3=0");
lcd.setCursor(6, 1);
lcd.print("%");
lcd.setCursor(7, 1);
lcd.write( 2);
lcd.write(1);
delay(250);
}
else if(percent3 >0 && percent3 < 100)
{
lcd.setCursor(0, 1);
lcd.print("M3=");
lcd.print(percent3);
lcd.setCursor(6, 1);
lcd.print("%");
lcd.setCursor(7, 1);
lcd.write( 2);
lcd.write(1);
delay(500);
}
if(percent4 >= 100)
{
lcd.setCursor(10, 1);
lcd.print("M4=100");
lcd.setCursor(17, 1);
lcd.print("%");
lcd.setCursor(18, 1);
lcd.write( 2);
lcd.write(1);
delay(250);
}
else if(percent4 <=0)
{
lcd.setCursor(10, 1);
lcd.print("M4=0");
lcd.setCursor(17, 1);
lcd.print("%");
lcd.setCursor(18, 1);
lcd.write( 2);
lcd.write(1);
delay(250);
}
else if(percent4 >0 && percent4 < 100)
{
lcd.setCursor(10, 1);
lcd.print("M4=");
lcd.print(percent4);
lcd.setCursor(17, 1);
lcd.print("%");
lcd.setCursor(18, 1);
lcd.write( 2);
lcd.write(1);
delay(500);
}
lcd.setCursor(0,3);
lcd.print("H= ");
lcd.write(h);
lcd.print("% ");
lcd.print(" ,T= ");
lcd.write(t);
lcd.print("C");
if(percent1<20){
digitalWrite(pump1,HIGH);
delay(100);}
else if(percent1>20){
digitalWrite(pump1,LOW);}
if(percent1<20){
digitalWrite(pump1,LOW);
lcd.setCursor(0,2);
lcd.print("PUMP1 off no water");
delay(1000);
}
if(percent2<20){
digitalWrite(pump2,HIGH);
delay(10000);}
else if(percent2>20){
digitalWrite(pump2,LOW);}
if(percent2<20){
digitalWrite(pump2,LOW);
lcd.setCursor(0,2);
lcd.print("PUMP2 off no water");
delay(1000);
}
if(percent3<20){
digitalWrite(pump3,HIGH);
delay(10000);}
else if(percent3>20){
digitalWrite(pump3,LOW);}
if(percent3<20){
digitalWrite(pump3,LOW);
lcd.setCursor(0,2);
lcd.print("PUMP3 off no water");
delay(1000);
}
if(percent4<20){
digitalWrite(pump4,HIGH);
delay(10000);}
else if(percent4>20){
digitalWrite(pump4,LOW);}
if(percent4<20){
digitalWrite(pump4,LOW);
lcd.setCursor(0,2);
lcd.print("PUMP4 off no water");
delay(5000);
}
lcd.clear();
}