You are on page 1of 6

#include <LiquidCrystal.

h>
#include "gsmfile.h"
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
#include<Wire.h>
#include "RTClib.h"
RTC_DS1307 RTC;
#include <Keypad.h>
const byte ROWS=4; const byte COLS=3;
char hexaKeys[ROWS][COLS] =
{ {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'N','0','F'}};
byte rowPins[ROWS] = {A3, A2, A1, A0}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {9, 10, 11 }; //connect to the column pinouts of the keypad
Keypad keypads = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS );
char keygets;
char keyget;
int onhours; int onminutes;
int offhours; int offminutes;
int c,d,a,b;
int hours;
int minutes; int seconds;
int load1nh; int load1nm;
int load2nh; int load2nm;
int load1fh;int load1fm;
int load2fh;int load2fm;
int x,y;

void getoffhours(int j)
{
do{
keygets=keypads.getKey();

if(offhours==23)
{
offhours=0;
}
else
{
offhours=offhours+1;
}
}
if(keygets=='8')
{
if(offhours==0)
{
offhours=23;
}
else
{
offhours=offhours-1;
}
}

if(j==1)
{ if(offhours<10){lcd.setCursor(10,1);lcd.print("0"); lcd.setCursor(11,1);lcd.print(offhours);}
else {lcd.setCursor(10,1);lcd.print(offhours);}
load1fh=offhours;

if(j==2)
{
if(offhours<10){lcd.setCursor(10,1);lcd.print("0"); lcd.setCursor(11,1);lcd.print(offhours);}
else {lcd.setCursor(10,1);lcd.print(offhours);}
load2fh=offhours;

}
}

if(e==1)
{ if(offminutes<10){lcd.setCursor(13,1);lcd.print("0"); lcd.setCursor(14,1);lcd.print(offminutes);}
else {lcd.setCursor(13,1);lcd.print(offminutes);}
load1fm=offminutes;

if(e==2)
{
if(offminutes<10){lcd.setCursor(13,1);lcd.print("0"); lcd.setCursor(14,1);lcd.print(offminutes);}
else {lcd.setCursor(13,1);lcd.print(offminutes);}
load2fm=offminutes;

}while(keygets!='F');

if(s==1)
{ if(onhours<10){lcd.setCursor(10,0);lcd.print("0"); lcd.setCursor(11,0);lcd.print(onhours);}
else {lcd.setCursor(10,0);lcd.print(onhours);}
load1nh=onhours;
}

if(s==2)
{
if(onhours<10){lcd.setCursor(10,0);lcd.print("0"); lcd.setCursor(11,0);lcd.print(onhours);}
else {lcd.setCursor(10,0);lcd.print(onhours);}
load2nh=onhours;
}
}while(keygets!='F');

if(l==1)
{ if(onminutes<10){lcd.setCursor(13,0);lcd.print("0"); lcd.setCursor(14,0);lcd.print(onminutes);}
else {lcd.setCursor(13,0);lcd.print(onminutes);}
load1nm=onminutes;
}
if(l==2)
{ if(onminutes<10){lcd.setCursor(13,0);lcd.print("0"); lcd.setCursor(14,0);lcd.print(onminutes);}
else {lcd.setCursor(13,0);lcd.print(onminutes);}
load2nm=onminutes;
}

}while(keygets!='F');

void loadrelay()
{
lcd.clear();
lcd.setCursor(0,0);lcd.print("LOAD STATUS...");
if((load1nh==hours) && (load1nm==minutes)){digitalWrite(12,HIGH);x=1; }
if((load1fh==hours) && (load1fm==minutes)){digitalWrite(12,LOW);x=0; }
if(x==1)
{lcd.setCursor(0,1);lcd.print("L1:ON ");
if(a<3){SMSto("8072814357","LOAD 1 ON");delay(1000);}
a=a+1;b=0;
}
if(x==0)
{lcd.setCursor(0,1);lcd.print("L1:OFF ");
if(b<3){SMSto("8072814357","LOAD 1 OFF");delay(1000);}//8072814357
b=b+1; a=0;
}

if((load2nh==hours) && (load2nm==minutes)){digitalWrite(13,HIGH);y=1;}


if((load2fh==hours) && (load2fm==minutes)){digitalWrite(13,LOW);y=0;}
if(y==1)
{lcd.setCursor(10,1);lcd.print("L2:ON ");
if(c<3){SMSto("8072814357","LOAD 2 ON");delay(1000);}
c=c+1;d=0;
}
if(y==0)
{lcd.setCursor(10,1);lcd.print("L2:OFF ");
if(d<3){SMSto("8072814357","LOAD 2 OFF");delay(1000);}
d=d+1; c=0;
}
delay(500);
}

