//YWROBOT
//Compatible with the Arduino IDE 1.0
//Library version:1.1
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <RTClib.h>
LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display
RTC_DS1307 rtc;
// Relay Delay Time //
int rt = 1000;
//On Time and Off Time
int OnHour = 20;
int OnMin = 20;
int OffHour = 20;
int OffMin = 21;
int x = OffMin - OnMin;
int y = 0;
const int OnHour1 = 6;
const int OnMin1 = 10;
const int OffHour1 = 6;
const int OffMin1 = 11;
int c = OffMin1 - OnMin1;
int v = 0;
// End of On and Off
// Relay Pin Allocation
const int RELAY_PIN = 3;
bool isAlarm = false, isTimer = false, isStartTime2 = false;
const int pushbtn1 = 9;
const int pushbtn2 = 8;
const int pushbtn3 = 7;
const int pushbtn4 = 6;
////////////////************* Manual Button Code *********************///////////////////////
const int manualButton = 5;
////////////////************* Manual Button Code *********************///////////////////////
////////////////************* Power On Start Time Code *********************///////////////////////
/*
int hour=12, minute=59, second=50, pis=0, mls=0, lastTime=0, now;
int hourAlarm=0, minuteAlarm=0, secondAlarm=0;
int hourStartTime2=0, minuteStartTime2=0, secondStartTime2=0;
int mode=0;
int flag = 0, flagAlarm = 0; //indicates 0 = AM, 1 = PM
////////////////************* Power On Start Time Code *********************///////////////////////
int btnstate1; //indicates pushbtn's state
int btnstate2;
int btnstate3;
int btnstate4;
void setup() {
Wire.begin();
lcd.init();
lcd.backlight();
lcd.begin(16, 2);
pinMode(pushbtn2, INPUT);
pinMode(pushbtn3, INPUT);
pinMode(pushbtn4, INPUT);
pinMode(pushbtn1, INPUT);
////////////////************* Manual Button Code *********************///////////////////////
pinMode(manualButton, INPUT);
pinMode(13, OUTPUT);
////////////////************* Manual Button Code *********************///////////////////////
Serial.begin(9600);
lcd.setCursor(0,2);
if (OnHour < 10)
lcd.print("0");
lcd.print(OnHour);
lcd.print(":");
if (OnMin < 10)
lcd.print("0");
lcd.print(OnMin);
lcd.print(" & ");
if (OnHour < 10)
lcd.print("0");
lcd.print(OnHour1);
lcd.print(":");
if (OnMin < 10)
lcd.print("0");
lcd.print(OnMin1);
}
void loop(){
/*
if(mode==0)clock();
else if(mode==1)setTime();
else if(mode==2)setAlarm();
else if(mode==3)setTimer();
else if(mode==4)setAlarm();
*/
////////////////************* Manual Button Code *********************///////////////////////
digitalWrite(3, digitalRead(5));
////////////////************* Manual Button Code *********************///////////////////////
///// RTC CODE /////
DateTime now = rtc.now();
Wire.beginTransmission(0x68);
Wire.write(0);
Wire.endTransmission();
Wire.requestFrom(0x68, 8);
byte second = Wire.read();
byte minute = Wire.read();
byte hour = Wire.read();
byte wkDay = Wire.read();
byte day = Wire.read();
byte month = Wire.read();
byte year = Wire.read();
byte ctrl = Wire.read();
lcd.setCursor(0, 0);
if (day < 10)
lcd.print("0");
lcd.print(day, HEX);
lcd.print("/");
if (month < 10)
lcd.print("0");
lcd.print(month, HEX);
lcd.print("/");
lcd.print("20");
if (year < 10)
lcd.print("0");
lcd.println(year, HEX);
lcd.println();
lcd.setCursor(0, 1);
if (hour < 10)
lcd.print("0");
lcd.print(hour, HEX);
lcd.print(":");
if (minute < 10)
lcd.print("0");
lcd.print(minute, HEX);
lcd.print(":");
if (second < 10)
lcd.print("0");
lcd.println(second, HEX);
delay(500);
if(hour == OnHour && minute == OnMin)
for (y= 0; y <x*60/7; y++)
{ digitalWrite(RELAY_PIN, HIGH);
delay(rt);
digitalWrite(RELAY_PIN, LOW);
delay(rt);
}
{
delay(rt);
digitalWrite(RELAY_PIN, LOW);
}
}
///// RTC END CODE ///////