#include <DHT.h>
#include <RTClib.h>
#include <LiquidCrystal_I2C.h>
float max_Temp = 40 ;
float min_Temp = 30;
float max_Humi = 90;
float min_Humi = 70;
float Temp, Humi;
int relay1 = 7;
int relay2 = 8;
int relay3 = 9;
int relay4 = 10;
byte sw1 = 2 ;
byte sw2 = 3;
byte sw3 = 4;
byte sw4 = 5;
int time;
RTC_DS1307 rtc;
LiquidCrystal_I2C lcd(0x27, 20, 4);
DHT dht(6, DHT22);
void setup() {
Serial.begin(9600);
lcd.begin(20, 4);
Wire.begin();
rtc.begin();
lcd.backlight();
dht.begin();
lcd.init();
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
pinMode(relay4, OUTPUT);
pinMode(relay1, OUTPUT);
pinMode(sw1, INPUT);
pinMode(sw2, INPUT);
pinMode(sw3, INPUT);
pinMode(sw4, INPUT);
}
void loop() {
uint32_t currenttime = millis();
lcd.setCursor(0, 0);
lcd.print(" dodo");
ReadTemp();
ReadTime();
if (digitalRead(sw1) == 1 && digitalRead(sw2) == 0)
{
digitalWrite(relay4, HIGH);
digitalWrite(relay3, LOW);
AutoMode();
}
else if (digitalRead(sw1) == 0 && digitalRead(sw2) == 1)
{
digitalWrite(relay4, LOW);
digitalWrite(relay3, HIGH);
ManualMode();
}
else
{
digitalWrite(relay4, LOW);
digitalWrite(relay3, LOW);
digitalWrite(relay1, LOW);
}
}
void ReadTime() {
DateTime now = rtc.now();
lcd.setCursor(0, 3);
lcd.print("Time : ");
lcd.print(now.hour(),DEC);
lcd.print(':');
lcd.print(now.minute(),DEC);
}
void ReadTemp() {
Temp = dht.readTemperature();
Humi = dht.readHumidity();
lcd.setCursor(0, 1);
lcd.print("Temp : ");
lcd.print(Temp);
lcd.setCursor(0, 2);
lcd.print("Humi : ");
lcd.print(Humi);
}
void AutoMode() {
if(digitalRead(sw1)==HIGH && digitalRead(sw2) == LOW){
digitalWrite(relay1, HIGH);
digitalWrite(relay2, LOW);
}
if (Temp > max_Temp && Humi < min_Humi)
{
digitalWrite(relay1, HIGH);
digitalWrite(relay4, HIGH);
}
else if ( Temp < min_Temp && Humi > max_Humi)
{
digitalWrite(relay1, LOW);
digitalWrite(relay4, HIGH);
}
else if (digitalRead(sw1)==LOW && digitalRead(sw2) == LOW) {
digitalWrite(relay4, LOW);
digitalWrite(relay1, LOW);
}
}
void ManualMode() {
if (digitalRead(sw3) == HIGH && digitalRead(sw4) == LOW)
{
digitalWrite(relay2, HIGH);
digitalWrite(relay1, LOW);
}
else if (digitalRead(sw3) == LOW && digitalRead(sw4) == HIGH)
{
digitalWrite(relay2, 1);
digitalWrite(relay1, LOW);
}
else if (digitalRead(sw3)==1 && digitalRead(sw4) == 1)
{
digitalWrite(relay4, LOW);
digitalWrite(relay1,HIGH);
}
else if (digitalRead(sw3) == 0 && digitalRead(sw4) == 0)
{
digitalWrite(relay2, LOW);
digitalWrite(relay1, 0);
}
}