void displayclock()
{
lcd.clear();
lcd.setCursor(0,0); lcd.print("CLOCK:");
if(hours<10){lcd.setCursor(6,0); lcd.print("0");lcd.setCursor(7,0); lcd.print(hours);}
else {lcd.setCursor(6,0); lcd.print(hours);}
lcd.setCursor(8,0); lcd.print(":");

if(minutes<10){lcd.setCursor(9,0); lcd.print("0");lcd.setCursor(10,0); lcd.print(minutes);}


else {lcd.setCursor(9,0); lcd.print(minutes);}
lcd.setCursor(11,0); lcd.print(":");

if(seconds<10){lcd.setCursor(12,0); lcd.print("0");lcd.setCursor(13,0); lcd.print(seconds);}


else {lcd.setCursor(12,0); lcd.print(seconds);}
lcd.setCursor(14,0); lcd.print(" ");
delay(500);
}

void clockdisplayrelay()
{
lcd.clear();

lcd.setCursor(0,0); lcd.print("1N:");lcd.setCursor(3,0); lcd.print(load1nh);lcd.setCursor(5,0);


lcd.print(":");lcd.setCursor(6,0); lcd.print(load1nm);
lcd.setCursor(8,0); lcd.print("1F:");lcd.setCursor(11,0); lcd.print(load1fh);lcd.setCursor(13,0);
lcd.print(":");lcd.setCursor(14,0); lcd.print(load1fm);
delay(500);
lcd.setCursor(0,1); lcd.print("2N:");lcd.setCursor(3,1); lcd.print(load2nh);lcd.setCursor(5,1);
lcd.print(":");lcd.setCursor(6,1); lcd.print(load2nm);
lcd.setCursor(8,1); lcd.print("2F:");lcd.setCursor(11,1); lcd.print(load2fh);lcd.setCursor(13,1);
lcd.print(":");lcd.setCursor(14,1); lcd.print(load2fm);

delay(500);
}

void setup()
{
Serial.begin(9600);
Wire.begin();
RTC.begin();
pinMode(12,OUTPUT); pinMode(13,OUTPUT);
digitalWrite(12,LOW); digitalWrite(13,LOW);

lcd.begin(16,2);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("GRID BASED LOAD ");
lcd.setCursor(0,1);
lcd.print("AUTOMATIC SHEDDIN");
delay(2000);
lcd.setCursor(0,0);
lcd.print("GSM SETTING FILE..");
lcd.setCursor(0,1);
lcd.print("Loading ......... ");
delay(500);
gsmsetting();
SMSto("8072814357","GRID BASED AUTOMATIC LOAD SHEDDING USING MICRO
CONTROLLER");/*8072814357*/
delay(4000);
lcd.clear();

void loop()
{
DateTime now = RTC.now();
keyget = keypads.getKey();

if(keyget=='N')
{
do
{
keyget = keypads.getKey();
lcd.clear();
lcd.setCursor(0,0); lcd.print("LOAD 1 : PRESS 1 ");
lcd.setCursor(0,1); lcd.print("LOAD 2 : PRESS 2 ");

if(keyget=='1')
{
lcd.clear();
lcd.setCursor(0,0); lcd.print("LOAD1 ON :");lcd.setCursor(10,0); lcd.print("00:00");
lcd.setCursor(0,1); lcd.print("LOAD1 OFF:");lcd.setCursor(10,1); lcd.print("00:00");
getonhours(1);onhours=0;
getonminutes(1);onminutes=0;
getoffhours(1);offhours=0;
getoffminutes(1);offminutes=0;
}

if(keyget=='2')
{
lcd.clear();
lcd.setCursor(0,0); lcd.print("LOAD2 ON :");lcd.setCursor(10,0); lcd.print("00:00");
lcd.setCursor(0,1); lcd.print("LOAD2 OFF:");lcd.setCursor(10,1); lcd.print("00:00");
getonhours(2);onhours=0;
getonminutes(2);onminutes=0;
getoffhours(2);offhours=0;
getoffminutes(2);offminutes=0;
}

}while(keyget!='F');
}
hours=now.hour();
minutes=now.minute();
seconds=now.second();
loadrelay();
clockdisplayrelay();delay(500);
displayclock();
delay(1000);
}

You might also like