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:
- 9:d1691d971f63
- Parent:
- 8:8b810c29eb7b
- Child:
- 10:7c976b5a5e25
--- a/main.cpp Mon Apr 20 13:16:26 2015 +0000
+++ b/main.cpp Mon Apr 20 21:48:52 2015 +0000
@@ -79,22 +79,71 @@
char Min[60];
char PowerSaverTime[2]; // string to store the powerSaverTime value to display on the LCD
char DataLoggerTime[2]; // string to store the time used for the logger to read data
+char buffer0[14];
+char buffer1[14];
+char buffer2[14];
+char buffer3[14];
+char buffer4[14];
+char buffer5[14];
+
+
+int state1=0; // for the startup menu
+int state1plus1 ;
+int state1plus2 ;
+int state1minus1 ;
+int state1minus2 ;
+
+int state2=0; // for the settings menu
+int state2plus1 ;
+int state2plus2 ;
+int state2minus1 ;
+int state2minus2 ;
+
+
+struct State1 {
+ int output;
+ char title[12];
+ int nextState[2];
+};
+
+typedef const struct State1 STyp1;
+
+STyp1 fsmA[5] = {
+ {0,"Live Data",{1,4}},
+ {1,"Saved Data",{2,0}},
+ {2,"Forecast",{3,1}},
+ {3,"Alarms",{4,2}},
+ {4,"Settings",{0,3}},
+};
+struct State2 {
+ int output;
+ char title[12];
+ int nextState[2];
+};
+typedef const struct State2 STyp2;
+
+STyp2 fsmB[5] = {
+ {0,"Date/Time",{1,4}},
+ {1,"Units",{2,0}},
+ {2,"Brightness",{3,1}},
+ {3,"Power",{4,2}},
+ {4,"Logger",{0,3}},
+};
+
void button1Pressed() //ISR to subtract 1 from the value of choice when the first button is pressed
{
- choice --;
- leds = 1;
-
+ state1=fsmA[state1].nextState[1];
+ state2=fsmB[state2].nextState[1];
}
void button2Pressed() //ISR to add 1 to the value of the choice when the second button is pressed
{
- choice ++;
- leds = 2 ;
-
+ state1=fsmA[state1].nextState[0];
+ state2=fsmB[state2].nextState[0];
}
@@ -139,7 +188,6 @@
-
void setTime() // sets the time every second
{
//print time for debugging
@@ -165,7 +213,17 @@
}
}
+void display()
+{
+ lcd.clear();
+ lcd.printString(bufferTime,48,0);
+ lcd.printString(buffer1,0,1);
+ lcd.printString(buffer2,6,2);
+ lcd.printString(buffer3,12,3);
+ lcd.printString(buffer4,6,4);
+ lcd.printString(buffer5,0,5);
+}
@@ -438,7 +496,7 @@
switch (choice) {
case 1 : {
lcd.clear();
- leds = 1 ;
+ leds = 1 ;
lcd.printString(bufferTime,48,0);
lcd.printString("Temperature",36,1);
lcd.printString(Min,0,2);
@@ -451,11 +509,11 @@
}
case 2 :
lcd.clear();
- leds = 2 ;
+ leds = 2 ;
break;
case 3 :
lcd.clear();
- leds = 4 ;
+ leds = 4 ;
lcd.printString(bufferTime,48,0);
lcd.printString("Temperature",36,1);
lcd.printString(Min,0,2);
@@ -465,7 +523,7 @@
break;
case 4 :
- leds = 8 ;
+ leds = 8 ;
lcd.clear();
break;
default :
@@ -917,33 +975,28 @@
void settingsMenu()
{
-
- powerSaverCheck();
-
- choice = 1 ;
- while(1) {
+ while(1) {
+ state2minus1=fsmB[state2].nextState[0];
+ state2minus2=fsmB[state2minus1].nextState[0];
+ state2plus1=fsmB[state2].nextState[1];
+ state2plus2=fsmB[state2plus1].nextState[1];
+ lcd.clear();
wakeUp();
- if (choice > 5) {
- choice = 1 ;
- }
- if (choice < 1) {
- choice = 5 ;
- }
updateTime();
- switch (choice) {
+
+ int dispaly = sprintf (buffer1, "%s", fsmB[state2minus2].title);//convert integer to buffer str
+ int dispaly1 = sprintf (buffer2, "%s", fsmB[state2minus1].title);//convert integer to buffer str
+ int dispaly2 = sprintf (buffer3, ">>%s", fsmB[state2].title);//convert integer to buffer str
+ int dispaly3 = sprintf (buffer4, "%s", fsmB[state2plus1].title);//convert integer to buffer str
+ int dispaly4 = sprintf (buffer5, "%s", fsmB[state2plus2].title);//convert integer to buffer str
+
+ display();
+
+
+ switch (state2) {
case 1:
-
- lcd.clear();
- lcd.printString(bufferTime,48,0);
- lcd.printString("Time/Date",10,1);
- lcd.printString("Units",0,2);
- lcd.printString("Brightness",0,3);
- lcd.printString("Power Saver",0,4);
- lcd.printString("Logger",0,5);
- lcd.drawCircle(5,12,3,1); // x,y,radius,black fill
-
if (button4Flag) {
button4Flag=0;
timeDateSetting();
@@ -952,14 +1005,7 @@
break;
case 2:
- lcd.clear();
- lcd.printString(bufferTime,48,0);
- lcd.printString("Time/Date",0,1);
- lcd.printString("Units",10,2);
- lcd.printString("Brightness",0,3);
- lcd.printString("Power Saver",0,4);
- lcd.printString("Logger",0,5);
- lcd.drawCircle(5,20,3,1); // x,y,radius,black fill
+
if (button4Flag) {
button4Flag=0;
@@ -968,44 +1014,19 @@
break;
case 3:
- lcd.clear();
- lcd.printString(bufferTime,48,0);
- lcd.printString("Time/Date",0,1);
- lcd.printString("Units",0,2);
- lcd.printString("Brightness",10,3);
- lcd.printString("Power Saver",0,4);
- lcd.printString("Logger",0,5);
- lcd.drawCircle(5,28,3,1); // x,y,radius,black fill
+
if (button4Flag) {
button4Flag = 0;
brightnessSetting();
}
break;
case 4:
- lcd.clear();
- lcd.printString(bufferTime,48,0);
- lcd.printString("Time/Date",0,1);
- lcd.printString("Units",0,2);
- lcd.printString("Brightness",0,3);
- lcd.printString("Power Saver",10,4);
- lcd.printString("Logger",0,5);
- lcd.drawCircle(5,36,3,1); // x,y,radius,black fill
if (button4Flag) {
button4Flag = 0;
powerSaverSetting();
}
break;
case 5:
-
- lcd.clear();
-
- lcd.printString(bufferTime,48,0);
- lcd.printString("Time/Date",0,1);
- lcd.printString("Units",0,2);
- lcd.printString("Brightness",0,3);
- lcd.printString("Power Saver",0,4);
- lcd.printString("Logger",10,5);
- lcd.drawCircle(5,44,3,1); // x,y,radius,black fill
if (button4Flag) {
button4Flag = 0;
dataLoggerSetting();
@@ -1017,7 +1038,6 @@
choice = 1;
break;
default:
- leds = 15;
break;
}
if (button3Flag) {
@@ -1033,90 +1053,48 @@
{
wakeUp();
- if (choice > 5) {
- choice = 1 ;
- }
- if (choice < 1) {
- choice = 5 ;
- }
+ lcd.clear();
+
+ state1minus1=fsmA[state1].nextState[0];
+ state1minus2=fsmA[state1minus1].nextState[0];
+ state1plus1=fsmA[state1].nextState[1];
+ state1plus2=fsmA[state1plus1].nextState[1];
+
- switch (choice) {
- case 1:
+ int dispaly = sprintf (buffer1, "%s", fsmA[state1minus2].title);//convert integer to buffer str
+ int dispaly1 = sprintf (buffer2, "%s", fsmA[state1minus1].title);//convert integer to buffer str
+ int dispaly2 = sprintf (buffer3, ">>%s", fsmA[state1].title);//convert integer to buffer str
+ int dispaly3 = sprintf (buffer4, "%s", fsmA[state1plus1].title);//convert integer to buffer str
+ int dispaly4 = sprintf (buffer5, "%s", fsmA[state1plus2].title);//convert integer to buffer str
- lcd.clear();
- lcd.printString(bufferTime,48,0);
- lcd.printString("Live Data",20,1);
- lcd.printString("Saved Data",0,2);
- lcd.printString("Forecast",0,3);
- lcd.printString("Alarms",0,4);
- lcd.printString("Settings",0,5);
- lcd.drawCircle(5,12,3,1); // x,y,radius,black fill
+
+
+ switch (state1) {
+ case 0:
if (button4Flag) {
button4Flag=0;
timer.attach(&timerExpired,1.0);
updateLiveData();
}
-
-// rest of code here
break;
- case 2:
- lcd.clear();
- lcd.printString(bufferTime,48,0);
- lcd.printString("Live Data",0,1);
- lcd.printString("Saved Data",20,2);
- lcd.printString("Forecast",0,3);
- lcd.printString("Alarms",0,4);
- lcd.printString("Settings",0,5);
- lcd.drawCircle(5,20,3,1); // x,y,radius,black fill
+ case 1:
if (button4Flag) {
button4Flag=0;
dataLogger();
}
break;
+ case 2:
+ break;
case 3:
- lcd.clear();
- lcd.printString(bufferTime,48,0);
- lcd.printString("Live Data",0,1);
- lcd.printString("Saved Data",0,2);
- lcd.printString("Forecast",20,3);
- lcd.printString("Alarms",0,4);
- lcd.printString("Settings",0,5);
- lcd.drawCircle(5,28,3,1); // x,y,radius,black fill
-// rest of code here
break;
case 4:
- lcd.clear();
- lcd.printString(bufferTime,48,0);
- lcd.printString("Live Data",0,1);
- lcd.printString("Saved Data",0,2);
- lcd.printString("Forecast",0,3);
- lcd.printString("Alarms",20,4);
- lcd.printString("Settings",0,5);
- lcd.drawCircle(5,36,3,1); // x,y,radius,black fill
- break;
- case 5:
-
- lcd.clear();
- lcd.printString(bufferTime,48,0);
- lcd.printString("Live Data",0,1);
- lcd.printString("Saved Data",0,2);
- lcd.printString("Forecast",0,3);
- lcd.printString("Alarms",0,4);
- lcd.printString("Settings",20,5);
- lcd.drawCircle(5,44,3,1); // x,y,radius,black fill
if (button4Flag) {
button4Flag=0;
settingsMenu();
}
break;
- case 6:
-
- lcd.clear();
- choice = 1;
- break;
default:
- leds = 15;
break;
}
}
@@ -1124,7 +1102,6 @@
-
int main()
{
@@ -1145,10 +1122,7 @@
while(1) {
updateTime();
startMenu();
- if (dataLoggerFlag) {
- leds = 15;
- dataLoggerFlag = 0 ;
- }
+ display();
wait (0.1);
}
}