Whitworth-EN173-2016 / Mbed 2 deprecated SmartRise_MBED

Dependencies:   TextLCD mbed

Fork of SmartRise_MBED by Austin Sloop

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers TimeControl.cpp Source File

TimeControl.cpp

00001 #include "mbed.h"
00002 #include "TextLCD.h"
00003 
00004 //IO
00005 TextLCD lcd(p27,p28,p23,p24,p25,p26); //RS E d1,d2,d3,d4
00006 DigitalIn HrAdjustUp(p6);
00007 DigitalIn HrAdjustDown(p7);
00008 DigitalIn MinAdjust(p8);    //buttons for setting time and alarm
00009 DigitalIn AlarmAdjust2(p9);
00010 
00011 DigitalOut arm(p12);
00012 // 1454284799 is the end of Febuary 
00013 
00014 struct tm* t;
00015 int Ahh,AHH,Amm; 
00016 int HH,mm,hh;       //HH 24hr || hh 12hr
00017 char d,ad;          //am0/pm1
00018 Timer set; 
00019 
00020 void time_init(void){           //starting time and timers   
00021     set.start();
00022     set_time(1454284799+10);
00023     AHH=12;Amm=0;
00024 }
00025 
00026 void timeDisplay(void){                     //main time management function and display
00027     time_t rawTime;
00028     time(&rawTime);    
00029     t = localtime(&rawTime);
00030     HH=t->tm_hour; mm=t->tm_min;                        //updating local hr and min var
00031     
00032     //TIME format
00033     if(HH>12)hh=HH-12;  else hh=HH+0.1;                // I don't know why this makes it work but it does
00034     if(HH ==0){hh = HH+12.1;}
00035                    //convert 24 to 12 hr
00036     if(HH>=12) d='P';     else d='A';                   //update am/pm
00037     //Alarm format
00038     if(AHH>12)Ahh=AHH-12;   else Ahh=AHH;             //convert 24 to 12 hr
00039     if(AHH>=12) ad='P';     else ad='A';
00040              
00041     lcd.printf("  %2d/%.2d %2d:%.2d%cM Alarm -> %2I:%.2I%cM" , t->tm_mon+1,t->tm_mday,hh,t->tm_min,d,Ahh,Amm,ad);  //Print date(month/day), time    
00042 }    
00043     
00044 char checkAlarm(void){
00045     if(HH==AHH&&mm==Amm&&d==ad) return 1;
00046     else return 0;
00047 }
00048 
00049 void alarmProg(void){           //Alarm set/adjust function to be called in main, when alarm set switch is enabled
00050     if(set.read()>0.3){   
00051         if(HrAdjustUp==1) {AHH=AHH+1;set.reset();}
00052         if(HrAdjustDown==1) {AHH=AHH-1;set.reset();}
00053         if(MinAdjust==1) {Amm=Amm+1;set.reset();}
00054         if(AHH>23) AHH=0; if(AHH<0) AHH=23;
00055         if(AHH>=12) ad='P'; else ad='A';
00056         if(Amm>=60) Amm=0;
00057     }
00058 }
00059 
00060 void timeProg(void){
00061     time_t seconds = time(NULL);
00062     if(set.read()>0.3){
00063          if(HrAdjustUp==1 && AlarmAdjust2 ==1){  // Adjust Day Forward
00064             set_time(seconds+86400);
00065             set.reset();
00066         }
00067          else if(HrAdjustUp==1){
00068             set_time(seconds+60*60);
00069             set.reset();
00070         }
00071         if(HrAdjustDown==1 && AlarmAdjust2 ==1){  // Adjust Day Backward
00072             set_time(seconds- 86400);
00073             set.reset();
00074         }
00075         else if(HrAdjustDown==1){
00076             set_time(seconds-60*60);
00077             set.reset();
00078         }
00079         else if(MinAdjust==1){
00080             set_time(seconds+60);
00081             set.reset();
00082         }
00083     }
00084 }
00085