Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: BMP180 N5110 PowerControl mbed
Diff: main.cpp
- Revision:
- 11:a78e01c9f054
- Parent:
- 10:7c976b5a5e25
- Child:
- 12:d4011389defe
--- a/main.cpp Mon Apr 20 22:06:05 2015 +0000
+++ b/main.cpp Tue Apr 21 09:48:05 2015 +0000
@@ -38,8 +38,8 @@
int choice=1 ;
int length;
int year=2015;
-int month=1;
-int day=1;
+int month=4;
+int day=21;
int hour=12;
int min=0;
int sec=1;
@@ -87,12 +87,16 @@
char buffer5[14];
-int state=0;
+int state=0; // used to navigate through the finite machines fsmA and fsmB
int stateplus1 ;
int stateplus2 ;
int stateminus1 ;
int stateminus2 ;
-
+int state1=0; // used to navigate through the finite machines
+int state1plus1 ;
+int state1plus2 ;
+int state1minus1 ;
+int state1minus2 ;
@@ -122,12 +126,27 @@
{4,"Logger",{0,3}},
};
+typedef const struct State STyp3;
+
+STyp3 fsmC[5] = {
+ {12,"Hour:",{1,4}},
+ {0,"Min:",{2,0}},
+ {21,"Day",{3,1}},
+ {4,"Month",{4,2}},
+ {2015,"Year",{0,3}},
+};
+
+
+
+
+
void button1Pressed() //ISR to subtract 1 from the value of choice when the first button is pressed
{
state=fsmA[state].nextState[1];
state=fsmB[state].nextState[1];
+ state=fsmC[state].nextState[1];
}
@@ -136,6 +155,7 @@
{
state=fsmA[state].nextState[0];
state=fsmB[state].nextState[0];
+ state=fsmC[state].nextState[0];
}
@@ -208,7 +228,7 @@
void display()
{
lcd.clear();
- lcd.printString(bufferTime,48,0);
+ lcd.printString(buffer0,0,0);
lcd.printString(buffer1,0,1);
lcd.printString(buffer2,6,2);
lcd.printString(buffer3,12,3);
@@ -818,148 +838,88 @@
void timeDateSetting()
{
+ while (1) {
- choice = 1 ;
- while (1) {
- wakeUp();
- if (choice > 6) {
- choice = 1 ;
- }
- if (choice < 1) {
- choice = 6 ;
- }
-//convert integers to strings to display on the LCD
- int y = sprintf (Year, "Year : %d", year);//convert integer to buffer str
- int m = sprintf (Month, "Month : %d", month);//convert integer to buffer str
- int d = sprintf (Day, "Day : %d", day);//convert integer to buffer str
- int h = sprintf (Hour, "Hour : %d", hour);//convert integer to buffer str
- int mi = sprintf (Min, "Min : %d", min);//convert integer to buffer str
+ lcd.clear();
+ wakeUp();
+ updateTime();
+ int dispaly = sprintf (buffer0, "Back Save");//convert integer to buffer str
+ int dispaly1 = sprintf (buffer1, "%s%d", fsmC[stateminus2].title,fsmC[stateminus2].output);//convert integer to buffer str
+ int dispaly2 = sprintf (buffer2, "%s%d", fsmC[stateminus1].title,fsmC[stateminus1].output);//convert integer to buffer str
+ int dispaly3 = sprintf (buffer3, ">>%s%d", fsmC[state].title,fsmC[state].output);//convert integer to buffer str
+ int dispaly4 = sprintf (buffer4, "%s%d", fsmC[stateplus1].title,fsmC[stateplus1].output);//convert integer to buffer str
+ int dispaly5 = sprintf (buffer5, "%s%d", fsmC[stateplus2].title,fsmC[stateplus2].output);//convert integer to buffer str
+
+ display();
- switch (choice) {
- case 1:
-
- lcd.clear();
- lcd.printString(Hour,10,0);
- lcd.printString(Min,0,1);
- lcd.printString(Day,0,2);
- lcd.printString(Month,0,3);
- lcd.printString(Year,0,4);
- lcd.printString("Back Save",0,5);
- lcd.drawCircle(5,4,3,1); // x,y,radius,black fill
- if (button3Flag) {
- button3Flag= 0;
- hour--;
- }
+ switch (state) {
+ case 0:
if (button4Flag) {
button4Flag= 0;
hour++;
- }
-
- break;
- case 2:
- lcd.clear();
- lcd.printString(Hour,0,0);
- lcd.printString(Min,10,1);
- lcd.printString(Day,0,2);
- lcd.printString(Month,0,3);
- lcd.printString(Year,0,4);
- lcd.printString("Back Save",0,5);
- lcd.drawCircle(5,12,3,1); // x,y,radius,black fill
- if (button3Flag) {
- button3Flag= 0;
- min--;
- }
- if (button4Flag) {
- button4Flag= 0;
- min++;
- }
- break;
- case 3:
- lcd.clear();
- lcd.printString(Hour,0,0);
- lcd.printString(Min,0,1);
- lcd.printString(Day,10,2);
- lcd.printString(Month,0,3);
- lcd.printString(Year,0,4);
- lcd.printString("Back Save",0,5);
- lcd.drawCircle(5,20,3,1); // x,y,radius,black fill
- if (button3Flag) {
- button3Flag= 0;
- day--;
- }
- if (button4Flag) {
- button4Flag= 0;
- day++;
- }
- break;
- case 4:
- lcd.clear();
- lcd.printString(Hour,0,0);
- lcd.printString(Min,0,1);
- lcd.printString(Day,0,2);
- lcd.printString(Month,10,3);
- lcd.printString(Year,0,4);
- lcd.printString("Back Save",0,5);
- lcd.drawCircle(5,28,3,1); // x,y,radius,black fill
- if (button3Flag) {
- button3Flag= 0;
- month--;
- }
- if (button4Flag) {
- button4Flag= 0;
- month++;
- }
- break;
- case 5:
-
- lcd.clear();
- lcd.printString(Hour,0,0);
- lcd.printString(Min,0,1);
- lcd.printString(Day,0,2);
- lcd.printString(Month,0,3);
- lcd.printString(Year,10,4);
- lcd.printString("Back Save",0,5);
- lcd.drawCircle(5,36,3,1); // x,y,radius,black fill
- if (button3Flag) {
- button3Flag= 0;
- year--;
- }
- if (button4Flag) {
- button4Flag= 0;
- year++;
- }
- break;
- case 6:
-
- lcd.clear();
- lcd.printString(Hour,0,0);
- lcd.printString(Min,0,1);
- lcd.printString(Day,0,2);
- lcd.printString(Month,0,3);
- lcd.printString(Year,0,4);
- lcd.printString("Back Save",0,5);
- lcd.drawCircle(40,44,3,1); // x,y,radius,black fill
- if (button4Flag) {
- button4Flag=0;
+ fsmC[state].output = hour ; //sets the saved value in the struct to the new value chosen by the user
calculateUNIXTime();
set_time(UNIXdate); // initialise time from the calculated UNIX time entered by the user
serial.printf ("Until the given date, since 1970/01/01 %i seconds have passed.\n", UNIXdate);
}
- if (button3Flag) {
- button3Flag=0;
- goto exit_loop;
+
+ break;
+ case 1:
+
+ if (button4Flag) {
+ button4Flag= 0;
+ min++;
+ fsmC[state].output = min;
+ calculateUNIXTime();
+ set_time(UNIXdate); // initialise time from the calculated UNIX time entered by the user
+ serial.printf ("Until the given date, since 1970/01/01 %i seconds have passed.\n", UNIXdate);
+ }
+ break;
+ case 2:
+
+ if (button4Flag) {
+ button4Flag= 0;
+ day++;
+ fsmC[state].output = min ;
+ calculateUNIXTime();
+ set_time(UNIXdate); // initialise time from the calculated UNIX time entered by the user
+ serial.printf ("Until the given date, since 1970/01/01 %i seconds have passed.\n", UNIXdate);
+ }
+ break;
+ case 3:
+
+ if (button4Flag) {
+ button4Flag= 0;
+ month++;
+ fsmC[state].output = month ;
+ calculateUNIXTime();
+ set_time(UNIXdate); // initialise time from the calculated UNIX time entered by the user
+ serial.printf ("Until the given date, since 1970/01/01 %i seconds have passed.\n", UNIXdate);
+ }
+ break;
+ case 4:
+
+ if (button4Flag) {
+ button4Flag= 0;
+ year++;
+ fsmC[state].output = year ;
+ calculateUNIXTime();
+ set_time(UNIXdate); // initialise time from the calculated UNIX time entered by the user
+ serial.printf ("Until the given date, since 1970/01/01 %i seconds have passed.\n", UNIXdate);
}
break;
default:
break;
}
+ if (button3Flag) {
+ button3Flag=0;
+ break;
+ }
wait (0.1);
}
-exit_loop:
- ;
}
@@ -967,17 +927,17 @@
void settingsMenu()
{
- while(1) {
- stateminus1=fsmB[state].nextState[0];
- stateminus2=fsmB[stateminus1].nextState[0];
- stateplus1=fsmB[state].nextState[1];
- stateplus2=fsmB[stateplus1].nextState[1];
+ while(1) {
+ stateminus1=fsmB[state].nextState[0];
+ stateminus2=fsmB[stateminus1].nextState[0];
+ stateplus1=fsmB[state].nextState[1];
+ stateplus2=fsmB[stateplus1].nextState[1];
lcd.clear();
wakeUp();
updateTime();
-
+ strncpy(buffer0, bufferTime, 14);
int dispaly = sprintf (buffer1, "%s", fsmB[stateminus2].title);//convert integer to buffer str
int dispaly1 = sprintf (buffer2, "%s", fsmB[stateminus1].title);//convert integer to buffer str
int dispaly2 = sprintf (buffer3, ">>%s", fsmB[state].title);//convert integer to buffer str
@@ -988,7 +948,7 @@
switch (state) {
- case 1:
+ case 0:
if (button4Flag) {
button4Flag=0;
timeDateSetting();
@@ -996,7 +956,7 @@
break;
- case 2:
+ case 1:
if (button4Flag) {
@@ -1005,30 +965,25 @@
}
break;
- case 3:
+ case 2:
if (button4Flag) {
button4Flag = 0;
brightnessSetting();
}
break;
- case 4:
+ case 3:
if (button4Flag) {
button4Flag = 0;
powerSaverSetting();
}
break;
- case 5:
+ case 4:
if (button4Flag) {
button4Flag = 0;
dataLoggerSetting();
}
break;
- case 6:
-
- lcd.clear();
- choice = 1;
- break;
default:
break;
}
@@ -1053,7 +1008,7 @@
stateplus2=fsmA[stateplus1].nextState[1];
-
+ strncpy(buffer0, bufferTime, 14);
int dispaly = sprintf (buffer1, "%s", fsmA[stateminus2].title);//convert integer to buffer str
int dispaly1 = sprintf (buffer2, "%s", fsmA[stateminus1].title);//convert integer to buffer str
int dispaly2 = sprintf (buffer3, ">>%s", fsmA[state].title);//convert integer to buffer str