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:
- 13:213bf5887930
- Parent:
- 12:d4011389defe
- Child:
- 14:f3eb0fb6ecd5
diff -r d4011389defe -r 213bf5887930 main.cpp
--- a/main.cpp Wed Apr 22 17:21:09 2015 +0000
+++ b/main.cpp Thu Apr 23 12:32:53 2015 +0000
@@ -107,7 +107,7 @@
STyp2 fsmB[5] = {
{0,"Date/Time",{1,4}},
{1,"Units",{2,0}},
- {2,"Notification",{3,1}},
+ {2,"Alerts",{3,1}},
{3,"Power",{4,2}},
{4,"Logger",{0,3}},
};
@@ -133,6 +133,22 @@
};
+typedef struct State STyp5; // for the Power saver settings
+
+STyp5 fsmE[2] = {
+ {0,"Off",{1,0}},
+ {60,"On",{0,1}},
+};
+
+
+typedef struct State STyp6; // for the data logger settings
+
+STyp5 fsmF[4] = {
+ {0,"Off",{1,0}}, // for the logger
+ {60,"On",{0,1}}, // for the logger {dataLoggerFlag and Timer , "title" , next state}
+ {0,"Off",{1,0}}, // for the save to file option
+ {1,"On",{0,1}}, // for the save to file option
+};
@@ -140,9 +156,7 @@
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];
-// state=fsmD[state].nextState[1];
+ button1Flag=1;
}
@@ -150,9 +164,7 @@
void button2Pressed() //ISR to add 1 to the value of the choice when the second button is pressed
{
state=fsmA[state].nextState[0];
-// state=fsmB[state].nextState[0];
-// state=fsmC[state].nextState[0];
-// state=fsmD[state].nextState[0];
+ button2Flag=1;
}
@@ -280,9 +292,11 @@
void savePower() // turns off the LCD to save power
{
-
+ serial.printf("starts saving power\n");
lcd.turnOff () ; //turns off the lcd
- lcdPowerFlag = 0 ; // A flag is set to indicate the state of the LCD
+ lcdPowerFlag = 0 ; // A flag is set to indicate the state of the LCD (is switched off)
+ serial.printf("LCD is off\n");
+
}
@@ -295,14 +309,17 @@
void powerSaverCheck() // checks if the powersaverFlag is set
{
- if (powerSaverFlag == 1 ) {
+ if (powerSaverFlag) {
+ serial.printf("Timeout attached\n");
powerSaverTimeout.attach(&savePower, powerSaverTime); // setup a timeiut to call the savePower function
}
else {
+ serial.printf("lcd is on\n");
powerSaverTimeout.detach();
+ serial.printf("Timeout detached\n");
}
}
@@ -312,11 +329,15 @@
void wakeUp () //Turns the LCD on after the mbed is interrupted
{
- if (button1Flag || button2Flag || button3Flag || button4Flag ) {
+ if (lcdPowerFlag == 0) {// if the LCD is powered off
+ serial.printf("lcd is off\n");
- if (lcdPowerFlag == 0) { // if the LCD is powered off
- lcdPowerFlag = 1 ;
+ if (button1Flag || button2Flag || button3Flag || button4Flag) { // if any of the buttons are pressed
+
+ serial.printf("one of the buttons are pressed to turn on the lcd\n");
+ lcdPowerFlag = 1 ; // sets the status of the lcd to powered on
+ serial.printf("lcd is on\n");
lcd.init(); // turns the LCD on
powerSaverTimeout.attach(&savePower, powerSaverTime); // setup a timeiut to call the savePower function
button1Flag = 0 ;
@@ -357,6 +378,7 @@
void liveData() //
{
+ powerSaverCheck();
while (1) {
wakeUp();
if (timerFlag) {
@@ -529,22 +551,30 @@
void dataLoggerSetting()
{
+ powerSaverCheck();
+ while (1) {
+ wakeUp();
+ updateTime();
- lcd.clear();
- choice = dataLoggerFlag ;
- powerSaverCheck();
-
+ int display0 = sprintf (buffer0, " Back Save");
+ int display1 = sprintf (buffer1, "Data logger");
+ int display2 = sprintf (buffer2,">>%s", fsmF[state].title);
+ if (state > 0 ) { // if data logger is swicthed on
+ int display3 = sprintf (buffer3, "%i mins", fsmF[1].output/60); // display the timer value
+ int dispaly4 = sprintf (buffer4, "Save to file");
+ }
+ if (state > 1 ) {
+ int dispaly5 = sprintf (buffer5, ">>%s" , fsmF[state].title);
+
+ }
+ else { // if the data logger is off doesnt display anything
+ int display3 = sprintf (buffer3, "");
+ }
- while (1) {
- wakeUp();
+ display();
- if (choice < 1) {
- choice = 2;
- }
- if (choice > 2) {
- choice = 1;
- }
+
switch (choice) {
case 1:
@@ -607,70 +637,50 @@
void powerSaverSetting()
{
-
-
- lcd.clear();
- choice = powerSaverFlag ;
-
+ state = powerSaverFlag ; //inits the state to the saved flag by the user in the past
+ powerSaverCheck();
while (1) {
wakeUp();
- int time = sprintf (PowerSaverTime, "%d min", powerSaverTime/60);//convert integer to buffer str
+ updateTime();
- if (choice < 1) {
- choice = 2;
+ int display0 = sprintf (buffer0, " Back Save");
+ int display1 = sprintf (buffer1, "");
+ int display2 = sprintf (buffer2, "Power Saver");
+ int display3 = sprintf (buffer3, ">>%s", fsmE[state].title);
+ if (state == 1) {
+ int display4 = sprintf (buffer4, "%i mins", fsmE[state].output/60);
+ } else { // if the power saver is off it dowsnt show the time
+ int display4 = sprintf (buffer4, "");
}
- if (choice > 2) {
- choice = 1;
- }
- if (powerSaverTime > 300) {
- powerSaverTime = 60 ;
- }
+ int dispaly5 = sprintf (buffer5, "");
+
+
+ display();
+
- switch (choice) {
- case 1:
-
- lcd.clear();
- lcd.printString(bufferTime,48,0);
- lcd.printString("Power Saver :",0,1);
- lcd.printString("ON",0,2);
- lcd.printString("Time Out :",0,3);
- lcd.printString(PowerSaverTime,0,4);
- lcd.printString("Back Save",0,5);
-
- if (button4Flag) {
- button4Flag=0;
- powerSaverFlag = 1 ;
- powerSaverTime += 60 ;
- dataLoggerTimer.attach(&dataLoggerTimerExpired , 5);
+ powerSaverFlag = state ; //sets the flag to the value of state (0 is off, 1 is on)
+ powerSaverTime = fsmE[state].output; //sets the timer to to value of output from the fsm
+ serial.printf("Power Saver Time = %i \n powerSaverFlag = %i \n",powerSaverTime , powerSaverFlag);
- }
-
-
- break;
- case 2:
- lcd.clear();
- lcd.printString(bufferTime,48,0);
- lcd.printString("Power Saver : ",0,1);
- lcd.printString("OFF",0,2);
- lcd.printString("Back Save",0,5);
- if (button4Flag) {
- button4Flag=0;
- powerSaverFlag = 0 ;
-
- }
-
- default:
- break;
-
+ if (button4Flag) {
+ button4Flag=0;
+ fsmE[state].output += 60 ; //adds a minute to the timer when button 4 is pressed
+ }
+ if (fsmE[state].output > 600) {
+ fsmE[state].output = 60 ;
}
- wait (0.1);
- powerSaverCheck();
+ if (state > 1) {
+ state = 0 ;
+ }
+
if (button3Flag) {
button3Flag=0;
+ powerSaverCheck();
break;
}
+ wait (0.1);
}
}
@@ -705,7 +715,7 @@
}
-void brightnessSetting ()
+void notificationSetting ()
{
while(1) {
wakeUp();
@@ -714,7 +724,6 @@
if (button4Flag) {
button4Flag=0;
- lcd.
}
@@ -730,9 +739,9 @@
void unitsSetting()
{
state = 0;
+ powerSaverCheck();
while (1) {
wakeUp();
- powerSaverCheck();
updateTime();
stateminus1=fsmD[state].nextState[0];
stateminus2=fsmD[stateminus1].nextState[0];
@@ -771,11 +780,10 @@
void timeDateSetting()
{
-
+ powerSaverCheck();
state = 0;
while (1) {
wakeUp();
- powerSaverCheck();
updateTime();
stateminus1=fsmC[state].nextState[0];
stateminus2=fsmC[stateminus1].nextState[0];
@@ -800,7 +808,7 @@
if (button4Flag) {
button4Flag= 0;
- fsmC[state].output ++;
+ fsmC[state].output ++;
calculateUNIXTime();
set_time(UNIXdate); // initialise time from the calculated UNIX time entered by the user
}
@@ -839,6 +847,7 @@
void settingsMenu()
{
state = 0;
+ powerSaverCheck();
while(1) {
stateminus1=fsmB[state].nextState[0];
@@ -848,7 +857,6 @@
wakeUp();
- powerSaverCheck();
updateTime();
strncpy(buffer0, bufferTime, 14);
int dispaly = sprintf (buffer1, "%s", fsmB[stateminus2].title);//convert integer to buffer str
@@ -882,7 +890,7 @@
if (button4Flag) {
button4Flag = 0;
- brightnessSetting();
+ notificationSetting();
}
break;
case 3:
@@ -911,8 +919,7 @@
void startMenu() //The menu displayed at the beginning
{
- //wakeUp();
- //powerSaverCheck();
+ wakeUp();
stateminus1=fsmA[state].nextState[1];
stateminus2=fsmA[stateminus1].nextState[1];
@@ -975,7 +982,7 @@
button4.rise(&button4Pressed);
dataLoggerTimer.attach(&dataLoggerTimerExpired , dataLoggerTime);
set_time(UNIXdate); // initialise time from the calculated UNIX time entered by the user
-
+ powerSaverCheck();
while(1) {
updateTime();