#include "RTClib.h"
#include <LiquidCrystal_I2C.h>
#include "DHT.h"
#define DHTPIN 6
#define DHTTYPE DHT22
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
String data;
DHT dht(DHTPIN, DHTTYPE);
int relay1=2;
int relay2=3;
int relay3=4;
int relay4=5;
RTC_DS1307 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
void setup () {
Serial.begin(115200);
lcd.init();
lcd.backlight();
lcd.setCursor(3,0);
lcd.print("welcome to");
lcd.setCursor(2,1);
lcd.print("SMART FARMING");
delay(4000);
Serial.println(F("DHTxx test!"));
dht.begin();
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
pinMode(relay4, OUTPUT);
Serial.println("welcome to my project");
delay(500);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
abort();
}
lcd.clear();
}
void loop () {
DateTime now = rtc.now();
Serial.print("Current time: ");
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
Serial.println();
delay(3000);
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);
if((now.second()> 1) && (now.second()<10))
{
lcd.setCursor(0,1);
lcd.print("Relay1:ON");
Serial.println("relay1 is on");
digitalWrite(relay1, HIGH);
}
else
{
lcd.setCursor(0,1);
lcd.print("Relay1:OFF");
Serial.println("relay1 is on");
digitalWrite(relay1, LOW);
}
if((now.second()> 10) && (now.second()<20))
{
lcd.setCursor(10,1);
lcd.print("Relay2:ON");
Serial.println("relay2 is on");
digitalWrite(relay2, HIGH);
}
else
{
lcd.setCursor(10,1);
lcd.print("Relay2:OFF");
Serial.println("relay2 is off");
digitalWrite(relay2, LOW);
}
if((now.second()> 20) && (now.second()<30))
{
lcd.setCursor(0,2);
lcd.print("Relay3:ON");
Serial.println("relay3 is on");
digitalWrite(relay3, HIGH);
}
else
{
lcd.setCursor(0,2);
lcd.print("Relay3:OFF");
Serial.println("relay3 is off");
digitalWrite(relay3, LOW);
}
if((now.second()> 30) && (now.second()<40))
{
lcd.setCursor(10,2);
lcd.print("Relay4:ON");
Serial.println("relay4 is on");
digitalWrite(relay4, HIGH);
}
else
{
lcd.setCursor(0,1);
lcd.print("Relay4:OFF");
Serial.println("relay4 is off");
digitalWrite(relay4, LOW);
}
// Wait a few seconds between measurements.
delay(2000);
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature(true);
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
// Compute heat index in Fahrenheit (the default)
float hif = dht.computeHeatIndex(f, h);
// Compute heat index in Celsius (isFahreheit = false)
float hic = dht.computeHeatIndex(t, h, false);
Serial.print(F("Humidity: "));
Serial.print(h);
Serial.print(F("% Temperature: "));
Serial.print(t);
Serial.print(F("°C "));
Serial.print(f);
Serial.print(F("°F Heat index: "));
Serial.print(hic);
Serial.print(F("°C "));
Serial.print(hif);
Serial.println(F("°F"));
}
void relay()
{
}