#include "RTClib.h"
#include "Wire.h"
#include "DHT.h"
#define DHTPIN 6
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
LiquidCrystal_I2C lcd(I2C_ADDR,LCD_COLUMNS,LCD_LINES);
RTC_DS1307 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
int r1=5;
int r2=4;
int r3=2;
int r4=3;
void setup () {
Serial.begin(115200);
Serial.println(F("DHTxx test!"));
dht.begin();
Serial.begin(115200);
Serial.println("welcome to my project");
lcd.init();
lcd.backlight();
lcd.setCursor(3,0);
lcd.print(" WELCOME TO");
lcd.setCursor(0,1);
lcd.print(" SMART AGRICULTURE");
lcd.setCursor(5,2);
lcd.print(("IRRIGATION"));
lcd.setCursor(7,3);
lcd.print("SYSTEM");
delay(4000);
lcd.clear();
pinMode(r1, OUTPUT);
pinMode(r2, OUTPUT);
pinMode(r3, OUTPUT);
pinMode(r4, OUTPUT);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
abort();
}
}
void loop () {
DHTSENSOR();
DateTime now = rtc.now();
lcd.setCursor(3,0);
lcd.print("TIME");
lcd.print(now.hour(), DEC);
lcd.print(':');
lcd.print(now.minute(), DEC);
lcd.print(':');
lcd.print(now.second(), DEC);
delay(500);
/*lcd.setCursor(0,1);
lcd.print("RELAY1:");
lcd.setCursor(10,1);
lcd.print("RELAY2:");
lcd.setCursor(0,2);
lcd.print("RELAY3:");
lcd.setCursor(10,2);
lcd.print("RELAY4:");*/
if(now.minute()>=0&&now.minute()<=1)
{
Serial.println("relay1 is on");
lcd.setCursor(0,1);
lcd.print("RELAY1:on");
lcd.setCursor(10,1);
lcd.print("RELAY2:off");
lcd.setCursor(0,2);
lcd.print("RELAY3:off");
lcd.setCursor(10,2);
lcd.print("RELAY4:off");
digitalWrite(r1, HIGH);
}
else{
Serial.println("relay1 is off");
digitalWrite(r1,LOW);
}
if(now.minute()>=2&&now.minute()<=3)
{
Serial.println("relay2 is on");
lcd.clear();
lcd.setCursor(0,1);
lcd.print("RELAY1:off");
lcd.setCursor(10,1);
lcd.print("RELAY2:on");
lcd.setCursor(0,2);
lcd.print("RELAY3:off");
lcd.setCursor(10,2);
lcd.print("RELAY4:off");
digitalWrite(r2, HIGH);
}
else
{
Serial.println("relay2 is off");
digitalWrite(r2, LOW);
}
if(now.minute()>=4&&now.minute()<=5)
{
Serial.println("relay3 is on");
lcd.clear();
lcd.setCursor(0,1);
lcd.print("RELAY1:off");
lcd.setCursor(10,1);
lcd.print("RELAY2:off");
lcd.setCursor(0,2);
lcd.print("RELAY3:on");
lcd.setCursor(10,2);
lcd.print("RELAY4:off");
digitalWrite(r3, HIGH);
}
else
{
Serial.println("relay3 is off");
digitalWrite(r3, LOW);
}
if(now.minute()>=6&&now.minute()<=7)
{
Serial.println("relay4 is on");
lcd.clear();
lcd.setCursor(0,1);
lcd.print("RELAY1:off");
lcd.setCursor(10,1);
lcd.print("RELAY2:off");
lcd.setCursor(0,2);
lcd.print("RELAY3:off");
lcd.setCursor(10,2);
lcd.print("RELAY4:on");
digitalWrite(r4, HIGH);
}
else{
Serial.println("relay4 is off");
digitalWrite(r4, LOW);
}
}
void DHTSENSOR() {
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
if (isnan(temperature) || isnan(humidity)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
Serial.print(F("Humidity: "));
Serial.print(humidity);
Serial.print(F("%Temperature:"));
Serial.print(temperature);
Serial.println(F("°C "));
delay(1000);
lcd.setCursor(0,3);
lcd.print(F("Hu:"));
lcd.print(humidity);
lcd.setCursor(8,3);
lcd.print(F("%Te:"));
lcd.print(temperature);
lcd.println(F("°C"));
}