#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
#include <EEPROM.h>
#define OnBoardLED 13
#define RELAY1 2
LiquidCrystal_I2C myLCD(0x27,20,4);
RTC_DS1307 myRTC;
unsigned char H_OnProg[10],M_OnProg[10];
unsigned char H_OffProg[10],M_OffProg[10];
void setup()
{
pinMode(OnBoardLED, OUTPUT);
pinMode(RELAY1, OUTPUT);
Serial.begin(9600);
Serial.println("็Hello ENE of RMUTI Khonkaen");
myLCD.init();
myLCD.backlight();
myLCD.setCursor(5,0); myLCD.print("--CVithaya --");
myLCD.setCursor(0,3); myLCD.print("We're ENE Of RMUTI");
myRTC.begin();
H_OnProg[0] = 8; M_OnProg[0] = 32;
H_OnProg[1] = 9; M_OnProg[1] = 0;
H_OnProg[2] = 10; M_OnProg[2] = 45;
H_OnProg[3] = 11; M_OnProg[3] = 15;
H_OnProg[4] = 21; M_OnProg[4] = 54;
H_OffProg[4] = 21; M_OffProg[4] = 55;
}
unsigned char Cx=0;
unsigned long PrevTime,NowTime;
DateTime RTC_Now;
unsigned char nowHOUR,nowMIN,nowSEC;
unsigned char TimeProgIndex=0;
void TimeProgCheck(void)
{
myLCD.setCursor(0,2); myLCD.print(" ");
myLCD.setCursor(0,2);
myLCD.print(TimeProgIndex); myLCD.print("|");
myLCD.print(H_OnProg[TimeProgIndex]);
myLCD.print(":"); myLCD.print(M_OnProg[TimeProgIndex]);
//---------- TimeProg Comparation --------------
if(nowHOUR == H_OnProg[TimeProgIndex])
{
if(nowMIN == M_OnProg[TimeProgIndex])
{
digitalWrite(RELAY1,HIGH);
}
}
//-----------------------
if(nowHOUR == H_OffProg[TimeProgIndex])
{
if(nowMIN == M_OffProg[TimeProgIndex])
{
digitalWrite(RELAY1,LOW);
}
}
TimeProgIndex++;
if(TimeProgIndex == 10) TimeProgIndex = 0;
}
void loop()
{
NowTime = millis();
if(NowTime >= (PrevTime + 100))
{
if(Cx==0) digitalWrite(OnBoardLED, HIGH);
else if(Cx==3) digitalWrite(OnBoardLED, LOW);
if(Cx == 9)
{
Cx = 0;
RTC_Now = myRTC.now();
nowHOUR = RTC_Now.hour();
nowMIN = RTC_Now.minute();
nowSEC = RTC_Now.second();
TimeProgCheck();
myLCD.setCursor(0,1); myLCD.print(nowHOUR);
myLCD.print(":"); myLCD.print(nowMIN);
myLCD.print(":"); myLCD.print(nowSEC);
//--------------------------------
myLCD.setCursor(10,1); myLCD.print(RTC_Now.day());
myLCD.print("/"); myLCD.print(RTC_Now.month());
myLCD.print("/"); myLCD.print(RTC_Now.year());
}else Cx++;
PrevTime = NowTime;
}
}