Project
Dependencies: Hotboards_keypad TextLCD eeprom
Revision 1:1894419d5def, committed 2019-09-16
- Comitter:
- shivanandgowdakr
- Date:
- Mon Sep 16 14:05:54 2019 +0000
- Parent:
- 0:194ff03a2e6a
- Commit message:
- Time Controlled Switch Display
Changed in this revision
--- a/eeprom.lib Tue Oct 23 08:12:53 2018 +0000 +++ b/eeprom.lib Mon Sep 16 14:05:54 2019 +0000 @@ -1,1 +1,1 @@ -https://os.mbed.com/teams/Exultsoft1/code/eeprom/#78ca3fcb8db1 +http://developer.mbed.org/users/bborredon/code/eeprom/#925096a4c7f0
--- a/i2ceeprom.cpp Tue Oct 23 08:12:53 2018 +0000 +++ b/i2ceeprom.cpp Mon Sep 16 14:05:54 2019 +0000 @@ -1,19 +1,46 @@ - -// Example - -#include <string> #include "mbed.h" +#include <string> #include "eeprom.h" +#include "i2ceeprom.h" -#define EEPROM_ADDR 0x02 // I2C EEPROM address is 0x00 +#define EEPROM_ADDR 0x0 // I2c EEPROM address is 0x00 -#define SDA D14 // I2C SDA pin +#define SDA D14 // I2C SDA pin #define SCL D15 // I2C SCL pin #define MIN(X,Y) ((X) < (Y) ? (X) : (Y)) #define MAX(X,Y) ((X) > (Y) ? (X) : (Y)) +#define MB_ID 0x00 +#define NO_OF_DEV 0x01 +#define DEV_1_ID 0x02 +#define DEV_1_ST 0x03 +#define DEV_1_VAL 0x04 +#define DEV_2_ID 0x05 +#define DEV_2_ST 0x06 +#define DEV_2_VAL 0x07 +#define DEV_3_ID 0x08 +#define DEV_3_VAL 0x09 +#define DEV_4_ID 0x0A +#define DEV_4_ST 0x0B +#define DEV_4_VAL 0x0C + +int mb_ID = 0x00; +int NOno_of_dev = 0x00; +int dev_1_id = 0x00; +int dev_1_st = 0x00; +int dev_1_val = 0x00; +int dev_2_id = 0x00; +int dev_2_st = 0x00; +int dev_2_val = 0x00; +int dev_3_id = 0x00; +int dev_3_st = 0x00; +int dev_3_val = 0x00; +int dev_4_id = 0x00; +int dev_5_st = 0x00; +int dev_6_val = 0x00; + extern float G_time; extern float Y_time; extern float R_time; @@ -34,15 +61,15 @@ void StoreCurrentMode(int32_t idata) { - EEPROM ep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C128); // 24C64 eeprom with sda = p9 and scl = p10 + EEPROM ep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C32); // 24C64 eeprom with sda = p9 and scl = p10 eeprom_size = ep.getSize(); - max_size = MIN(eeprom_size,256); - ep.write((uint32_t)(eeprom_size - 200),(int32_t)idata); // long write at address eeprom_size - 12 + max_size = MAX(eeprom_size,256); + ep.write(10,(int32_t)idata); // long write at address eeprom_size - 12 if(ep.getError() != 0) myerror(ep.getErrorMessage()); -// printf("\n"); - ep.read((eeprom_size - 12),(int32_t&)idata); - // printf("TransDC Read %d\r\n",idata); + printf("\n"); + ep.read(10,(int32_t&)idata); +// printf("TransDC Read %d\r\n",idata); } @@ -50,25 +77,26 @@ int32_t readCurrentMode() { int32_t idata; - EEPROM ep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C128); // 24C64 eeprom with sda = p9 and scl = p10 + EEPROM ep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C32); // 24C64 eeprom with sda = p9 and scl = p10 eeprom_size = ep.getSize(); - max_size = MIN(eeprom_size,256); - ep.read((eeprom_size - 200),(int32_t&)idata); + max_size = MAX(eeprom_size,256); + printf(" Max Size =:%d\r\n",max_size); + ep.read(10,(int32_t&)idata); if(ep.getError() != 0) myerror(ep.getErrorMessage()); -// printf("\n"); - // printf("Trans Down Count Read %d\r\n",idata); + //printf("\n"); +// printf("Trans Down Count Read %d\r\n",idata); return idata; } bool WriteCorresspondingTimes(uint32_t currentMode, float gTime,float yTime,float rTime) { - EEPROM ep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C128); // 24C64 eeprom with sda = p9 and scl = p10 + EEPROM ep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C32); // 24C64 eeprom with sda = p9 and scl = p10 eeprom_size = ep.getSize(); - max_size = MIN(eeprom_size,256); + max_size = MAX(eeprom_size-200,256); - uint32_t addr = eeprom_size - (currentMode*12); + uint32_t addr = 100*currentMode; ep.write(addr,(float)gTime); // float write at address eeprom_size - 8 if(ep.getError() != 0) myerror(ep.getErrorMessage()); @@ -77,7 +105,7 @@ printf("\nGreen Time : (%f) :\n",gTime); - addr = eeprom_size - ((currentMode*12)-4); + addr = 100*currentMode +4; ep.write(addr,(float)yTime); // float write at address eeprom_size - 8 if(ep.getError() != 0) myerror(ep.getErrorMessage()); @@ -85,7 +113,7 @@ // Test read short, long, float printf("\nYellow Time : (%f) :\n",yTime); - addr = eeprom_size - ((currentMode*12)-8); + addr = 100*currentMode +8; ep.write(addr,(float)rTime); // float write at address eeprom_size - 8 if(ep.getError() != 0) myerror(ep.getErrorMessage()); @@ -100,32 +128,33 @@ bool ReadCorresspondingTimes(uint32_t currentMode, float *gTime,float *yTime,float *rTime) { float fdata=0.0; - EEPROM ep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C128); // 24C64 eeprom with sda = p9 and scl = p10 + EEPROM ep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C32); // 24C64 eeprom with sda = p9 and scl = p10 eeprom_size = ep.getSize(); - max_size = MIN(eeprom_size,256); - ep.read((eeprom_size - (currentMode*12)),(float&)fdata); - + printf("Size is : %d",eeprom_size); + max_size = MAX(eeprom_size-200,256); + printf(" Here 1\r\n"); + uint32_t addr=currentMode*100; + ep.read(addr,fdata); + *gTime=fdata; + + fdata=0; + addr = 100*currentMode +4; +// ep.read((uint32_t)(max_size - ((currentMode*12)-4)),fdata); + ep.read(addr,fdata); + *yTime=fdata; + fdata=0; + addr = 100*currentMode +8; +// ep.read((uint32_t)(max_size - ((currentMode*12)-8)),fdata); +ep.read(addr,fdata); + *rTime=fdata; + printf("1 : %f\r\n",*gTime); + printf("2 : %f\r\n",*yTime); + printf("3 : %f\r\n",*rTime); + if(ep.getError() != 0) myerror(ep.getErrorMessage()); -// printf("\n"); - // printf("Trans Down Count Read %d\r\n",idata); - *gTime=fdata; - fdata=0.0; - ep.read((eeprom_size - (currentMode*12)-4),(float&)fdata); + - if(ep.getError() != 0) - myerror(ep.getErrorMessage()); -// printf("\n"); - // printf("Trans Down Count Read %d\r\n",idata); - *yTime=fdata; - fdata=0.0; - ep.read((eeprom_size - (currentMode*12)-8),(float&)fdata); - - if(ep.getError() != 0) - myerror(ep.getErrorMessage()); -// printf("\n"); - // printf("Trans Down Count Read %d\r\n",idata); - *rTime=fdata; }
--- a/main.cpp Tue Oct 23 08:12:53 2018 +0000 +++ b/main.cpp Mon Sep 16 14:05:54 2019 +0000 @@ -1,4 +1,3 @@ - #include "mbed.h" #include "LCDDisplay.h" @@ -8,8 +7,7 @@ // Defines the keys array with it's respective number of rows & cols, // and with the value of each key -char keys[ 4 ][ 4 ] = -{ +char keys[ 4 ][ 4 ] = { { '1' , '2' , '3' , 'A' }, { '4' , '5' , '6' , 'B' }, { '7' , '8' , '9' , 'C' }, @@ -20,22 +18,14 @@ DigitalInOut rowPins[ 4 ] = {D4,D5,D6,D7 }; // Defines the pins connected to the cols DigitalInOut colPins[ 4 ] = { D8,D9,D10,D11}; - //connect to the column pinouts of the keypad +//connect to the column pinouts of the keypad Keypad keypad( makeKeymap( keys ), rowPins, colPins,4,4); -DigitalIn Mode1(PC_8); -DigitalIn Mode2(PC_6); -DigitalIn Mode3(PC_5); -//DigitalIn Mode4(PC_5); -//DigitalIn Mode5(PC_8); -//DigitalIn Mode6(PC_6); bool PasswordStatus=false; int mode=0; -DigitalIn Start(PA_12); -DigitalIn Stop(PA_11); -DigitalIn Reset(PB_12); + DigitalOut GreenLight(PB_1); @@ -49,12 +39,13 @@ -uint32_t Current_Mode=0; +uint32_t Current_Mode=1; float G_time=0; float Y_time=0; float R_time=0; + uint8_t StartButtonPressed=0; uint8_t StopButtonPressed=0; uint8_t ReStartButtonPressed=0; @@ -63,28 +54,23 @@ //Thread EveryOneSec; void keypadEvent(KeypadEvent key); -bool ReadEachLightTime(int mode,char *mmss); -bool ReadAllTimesofEachMode(int MODE,char *Greentime,char *Yellowtime,char *Redtime); +bool ReadEachLightTime(uint32_t mode,char *mmss); +bool ReadAllTimesofEachMode(uint32_t MODE,char *Greentime,char *Yellowtime,char *Redtime); void ExtractTimesinSecs(char *greentime,char *yellowtime,char *redtime,float *grntim,float *yeltim,float *redtim); -void SaveTimes(int Mode,float GreenTime,float YellowTime,float RedTime); +void SaveTimes(uint32_t Mode,float GreenTime,float YellowTime,float RedTime); void CalculateTimeElapsed(float TimeElapsed, char *TimeStr); bool PasswordAcceptance(); int ModeSelectTochange(); + void Get_Time_Elapsed_after_Start(float timeInSec, char * str); void fn(char rkey); int main() { - bool start=false; - Mode1.mode(PullUp); - Mode2.mode(PullUp); - Mode3.mode(PullUp); -// Mode4.mode(PullUp); -// Mode5.mode(PullUp); -// Mode6.mode(PullUp); - bool lcdflag=true; - Start.mode(PullUp); - Stop.mode(PullUp); - Reset.mode(PullUp); - + bool start=false; + + bool lcdflag=true; + + char Timestr[10]={'\0'}; + char Buf[17]={'\0'}; float timeElapsed=0; char buff[6]= {'\0'}; char Buffer[17]= {'\0'}; @@ -97,258 +83,260 @@ wait(1); Clear_LCD(); //Current_Mode=1; - Display_LCD(0,0,"Select Mode Or"); - Display_LCD(0,1,"Press Start "); - G_time=20; - Y_time=5; - R_time=10; +// Last_Saved_Mode(); + Display_LCD(0,0,"Select Mode Or"); + Display_LCD(0,1,"Press Start "); + G_time=20; + Y_time=5; + R_time=10; char key; + + + Current_Mode = readCurrentMode(); + + //WriteCorresspondingTimes(1, 10,20,30); +// ReadCorresspondingTimes(1,&G_time,&Y_time,&R_time); + + + printf("Current Mode is %d \r\n", Current_Mode); + while(1) { - key=keypad.getKey(); - if(key) - { - if(key=='*') - { - PasswordStatus=PasswordAcceptance(); - } - if(PasswordStatus==true) - { - PasswordStatus=false; - mode= ModeSelectTochange(); - if(mode>=1 && mode <=6) - { - fn((char)(mode+0x30)); - mode=0; - } - else - { - Display_LCD(0,0," Invalid Mode "); - Display_LCD(0,1,"Mode b/w 1-6 "); - wait(2); - - Clear_LCD(); - Display_LCD(0,0,"Select Mode Or"); - Display_LCD(0,1,"Press Start "); - - } - } - - else if(key=='A') - { - printf("Started \r\n"); - StartButtonPressed=1; - StopButtonPressed=0; - ReStartButtonPressed=0; - printf("Started ************ %d \r\n",StartButtonPressed); - printf("Started ############## %d \r\n",StopButtonPressed); - printf("Started 88888888888888%d \r\n",ReStartButtonPressed); - timer.start(); - - } - - else if(key=='B') - { - StartButtonPressed=0; - StopButtonPressed=1; - ReStartButtonPressed=0; - - printf("Stopped \r\n"); - wait(0.2); - } - else if(key=='C') - { - StartButtonPressed=0; - StopButtonPressed=0; - ReStartButtonPressed=1; - timer.stop(); - printf("Reset \r\n"); - wait(0.2); - } - - else if(key=='D') - { - Clear_LCD(); - Display_LCD(0,0,"Choose Mode"); - wait(0.5); - char tempkey=keypad.waitForKey(); - if(tempkey>=0x31 && tempkey<=0x36) - { - char Buff[20]={'\0'}; - sprintf(Buff,"Current Mode %c",tempkey); - Display_LCD(0,1,Buff); - Current_Mode=(int)(tempkey-0x30); - wait(1); - Clear_LCD(); - - } - else - { - Display_LCD(0,0,"Invld Mod Entrd"); - wait(1); - Clear_LCD(); - - } - } - else - {} - + + printf("Key is :%c\r\n",key); + if(key) { + if(key=='*') { + PasswordStatus=PasswordAcceptance(); + } + if(PasswordStatus==true) { + PasswordStatus=false; + mode= ModeSelectTochange(); + if(mode>=1 && mode <=6) { + fn((char)(mode+0x30)); + mode=0; + } else { + Display_LCD(0,0," Invalid Mode "); + Display_LCD(0,1," Mode b/w 1-6 "); + wait(2); + + Clear_LCD(); + Display_LCD(0,0,"Select Mode Or"); + Display_LCD(0,1,"Press Start "); + + } + } + + else if(key=='A') { + printf("Started \r\n"); + StartButtonPressed=1; + StopButtonPressed=0; + ReStartButtonPressed=0; + printf("Started \r\n"); + timer.start(); + + } + + else if(key=='B') { + StartButtonPressed=0; + StopButtonPressed=1; + ReStartButtonPressed=0; + + printf("Stopped \r\n"); + wait(0.2); + } + + else if(key=='C') { + StartButtonPressed=0; + StopButtonPressed=0; + ReStartButtonPressed=1; + timer.stop(); + printf("Reset \r\n"); + wait(0.2); + } + + else if(key=='D') { + Clear_LCD(); + Display_LCD(0,0,"Choose Mode"); + wait(0.5); + char tempkey=keypad.waitForKey(); + if(tempkey>=0x31 && tempkey<=0x36) { + char Buff[20]= {'\0'}; + sprintf(Buff,"Current Mode %c",tempkey); + Display_LCD(0,1,Buff); + Current_Mode=(int)(tempkey-0x30); + StoreCurrentMode(Current_Mode); + wait(1); + Clear_LCD(); + + } else { + Display_LCD(0,0,"Invld Mod Entrd"); + wait(1); + Clear_LCD(); + + } + } else + {} + } - + // if(Mode1==0) - if(Current_Mode==1) - { - printf("Am here in Mode 1\r\n"); - G_time=20; - Y_time=5; - R_time=10; - -// ReadCorresspondingTimes(Current_Mode,&G_time,&Y_time,&R_time); - printf("Current MOde 1 \r\n"); + if(Current_Mode==1) { +// printf("Am here in Mode 1\r\n"); + // G_time=20; +// Y_time=5; +// R_time=10; + + ReadCorresspondingTimes(Current_Mode,&G_time,&Y_time,&R_time); +// printf(" G_time %f, Y Time %f R_time %f :",G_time,Y_time,R_time); +// printf("Current MOde 1 \r\n"); // Display_LCD(0,1,"Mode: 1"); + + Y_time=Y_time+G_time; R_time=R_time+Y_time; wait(0.2); - } - + } + // if(Mode2==0) - if(Current_Mode==2) - { - - G_time=2; - Y_time=5; - R_time=1; - Current_Mode=2; -// ReadCorresspondingTimes(Current_Mode,&G_time,&Y_time,&R_time); + if(Current_Mode==2) { + + // G_time=2; +// Y_time=5; +// R_time=1; + Current_Mode=2; + ReadCorresspondingTimes(Current_Mode,&G_time,&Y_time,&R_time); + printf("Current MOde 2 \r\n"); // Display_LCD(0,1,"Mode: 2"); Y_time=Y_time+G_time; R_time=R_time+Y_time; wait(0.1); - } - + } + // if(Mode3==0) - if(Current_Mode==3) - { - - G_time=12; - Y_time=5; - R_time=10; + if(Current_Mode==3) { + + // G_time=12; +// Y_time=5; +// R_time=10; Current_Mode=3; -// ReadCorresspondingTimes(Current_Mode,&G_time,&Y_time,&R_time); + ReadCorresspondingTimes(Current_Mode,&G_time,&Y_time,&R_time); printf("Current MOde 3 \r\n"); // Display_LCD(0,1,"Mode: 3"); Y_time=Y_time+G_time; R_time=R_time+Y_time; wait(0.1); - } - - - // if(Mode4==0) - if(Current_Mode==4) - { - - G_time=20; - Y_time=5; - R_time=10; + } + + + // if(Mode4==0) + if(Current_Mode==4) { + + // G_time=20; +// Y_time=5; +// R_time=10; Current_Mode=4; -// ReadCorresspondingTimes(Current_Mode,&G_time,&Y_time,&R_time); + ReadCorresspondingTimes(Current_Mode,&G_time,&Y_time,&R_time); printf("Current MOde 1 \r\n"); Display_LCD(0,1,"Mode: 4"); Y_time=Y_time+G_time; R_time=R_time+Y_time; wait(0.2); - } -// - if(Current_Mode==5) - { - - G_time=2; - Y_time=5; - R_time=1; + } +// + if(Current_Mode==5) { + + // G_time=2; +// Y_time=5; +// R_time=1; Current_Mode=5; - printf("Current MOde 2 \r\n"); -// ReadCorresspondingTimes(Current_Mode,&G_time,&Y_time,&R_time); - Display_LCD(0,1,"Mode: 5"); +// printf("Current MOde 2 \r\n"); + ReadCorresspondingTimes(Current_Mode,&G_time,&Y_time,&R_time); + Display_LCD(0,1,"Mode: 5"); Y_time=Y_time+G_time; R_time=R_time+Y_time; wait(0.2); - } -// + } +// // if(Mode6==0) -if(Current_Mode==6) - { - - G_time=12; - Y_time=5; - R_time=10; + if(Current_Mode==6) { + + // G_time=12; +// Y_time=5; +// R_time=10; Current_Mode=3; - printf("Current MOde 3 \r\n"); -// ReadCorresspondingTimes(Current_Mode,&G_time,&Y_time,&R_time); +// printf("Current MOde 3 \r\n"); + ReadCorresspondingTimes(Current_Mode,&G_time,&Y_time,&R_time); Display_LCD(0,1,"Mode: 6"); Y_time=Y_time+G_time; R_time=R_time+Y_time; wait(0.2); - } + } - if(Start==0) - { - printf("Started \r\n"); - StartButtonPressed=1; - StopButtonPressed=0; - ReStartButtonPressed=0; - printf("Started ************ %d \r\n",StartButtonPressed); - printf("Started ############## %d \r\n",StopButtonPressed); - printf("Started 88888888888888%d \r\n",ReStartButtonPressed); - - timer.start(); - - } - if(Stop==0) - { - StartButtonPressed=0; - StopButtonPressed=1; - ReStartButtonPressed=0; - - printf("Stopped \r\n"); - wait(0.2); - - } - - if(Reset==0) - { - StartButtonPressed=0; - StopButtonPressed=0; - ReStartButtonPressed=1; - timer.stop(); - printf("Reset \r\n"); - wait(0.2); - } - - - if(StartButtonPressed==1 && StopButtonPressed==0 && ReStartButtonPressed==0 ) { - printf(" Read Time %f\r\n",timer.read()); //while + // if(Start==0) { +// printf("Started \r\n"); +// StartButtonPressed=1; +// StopButtonPressed=0; +// ReStartButtonPressed=0; +// printf("Started ************ %d \r\n",StartButtonPressed); +// printf("Started ############## %d \r\n",StopButtonPressed); +// printf("Started 88888888888888%d \r\n",ReStartButtonPressed); +// +// timer.start(); +// +// } +// if(Stop==0) { +// StartButtonPressed=0; +// StopButtonPressed=1; +// ReStartButtonPressed=0; +// +// printf("Stopped \r\n"); +// wait(0.2); +// +// } +// +// if(Reset==0) { +// StartButtonPressed=0; +// StopButtonPressed=0; +// ReStartButtonPressed=1; +// timer.stop(); +// printf("Reset \r\n"); +// wait(0.2); +// } + + + if(StartButtonPressed==1 && StopButtonPressed==0 && ReStartButtonPressed==0 ) { + printf(" Read Time %f\r\n",timer.read()); //while if(timer.read()<=G_time ) { - - if(lcdflag==true) - { - Clear_LCD(); - lcdflag=false; - + + if(lcdflag==true) { + Clear_LCD(); + lcdflag=false; + } + + // timer.start(); printf(" Read Time %f\r\n",timer.read()); - Display_LCD(0,0,"Green Light "); + Display_LCD(0,0," Green Light "); + Get_Time_Elapsed_after_Start(timer.read(),Timestr); +// Display_LCD(0,1,Timestr); + sprintf(Buf," %s ",Timestr); + Display_LCD(0,1,Buf); + memset(Buf,'\0',16); GreenLight=0; YellowLight=1; RedLight=1; - wait(0.1); + } else if( timer.read()>G_time && timer.read()<=Y_time ) { - Display_LCD(0,0,"Yellow Light "); - + Display_LCD(0,0," Yellow Light "); + Get_Time_Elapsed_after_Start(timer.read(),Timestr); + sprintf(Buf," %s ",Timestr); + Display_LCD(0,1,Buf); + memset(Buf,'\0',16); GreenLight=1; YellowLight=0; RedLight=1; @@ -356,24 +344,58 @@ printf(" Read Time %f\r\n",timer.read()); } - else if( timer.read()>Y_time && timer.read()<=R_time ) - { - Display_LCD(0,0,"Red Light "); + else if( timer.read()>Y_time && timer.read()<=R_time ) { + Display_LCD(0,0," Red Light "); + Get_Time_Elapsed_after_Start(timer.read(),Timestr); +// Display_LCD(0,1,Timestr); + sprintf(Buf," %s ",Timestr); + Display_LCD(0,1,Buf); + memset(Buf,'\0',16); GreenLight=1; YellowLight=1; RedLight=0; timerred.start(); - wait(0.1); - - printf(" Read Time %f\r\n",timer.read()); - } + + + printf(" Read Time %f\r\n",timer.read()); + } + else if( timer.read()>R_time ) + { + GreenLight=1; + YellowLight=1; + RedLight=1; + timeElapsed=timer.read(); + timer.stop(); + printf("Total Time = %f\r\n",timeElapsed); + + CalculateTimeElapsed(timeElapsed,buff); + + sprintf(Buffer,"Total Time %s",buff); + + Display_LCD(0,0,Buffer); + memset(Buffer,'\0',17); + timeElapsed=timerred.read(); + timerred.stop(); + CalculateTimeElapsed(timeElapsed,buff); + memset(Buffer,'\0',17); + sprintf(Buffer,"Tim af Red %s",buff); + Display_LCD(0,1,Buffer); + memset(Buffer,'\0',17); + + StartButtonPressed=0; + StopButtonPressed=1; + ReStartButtonPressed=0; + + + } + //else if(timer.read()>R_time) { // Display_LCD(0,0,"Time Lmt Excded "); // GreenLight=1; // YellowLight=1; // RedLight=1; // wait(0.2); -// +// // // } @@ -383,53 +405,52 @@ if(StartButtonPressed==0 && StopButtonPressed==1 && ReStartButtonPressed==0 ) { timeElapsed=timer.read(); timer.stop(); - + printf("Total Time = %f\r\n",timeElapsed); - + CalculateTimeElapsed(timeElapsed,buff); - + sprintf(Buffer,"Total Time %s",buff); - + Display_LCD(0,0,Buffer); memset(Buffer,'\0',17); timeElapsed=timerred.read(); timerred.stop(); - CalculateTimeElapsed(timeElapsed,buff); + CalculateTimeElapsed(timeElapsed,buff); memset(Buffer,'\0',17); sprintf(Buffer,"Tim af Red %s",buff); Display_LCD(0,1,Buffer); memset(Buffer,'\0',17); - + wait(0.1); - - // /******************************************/ -// ReStartButtonPressed=1; -// StartButtonPressed=0; -// StopButtonPressed=0; + /******************************************* + * If you want to use Reset Button Comment these lines + * Presently it is with auto reset + ******************************************/ + ReStartButtonPressed=1; + StartButtonPressed=0; + StopButtonPressed=0; // /******************************************/ } if(StartButtonPressed==0 && StopButtonPressed==0 && ReStartButtonPressed==1 ) { - - Display_LCD(0,0,"Done Resetting"); +// Display_LCD(0,0,"Done Resetting"); StartButtonPressed=0; StopButtonPressed=0; ReStartButtonPressed=0; - Clear_LCD(); - - +// Clear_LCD(); + } - if(StartButtonPressed==0 && StopButtonPressed==0 && ReStartButtonPressed==0 ) { + if(StartButtonPressed==0 && StopButtonPressed==0 && ReStartButtonPressed==0 ) { GreenLight=1; YellowLight=1; RedLight=1; timer.reset(); timerred.reset(); - // printf(" Last Line\r\n"); - Display_LCD(0,0,"Select Mode Or"); - Display_LCD(0,1,"Press Start "); - + // Display_LCD(0,0,"Select Mode Or"); +// Display_LCD(0,1,"Press Start "); + lcdflag=true; } @@ -441,122 +462,108 @@ { char rkey; char Str[5]= {'\0'}; - char Star[5]={'\0'}; - char text[5]={'\0'}; - char GreenTime[6]={'\0'}; - char YellowTime[6]={'\0'}; - char RedTime[6]={'\0'}; + char Star[5]= {'\0'}; + char text[5]= {'\0'}; + char GreenTime[6]= {'\0'}; + char YellowTime[6]= {'\0'}; + char RedTime[6]= {'\0'}; bool Staus=false; - rkey=keypad.waitForKey(); + rkey=keypad.waitForKey(); + + switch(rkey) { + + case '1': + + { + Staus=ReadAllTimesofEachMode(1,GreenTime,YellowTime,RedTime); + if(Staus==true) { + + float GTIME=0,YTIME=0,RTIME=0; + ExtractTimesinSecs(GreenTime,YellowTime,RedTime,>IME,&YTIME,&RTIME); + SaveTimes(1,GTIME,YTIME,RTIME); + printf(" Times %f %f %f \r\n",GTIME,YTIME,RTIME); + } + Staus=false; + } + break; + case '2': { + Staus=ReadAllTimesofEachMode(2,GreenTime,YellowTime,RedTime); + if(Staus==true) { + + float GTIME=0,YTIME=0,RTIME=0; + ExtractTimesinSecs(GreenTime,YellowTime,RedTime,>IME,&YTIME,&RTIME); + printf(" Times %f %f %f \r\n",GTIME,YTIME,RTIME); + SaveTimes(2,GTIME,YTIME,RTIME); + } + Staus=false; + } + break; + case '3': { + Staus=ReadAllTimesofEachMode(3,GreenTime,YellowTime,RedTime); + if(Staus==true) { + + float GTIME=0,YTIME=0,RTIME=0; + ExtractTimesinSecs(GreenTime,YellowTime,RedTime,>IME,&YTIME,&RTIME); + SaveTimes(3,GTIME,YTIME,RTIME); + } + Staus=false; + } - switch(rkey) - { - - case '1': - - { - Staus=ReadAllTimesofEachMode(1,GreenTime,YellowTime,RedTime); - if(Staus==true) - { - - float GTIME=0,YTIME=0,RTIME=0; - ExtractTimesinSecs(GreenTime,YellowTime,RedTime,>IME,&YTIME,&RTIME); - SaveTimes(1,GTIME,YTIME,RTIME); - } - Staus=false; - } - break; - case '2': - { - Staus=ReadAllTimesofEachMode(2,GreenTime,YellowTime,RedTime); - if(Staus==true) - { - - float GTIME=0,YTIME=0,RTIME=0; - ExtractTimesinSecs(GreenTime,YellowTime,RedTime,>IME,&YTIME,&RTIME); - SaveTimes(2,GTIME,YTIME,RTIME); - } - Staus=false; - } - break; - case '3': - { - Staus=ReadAllTimesofEachMode(3,GreenTime,YellowTime,RedTime); - if(Staus==true) - { - - float GTIME=0,YTIME=0,RTIME=0; - ExtractTimesinSecs(GreenTime,YellowTime,RedTime,>IME,&YTIME,&RTIME); - SaveTimes(3,GTIME,YTIME,RTIME); - } - Staus=false; - } - - break; - case '4': - { - Staus=ReadAllTimesofEachMode(4,GreenTime,YellowTime,RedTime); - if(Staus==true) - { - - float GTIME=0,YTIME=0,RTIME=0; - ExtractTimesinSecs(GreenTime,YellowTime,RedTime,>IME,&YTIME,&RTIME); - SaveTimes(4,GTIME,YTIME,RTIME); - } - Staus=false; - } - - break; - case '5': - { - Staus=ReadAllTimesofEachMode(5,GreenTime,YellowTime,RedTime); - if(Staus==true) - { - - float GTIME=0,YTIME=0,RTIME=0; - ExtractTimesinSecs(GreenTime,YellowTime,RedTime,>IME,&YTIME,&RTIME); - SaveTimes(5,GTIME,YTIME,RTIME); - } - Staus=false; - } - - break; - - case '6': - { - Staus=ReadAllTimesofEachMode(6,GreenTime,YellowTime,RedTime); - if(Staus==true) - { - - float GTIME=0,YTIME=0,RTIME=0; - ExtractTimesinSecs(GreenTime,YellowTime,RedTime,>IME,&YTIME,&RTIME); - SaveTimes(6,GTIME,YTIME,RTIME); - } - Staus=false; - } - - break; - default: - { - printf("No Mode\r\n"); - Clear_LCD(); - Display_LCD(0,0," InValid Mode "); - - } - - - } - - + break; + case '4': { + Staus=ReadAllTimesofEachMode(4,GreenTime,YellowTime,RedTime); + if(Staus==true) { + + float GTIME=0,YTIME=0,RTIME=0; + ExtractTimesinSecs(GreenTime,YellowTime,RedTime,>IME,&YTIME,&RTIME); + SaveTimes(4,GTIME,YTIME,RTIME); + } + Staus=false; + } + + break; + case '5': { + Staus=ReadAllTimesofEachMode(5,GreenTime,YellowTime,RedTime); + if(Staus==true) { + + float GTIME=0,YTIME=0,RTIME=0; + ExtractTimesinSecs(GreenTime,YellowTime,RedTime,>IME,&YTIME,&RTIME); + SaveTimes(5,GTIME,YTIME,RTIME); + } + Staus=false; + } + + break; + + case '6': { + Staus=ReadAllTimesofEachMode(6,GreenTime,YellowTime,RedTime); + if(Staus==true) { + + float GTIME=0,YTIME=0,RTIME=0; + ExtractTimesinSecs(GreenTime,YellowTime,RedTime,>IME,&YTIME,&RTIME); + SaveTimes(6,GTIME,YTIME,RTIME); + } + Staus=false; + } + + break; + default: { + printf("No Mode\r\n"); + Clear_LCD(); + Display_LCD(0,0," InValid Mode "); + } + } + + } -bool ReadEachLightTime(int mode,char *mmss,char *lightTimeName) +bool ReadEachLightTime(uint32_t mode,char *mmss,char *lightTimeName) { Clear_LCD(); char Buffer[17]= {'\0'}; char Buffer1[17]="Entr Time Mode:"; char Buffer2[17]="Tim MM:SS"; - + uint8_t index1=0; char key='\0'; char str[6]= {'\0'}; @@ -566,8 +573,8 @@ memset(Buffer,'\0',16); sprintf(Buffer,"%s %s",lightTimeName,Buffer2); Display_LCD(0,1,Buffer); - - wait(3); + + wait(3); Clear_LCD(); Display_LCD(0,0,"Press # Set "); Display_LCD(0,1,"Prss * to Exit "); @@ -576,7 +583,7 @@ if(key=='#') { Clear_LCD(); Display_LCD(0,0,"MM:SS "); - + Display_LCD(0,1,"MM:SS "); index1=0; while(index1==0 ||(index1<=4 && key !='#' && key!='*')) { key=keypad.waitForKey(); @@ -598,26 +605,28 @@ mmss[6]='\0'; wait(1); Clear_LCD(); - + return true; - } else if(key=='*'){ + } else if(key=='*') { Display_LCD(0,0,"Mode Not Set "); Display_LCD(0,1,"Retains PrevMode"); + wait (2); + Clear_LCD(); return false; } } -bool ReadAllTimesofEachMode(int MODE,char *Greentime,char *Yellowtime,char *Redtime) +bool ReadAllTimesofEachMode(uint32_t MODE,char *Greentime,char *Yellowtime,char *Redtime) { bool Greenflag=false,Yellowflag=false,Redflag=false; Greenflag=ReadEachLightTime(MODE,Greentime,"Green"); - + if(Greenflag==true) { - + Yellowflag=ReadEachLightTime(MODE,Yellowtime,"Yellow"); if(Yellowflag==true) { - + Redflag=ReadEachLightTime(MODE,Redtime,"Red"); if(Redflag==true) { return true; @@ -653,21 +662,24 @@ *redtim=mins*60+secs; } -void SaveTimes(int Mode,float GreenTime,float YellowTime,float RedTime) +void SaveTimes(uint32_t Mode,float GreenTime,float YellowTime,float RedTime) { bool flag=false; flag=WriteCorresspondingTimes(Mode, GreenTime,YellowTime,RedTime); - { + if(flag==true) { Clear_LCD(); - Display_LCD(0,0," Mode Save Success"); + Display_LCD(0,0," Mode Save "); + Display_LCD(0,1," Success "); wait(1); } else { Clear_LCD(); - Display_LCD(0,0," Mode Save Failure"); + Display_LCD(0,0," Mode Save "); + Display_LCD(0,1," Failure "); + wait(1); } - } + } void CalculateTimeElapsed(float TimeElapsed, char *TimeStr) @@ -679,184 +691,199 @@ } - bool PasswordAcceptance() - { - Clear_LCD(); - Display_LCD(0,0,"Enter Password "); - char PasswordStr[5]={'\0'}; - char temp='\0'; - temp=keypad.waitForKey(); - PasswordStr[0]=temp; - Display_LCD(0,1,PasswordStr); - temp=keypad.waitForKey(); - PasswordStr[1]=temp; - Display_LCD(0,1,PasswordStr); - temp=keypad.waitForKey(); - PasswordStr[2]=temp; - Display_LCD(0,1,PasswordStr); - temp=keypad.waitForKey(); - PasswordStr[3]=temp; - Display_LCD(0,1,PasswordStr); - printf("Password Str %s\r\n",PasswordStr); - - if(PasswordStr[0]=='1' && PasswordStr[1] =='1' && PasswordStr[2]=='1' && PasswordStr[3]=='1') - { - Display_LCD(0,0,"Accepted "); - printf("Accepted\r\n"); - return true; - } - return false; +bool PasswordAcceptance() +{ + Clear_LCD(); + Display_LCD(0,0,"Enter Password "); + char PasswordStr[5]= {'\0'}; + char temp='\0'; + temp=keypad.waitForKey(); + PasswordStr[0]=temp; + Display_LCD(0,1,PasswordStr); + temp=keypad.waitForKey(); + PasswordStr[1]=temp; + Display_LCD(0,1,PasswordStr); + temp=keypad.waitForKey(); + PasswordStr[2]=temp; + Display_LCD(0,1,PasswordStr); + temp=keypad.waitForKey(); + PasswordStr[3]=temp; + Display_LCD(0,1,PasswordStr); + printf("Password Str %s\r\n",PasswordStr); + + if(PasswordStr[0]=='1' && PasswordStr[1] =='1' && PasswordStr[2]=='1' && PasswordStr[3]=='1') { + Display_LCD(0,0,"Accepted "); + printf("Accepted\r\n"); + return true; + } + return false; +} + + +int ModeSelectTochange() +{ + Clear_LCD(); + Display_LCD(0,0,"Select Mode 1-6 "); + char str[2]= {'\0'}; + char temp='\0'; + temp=keypad.waitForKey(); + if(temp>=0x31 && temp<=0x36) { + Display_LCD(0,1,"Mode Is: "); + str[0]=temp; + Display_LCD(9,1,str); + wait(1); + return (temp-0x30); + } + Display_LCD(0,0,"Invalid Mode"); + return -1; + +} + +void fn(char rkey) +{ + char GreenTime[10]= {'\0'},YellowTime[10]= {'\0'},RedTime[10]= {'\0'}; + bool Staus=false; + switch(rkey) + + { + case '1': + + { + Staus=ReadAllTimesofEachMode(1,GreenTime,YellowTime,RedTime); + if(Staus==true) { + + float GTIME=0,YTIME=0,RTIME=0; + ExtractTimesinSecs(GreenTime,YellowTime,RedTime,>IME,&YTIME,&RTIME); + SaveTimes(1,GTIME,YTIME,RTIME); + Display_LCD(0,0,"Done Saving "); + Display_LCD(0,1,"Mode Saved"); + wait(1); + Clear_LCD(); + } + Staus=false; } - - - int ModeSelectTochange() - { - Clear_LCD(); - Display_LCD(0,0,"Select Mode 1-6 "); - char str[2]={'\0'}; - char temp='\0'; - temp=keypad.waitForKey(); - if(temp>=0x31 && temp<=0x36) - { - Display_LCD(0,1,"Mode Is: "); - str[0]=temp; - Display_LCD(9,1,str); - wait(1); - return (temp-0x30); - } - Display_LCD(0,0,"Invalid Mode"); - return -1; + break; + case '2': { + Staus=ReadAllTimesofEachMode(2,GreenTime,YellowTime,RedTime); + if(Staus==true) { + + float GTIME=0,YTIME=0,RTIME=0; + ExtractTimesinSecs(GreenTime,YellowTime,RedTime,>IME,&YTIME,&RTIME); + SaveTimes(2,GTIME,YTIME,RTIME); + Display_LCD(0,0,"Done Saving "); + Display_LCD(0,1,"Mode Saved"); + wait(1); + Clear_LCD(); + } + Staus=false; + } + break; + case '3': { + Staus=ReadAllTimesofEachMode(3,GreenTime,YellowTime,RedTime); + if(Staus==true) { + float GTIME=0,YTIME=0,RTIME=0; + ExtractTimesinSecs(GreenTime,YellowTime,RedTime,>IME,&YTIME,&RTIME); - } - - - - - - - void fn(char rkey) - { - char GreenTime[10]={'\0'},YellowTime[10]={'\0'},RedTime[10]={'\0'}; - bool Staus=false; - switch(rkey) - - { - - case '1': + printf("GreenTime,YellowTime,RedTime,>IME,&YTIME,&RTIME %s %s %s : %f %f %f \r\n ",GreenTime,YellowTime,RedTime,GTIME,YTIME,RTIME); + SaveTimes(3,GTIME,YTIME,RTIME); - { - Staus=ReadAllTimesofEachMode(1,GreenTime,YellowTime,RedTime); - if(Staus==true) - { - - float GTIME=0,YTIME=0,RTIME=0; - ExtractTimesinSecs(GreenTime,YellowTime,RedTime,>IME,&YTIME,&RTIME); -// SaveTimes(1,GTIME,YTIME,RTIME); - Display_LCD(0,0,"Done Saving "); - Display_LCD(0,1,"Mode Saved"); - wait(1); - Clear_LCD(); - } - Staus=false; - } - break; - case '2': - { - Staus=ReadAllTimesofEachMode(2,GreenTime,YellowTime,RedTime); - if(Staus==true) - { - - float GTIME=0,YTIME=0,RTIME=0; - ExtractTimesinSecs(GreenTime,YellowTime,RedTime,>IME,&YTIME,&RTIME); -// SaveTimes(2,GTIME,YTIME,RTIME); - Display_LCD(0,0,"Done Saving "); - Display_LCD(0,1,"Mode Saved"); - wait(1); - Clear_LCD(); - } - Staus=false; - } - break; - case '3': - { - Staus=ReadAllTimesofEachMode(3,GreenTime,YellowTime,RedTime); - if(Staus==true) - { - - float GTIME=0,YTIME=0,RTIME=0; - ExtractTimesinSecs(GreenTime,YellowTime,RedTime,>IME,&YTIME,&RTIME); -// SaveTimes(3,GTIME,YTIME,RTIME); - Display_LCD(0,0,"Done Saving "); - Display_LCD(0,1,"Mode Saved"); - wait(1); - Clear_LCD(); - } - Staus=false; - } - - break; - case '4': - { - Staus=ReadAllTimesofEachMode(4,GreenTime,YellowTime,RedTime); - if(Staus==true) - { - - float GTIME=0,YTIME=0,RTIME=0; - ExtractTimesinSecs(GreenTime,YellowTime,RedTime,>IME,&YTIME,&RTIME); -// SaveTimes(4,GTIME,YTIME,RTIME); - Display_LCD(0,0,"Done Saving "); - Display_LCD(0,1,"Mode Saved"); - wait(1); - Clear_LCD(); - } - Staus=false; - } - - break; - case '5': - { - Staus=ReadAllTimesofEachMode(5,GreenTime,YellowTime,RedTime); - if(Staus==true) - { - - float GTIME=0,YTIME=0,RTIME=0; - ExtractTimesinSecs(GreenTime,YellowTime,RedTime,>IME,&YTIME,&RTIME); + Display_LCD(0,0,"Done Saving "); + Display_LCD(0,1,"Mode Saved"); + wait(1); + Clear_LCD(); + } + Staus=false; + } + + break; + case '4': { + Staus=ReadAllTimesofEachMode(4,GreenTime,YellowTime,RedTime); + if(Staus==true) { + + float GTIME=0,YTIME=0,RTIME=0; + ExtractTimesinSecs(GreenTime,YellowTime,RedTime,>IME,&YTIME,&RTIME); + SaveTimes(4,GTIME,YTIME,RTIME); + Display_LCD(0,0,"Done Saving "); + Display_LCD(0,1,"Mode Saved"); + wait(1); + Clear_LCD(); + } + Staus=false; + } + + break; + case '5': { + Staus=ReadAllTimesofEachMode(5,GreenTime,YellowTime,RedTime); + if(Staus==true) { + + float GTIME=0,YTIME=0,RTIME=0; + ExtractTimesinSecs(GreenTime,YellowTime,RedTime,>IME,&YTIME,&RTIME); // SaveTimes(5,GTIME,YTIME,RTIME); - Display_LCD(0,0,"Done Saving "); - Display_LCD(0,1,"Mode Saved"); - wait(1); - Clear_LCD(); - } - Staus=false; - } - - break; - - case '6': - { - Staus=ReadAllTimesofEachMode(6,GreenTime,YellowTime,RedTime); - if(Staus==true) - { - - float GTIME=0,YTIME=0,RTIME=0; - ExtractTimesinSecs(GreenTime,YellowTime,RedTime,>IME,&YTIME,&RTIME); -// SaveTimes(6,GTIME,YTIME,RTIME); - Display_LCD(0,0,"Done Saving "); - Display_LCD(0,1,"Mode Saved"); - wait(1); - Clear_LCD(); - } - Staus=false; - } - - break; - default: - Display_LCD(0,0,"No Mode saved"); - Display_LCD(0,1,"Retns Prev Mode"); - wait(1); - Clear_LCD(); - printf("No Mode\r\n"); - - } - - } \ No newline at end of file + Display_LCD(0,0,"Done Saving "); + Display_LCD(0,1,"Mode Saved"); + wait(1); + Clear_LCD(); + } + Staus=false; + } + + break; + + case '6': { + Staus=ReadAllTimesofEachMode(6,GreenTime,YellowTime,RedTime); + if(Staus==true) { + float GTIME=0,YTIME=0,RTIME=0; + ExtractTimesinSecs(GreenTime,YellowTime,RedTime,>IME,&YTIME,&RTIME); + SaveTimes(6,GTIME,YTIME,RTIME); + Display_LCD(0,0,"Done Saving "); + Display_LCD(0,1,"Mode Saved"); + wait(1); + Clear_LCD(); + } + Staus=false; + } + break; + default: + Display_LCD(0,0,"No Mode saved"); + Display_LCD(0,1,"Retns Prev Mode"); + wait(1); + Clear_LCD(); + printf("No Mode\r\n"); + } + +} + + + + + void Get_Time_Elapsed_after_Start(float timeInSec, char * str) + { + memset(str,'\0',6); + uint8_t min=(int) timeInSec/60; + uint8_t Secs=(int) timeInSec%60; + + if(min<10) + { + str[0]=0x30; + str[1]=min+0x30; + } + else if(min>=10) + { + str[0]=(min/10)+0x30; + str[1]=(min%10)+0x30; + } + + str[2]=':'; + if(Secs<10) + { + str[3]=0x30; + str[4]=Secs+0x30; + } + else if(Secs>=10) + { + str[3]=(Secs/10)+0x30; + str[4]=(Secs%10)+0x30; + } + str[5]='\0'; + + } \ No newline at end of file