Amir Asemanpayeh / Mbed 2 deprecated WeatherStation

Dependencies:   BMP180 N5110 PowerControl mbed

Committer:
amiraseman
Date:
Mon Apr 27 20:58:58 2015 +0000
Revision:
17:99161153081d
Parent:
16:5ce95c8f4e89
Child:
18:374c452e19db
Alarm clock done;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
amiraseman 0:d78ac68077c6 1 #include "mbed.h"
amiraseman 0:d78ac68077c6 2 #include "N5110.h"
amiraseman 0:d78ac68077c6 3 #include "BMP180.h"
amiraseman 0:d78ac68077c6 4 #include "PowerControl/PowerControl.h"
amiraseman 0:d78ac68077c6 5 #include "PowerControl/EthernetPowerControl.h"
amiraseman 0:d78ac68077c6 6
amiraseman 0:d78ac68077c6 7 BMP180 bmp180(p28,p27); // SDA, SCL
amiraseman 0:d78ac68077c6 8 N5110 lcd(p7,p8,p9,p10,p11,p13,p26);
amiraseman 1:e60b9f116d38 9 BusOut leds(LED4,LED3,LED2,LED1);
amiraseman 0:d78ac68077c6 10 Serial serial(USBTX,USBRX);
amiraseman 1:e60b9f116d38 11 InterruptIn button1(p16);
amiraseman 1:e60b9f116d38 12 InterruptIn button2(p17);
amiraseman 2:1d7ef0f49b35 13 InterruptIn button3 (p15);
amiraseman 2:1d7ef0f49b35 14 InterruptIn button4 (p18);
amiraseman 17:99161153081d 15 PwmOut redLED(p22);//red
amiraseman 17:99161153081d 16 PwmOut yellowLED(p23);//yellow
amiraseman 17:99161153081d 17 PwmOut greenLED(p24);//green
amiraseman 17:99161153081d 18 PwmOut buzzer(p21); //buzzer
amiraseman 0:d78ac68077c6 19
amiraseman 0:d78ac68077c6 20 Ticker timer; //Create ticker object for temperature and pressure readings
amiraseman 8:8b810c29eb7b 21 Ticker dataLoggerTimer ; // a ticker object for the data logger functions
amiraseman 6:03f12eda070d 22 Timeout powerSaverTimeout; // create a timeout object for the poweerSaver function
amiraseman 0:d78ac68077c6 23
amiraseman 15:c6f7c4768cf2 24
amiraseman 15:c6f7c4768cf2 25 int i= 0 ; //integer used to indicate the cell number with in an array
amiraseman 0:d78ac68077c6 26 int setTimeFlag = 0; // flag for real time clock ISR
amiraseman 12:d4011389defe 27 int timerFlag = 1; // Flag for tempesrature pressure reading ISR
amiraseman 1:e60b9f116d38 28 int button1Flag = 0;
amiraseman 1:e60b9f116d38 29 int button2Flag = 0 ;
amiraseman 2:1d7ef0f49b35 30 int button3Flag = 0 ;
amiraseman 2:1d7ef0f49b35 31 int button4Flag = 0 ;
amiraseman 5:6952998ab446 32 int unitFlag = 1 ;
amiraseman 6:03f12eda070d 33 int powerSaverFlag = 0 ;
amiraseman 6:03f12eda070d 34 int lcdPowerFlag = 1 ; // Indicates if the LCD is switched on or powered off
amiraseman 7:328dc986484f 35 int dataLoggerFlag = 0 ;
amiraseman 8:8b810c29eb7b 36 int saveToFileFlag = 0 ;
amiraseman 17:99161153081d 37 int runLoggerFlag = 0 ; // if the logger is switched on allows user to go to this option
amiraseman 17:99161153081d 38 int alarmClockFlag = 0 ; //indicates if the alarm clock has been turned on
amiraseman 17:99161153081d 39 int thresholdAlarmFlag = 0 ; // indicates if the thresholds are set
amiraseman 2:1d7ef0f49b35 40
amiraseman 4:783276521952 41 int UNIXdate;
amiraseman 17:99161153081d 42 int currentTime ;
amiraseman 6:03f12eda070d 43 int powerSaverTime = 60;
amiraseman 14:f3eb0fb6ecd5 44 int dataLoggerTime = 60;
amiraseman 15:c6f7c4768cf2 45
amiraseman 15:c6f7c4768cf2 46 int temperature;
amiraseman 15:c6f7c4768cf2 47 float pressure;
amiraseman 15:c6f7c4768cf2 48 int averageTemperature ;
amiraseman 15:c6f7c4768cf2 49 int averagePressure ;
amiraseman 15:c6f7c4768cf2 50 int minTemperature ;
amiraseman 15:c6f7c4768cf2 51 int maxTemperature ;
amiraseman 15:c6f7c4768cf2 52 int minPressure;
amiraseman 15:c6f7c4768cf2 53 int maxPressure;
amiraseman 15:c6f7c4768cf2 54
amiraseman 15:c6f7c4768cf2 55
amiraseman 15:c6f7c4768cf2 56
amiraseman 15:c6f7c4768cf2 57
amiraseman 15:c6f7c4768cf2 58 float arrayT[83] ; // An array to store the values of temperature to draw graphs
amiraseman 15:c6f7c4768cf2 59 float arrayP[83] ; // An array to store the values of pressure to draw graphs
amiraseman 6:03f12eda070d 60
amiraseman 6:03f12eda070d 61
amiraseman 0:d78ac68077c6 62
amiraseman 3:8a559b949470 63 char rxString[16]; //buffer to store recieved string from serial
amiraseman 0:d78ac68077c6 64 char bufferTime[14]; // buffer to store time
amiraseman 0:d78ac68077c6 65 char bufferDate[14]; //buffer to store date
amiraseman 4:783276521952 66 char bufferT[14]; //buffer to store temperature
amiraseman 4:783276521952 67 char bufferP[14]; //buffer to store pressure, each character is 6 pixels wide, screen is 84 pixels (84/6 = 14)
amiraseman 0:d78ac68077c6 68 // so can display a string of a maximum 14 characters in length
amiraseman 0:d78ac68077c6 69 // or create formatted strings - ensure they aren't more than 14 characters long
amiraseman 12:d4011389defe 70
amiraseman 12:d4011389defe 71
amiraseman 14:f3eb0fb6ecd5 72
amiraseman 9:d1691d971f63 73 char buffer0[14];
amiraseman 9:d1691d971f63 74 char buffer1[14];
amiraseman 9:d1691d971f63 75 char buffer2[14];
amiraseman 9:d1691d971f63 76 char buffer3[14];
amiraseman 9:d1691d971f63 77 char buffer4[14];
amiraseman 9:d1691d971f63 78 char buffer5[14];
amiraseman 9:d1691d971f63 79
amiraseman 9:d1691d971f63 80
amiraseman 17:99161153081d 81 int state=0; // used to navigate through the finite machines
amiraseman 10:7c976b5a5e25 82 int stateplus1 ;
amiraseman 10:7c976b5a5e25 83 int stateplus2 ;
amiraseman 10:7c976b5a5e25 84 int stateminus1 ;
amiraseman 10:7c976b5a5e25 85 int stateminus2 ;
amiraseman 9:d1691d971f63 86
amiraseman 17:99161153081d 87 float frequency[]= {659,554,659,554,550,494,554,587,494,659,554,440};
amiraseman 17:99161153081d 88 //frequency array
amiraseman 17:99161153081d 89 float beat[]= {1,1,1,1,1,1,1,1,1,1,1,1};
amiraseman 17:99161153081d 90 //beat array
amiraseman 10:7c976b5a5e25 91
amiraseman 15:c6f7c4768cf2 92
amiraseman 15:c6f7c4768cf2 93 void savePower();
amiraseman 15:c6f7c4768cf2 94 void loggerData();
amiraseman 17:99161153081d 95 void calculateUNIXTime();
amiraseman 17:99161153081d 96 void alarmClockCheck();
amiraseman 15:c6f7c4768cf2 97
amiraseman 10:7c976b5a5e25 98 struct State {
amiraseman 9:d1691d971f63 99 int output;
amiraseman 12:d4011389defe 100 char title[14];
amiraseman 9:d1691d971f63 101 int nextState[2];
amiraseman 9:d1691d971f63 102 };
amiraseman 9:d1691d971f63 103
amiraseman 12:d4011389defe 104 typedef struct State STyp1; // for the start menu
amiraseman 9:d1691d971f63 105
amiraseman 9:d1691d971f63 106 STyp1 fsmA[5] = {
amiraseman 9:d1691d971f63 107 {0,"Live Data",{1,4}},
amiraseman 9:d1691d971f63 108 {1,"Saved Data",{2,0}},
amiraseman 9:d1691d971f63 109 {2,"Forecast",{3,1}},
amiraseman 9:d1691d971f63 110 {3,"Alarms",{4,2}},
amiraseman 9:d1691d971f63 111 {4,"Settings",{0,3}},
amiraseman 9:d1691d971f63 112 };
amiraseman 10:7c976b5a5e25 113
amiraseman 12:d4011389defe 114 typedef struct State STyp2; // for the settings menu
amiraseman 9:d1691d971f63 115
amiraseman 9:d1691d971f63 116 STyp2 fsmB[5] = {
amiraseman 9:d1691d971f63 117 {0,"Date/Time",{1,4}},
amiraseman 9:d1691d971f63 118 {1,"Units",{2,0}},
amiraseman 13:213bf5887930 119 {2,"Alerts",{3,1}},
amiraseman 9:d1691d971f63 120 {3,"Power",{4,2}},
amiraseman 9:d1691d971f63 121 {4,"Logger",{0,3}},
amiraseman 9:d1691d971f63 122 };
amiraseman 9:d1691d971f63 123
amiraseman 12:d4011389defe 124 typedef struct State STyp3; // for the time/date settings
amiraseman 11:a78e01c9f054 125
amiraseman 11:a78e01c9f054 126 STyp3 fsmC[5] = {
amiraseman 11:a78e01c9f054 127 {12,"Hour:",{1,4}},
amiraseman 11:a78e01c9f054 128 {0,"Min:",{2,0}},
amiraseman 12:d4011389defe 129 {21,"Day:",{3,1}},
amiraseman 12:d4011389defe 130 {4,"Month:",{4,2}},
amiraseman 12:d4011389defe 131 {2015,"Year:",{0,3}},
amiraseman 11:a78e01c9f054 132 };
amiraseman 11:a78e01c9f054 133
amiraseman 11:a78e01c9f054 134
amiraseman 12:d4011389defe 135 typedef struct State STyp4; // for the units settings
amiraseman 12:d4011389defe 136
amiraseman 12:d4011389defe 137 STyp3 fsmD[4] = {
amiraseman 12:d4011389defe 138 {1,"C/mb",{1,3}},
amiraseman 12:d4011389defe 139 {2,"C/atm",{2,0}},
amiraseman 12:d4011389defe 140 {3,"F/mb",{3,1}},
amiraseman 12:d4011389defe 141 {4,"F/atm",{0,2}},
amiraseman 12:d4011389defe 142 };
amiraseman 12:d4011389defe 143
amiraseman 11:a78e01c9f054 144
amiraseman 13:213bf5887930 145 typedef struct State STyp5; // for the Power saver settings
amiraseman 13:213bf5887930 146
amiraseman 13:213bf5887930 147 STyp5 fsmE[2] = {
amiraseman 13:213bf5887930 148 {0,"Off",{1,0}},
amiraseman 13:213bf5887930 149 {60,"On",{0,1}},
amiraseman 13:213bf5887930 150 };
amiraseman 13:213bf5887930 151
amiraseman 13:213bf5887930 152
amiraseman 17:99161153081d 153 typedef struct State Stype6; // for the alarms menu
amiraseman 17:99161153081d 154
amiraseman 17:99161153081d 155 Stype6 fsmF[2] = {
amiraseman 17:99161153081d 156 {0,"Thresholds",{1,0}},
amiraseman 17:99161153081d 157 {1,"Alarm Clock", {0,1}},
amiraseman 17:99161153081d 158 };
amiraseman 17:99161153081d 159
amiraseman 17:99161153081d 160 typedef struct State Stype7; // yes or no
amiraseman 17:99161153081d 161
amiraseman 17:99161153081d 162 Stype7 fsmG[2] = {
amiraseman 17:99161153081d 163 {0,"Yes",{1,0}},
amiraseman 17:99161153081d 164 {1,"No", {0,1}},
amiraseman 17:99161153081d 165 };
amiraseman 17:99161153081d 166
amiraseman 11:a78e01c9f054 167
amiraseman 11:a78e01c9f054 168
amiraseman 0:d78ac68077c6 169
amiraseman 3:8a559b949470 170
amiraseman 1:e60b9f116d38 171 void button1Pressed() //ISR to subtract 1 from the value of choice when the first button is pressed
amiraseman 1:e60b9f116d38 172 {
amiraseman 10:7c976b5a5e25 173 state=fsmA[state].nextState[1];
amiraseman 13:213bf5887930 174 button1Flag=1;
amiraseman 1:e60b9f116d38 175 }
amiraseman 1:e60b9f116d38 176
amiraseman 1:e60b9f116d38 177
amiraseman 1:e60b9f116d38 178
amiraseman 1:e60b9f116d38 179 void button2Pressed() //ISR to add 1 to the value of the choice when the second button is pressed
amiraseman 1:e60b9f116d38 180 {
amiraseman 10:7c976b5a5e25 181 state=fsmA[state].nextState[0];
amiraseman 13:213bf5887930 182 button2Flag=1;
amiraseman 1:e60b9f116d38 183 }
amiraseman 0:d78ac68077c6 184
amiraseman 0:d78ac68077c6 185
amiraseman 2:1d7ef0f49b35 186
amiraseman 2:1d7ef0f49b35 187 void button3Pressed()
amiraseman 2:1d7ef0f49b35 188 {
amiraseman 2:1d7ef0f49b35 189 button3Flag=1;
amiraseman 2:1d7ef0f49b35 190 }
amiraseman 2:1d7ef0f49b35 191
amiraseman 2:1d7ef0f49b35 192
amiraseman 2:1d7ef0f49b35 193
amiraseman 2:1d7ef0f49b35 194 void button4Pressed()
amiraseman 2:1d7ef0f49b35 195 {
amiraseman 2:1d7ef0f49b35 196 button4Flag = 1 ;
amiraseman 2:1d7ef0f49b35 197 }
amiraseman 2:1d7ef0f49b35 198
amiraseman 2:1d7ef0f49b35 199
amiraseman 2:1d7ef0f49b35 200
amiraseman 2:1d7ef0f49b35 201
amiraseman 8:8b810c29eb7b 202 void timerExpired() // ISR which sets the timer flag (flag used to display the buffers on LCD)
amiraseman 8:8b810c29eb7b 203 {
amiraseman 17:99161153081d 204 yellowLED = 0;
amiraseman 8:8b810c29eb7b 205 timerFlag=1;
amiraseman 17:99161153081d 206
amiraseman 8:8b810c29eb7b 207 }
amiraseman 8:8b810c29eb7b 208
amiraseman 8:8b810c29eb7b 209
amiraseman 8:8b810c29eb7b 210
amiraseman 8:8b810c29eb7b 211 void dataLoggerTimerExpired ()
amiraseman 8:8b810c29eb7b 212 {
amiraseman 17:99161153081d 213 yellowLED = 0;
amiraseman 8:8b810c29eb7b 214 dataLoggerFlag = 1 ;
amiraseman 8:8b810c29eb7b 215
amiraseman 8:8b810c29eb7b 216 }
amiraseman 8:8b810c29eb7b 217
amiraseman 8:8b810c29eb7b 218
amiraseman 8:8b810c29eb7b 219
amiraseman 0:d78ac68077c6 220
amiraseman 3:8a559b949470 221 void updateTime()
amiraseman 0:d78ac68077c6 222 {
amiraseman 4:783276521952 223 time_t seconds = time(NULL); // get current time
amiraseman 0:d78ac68077c6 224 // format time into a string (time and date)
amiraseman 17:99161153081d 225 currentTime = seconds ; // sets the current time to an integer for alarm clock check
amiraseman 17:99161153081d 226 if (currentTime == UNIXdate ) { // if the current time is equal to the time set by the alarm
amiraseman 17:99161153081d 227 serial.printf("Alarm clock activated\n");
amiraseman 17:99161153081d 228 alarmClockCheck();
amiraseman 17:99161153081d 229 }
amiraseman 17:99161153081d 230 serial.printf("current time :%i \n",currentTime);
amiraseman 17:99161153081d 231 serial.printf("Unix date :%i \n",UNIXdate);
amiraseman 4:783276521952 232 strftime(bufferTime, 14 , "%I:%M", localtime(&seconds));
amiraseman 4:783276521952 233 strftime(bufferDate, 14 , "%d/%m/%y", localtime(&seconds));
amiraseman 4:783276521952 234
amiraseman 0:d78ac68077c6 235 }
amiraseman 0:d78ac68077c6 236
amiraseman 9:d1691d971f63 237 void display()
amiraseman 9:d1691d971f63 238 {
amiraseman 9:d1691d971f63 239 lcd.clear();
amiraseman 11:a78e01c9f054 240 lcd.printString(buffer0,0,0);
amiraseman 9:d1691d971f63 241 lcd.printString(buffer1,0,1);
amiraseman 12:d4011389defe 242 lcd.printString(buffer2,0,2);
amiraseman 12:d4011389defe 243 lcd.printString(buffer3,0,3);
amiraseman 12:d4011389defe 244 lcd.printString(buffer4,0,4);
amiraseman 9:d1691d971f63 245 lcd.printString(buffer5,0,5);
amiraseman 17:99161153081d 246 wait(0.1);
amiraseman 0:d78ac68077c6 247
amiraseman 9:d1691d971f63 248 }
amiraseman 0:d78ac68077c6 249
amiraseman 0:d78ac68077c6 250
amiraseman 0:d78ac68077c6 251
amiraseman 1:e60b9f116d38 252 void readData() //Imports the data and saves them to the bufferss
amiraseman 0:d78ac68077c6 253 {
amiraseman 0:d78ac68077c6 254
amiraseman 0:d78ac68077c6 255 Measurement measurement; // measurement structure declared in BMP180 class
amiraseman 0:d78ac68077c6 256
amiraseman 0:d78ac68077c6 257 // read values (T in Celsius and P in mb) and print over serial port
amiraseman 0:d78ac68077c6 258 measurement = bmp180.readValues();
amiraseman 0:d78ac68077c6 259 // serial.printf("T = %.2f C P = %.2f mb\n",measurement.temperature,measurement.pressure);
amiraseman 0:d78ac68077c6 260
amiraseman 6:03f12eda070d 261
amiraseman 6:03f12eda070d 262 if (unitFlag==1 || unitFlag==2 ) {
amiraseman 15:c6f7c4768cf2 263
amiraseman 15:c6f7c4768cf2 264 temperature = measurement.temperature;
amiraseman 15:c6f7c4768cf2 265 int length = sprintf(bufferT,"T = %0.1d C",temperature); // print formatted data to buffer
amiraseman 6:03f12eda070d 266 // it is important the format specifier ensures the length will fit in the buffer
amiraseman 5:6952998ab446 267 }
amiraseman 6:03f12eda070d 268 if (unitFlag==3 || unitFlag==4 ) {
amiraseman 15:c6f7c4768cf2 269 temperature =( measurement.temperature*(9/5))+32;
amiraseman 15:c6f7c4768cf2 270 int length = sprintf(bufferT,"T = %0.1d F",temperature); // print formatted data to buffer
amiraseman 6:03f12eda070d 271 // it is important the format specifier ensures the length will fit in the buffer
amiraseman 5:6952998ab446 272 }
amiraseman 0:d78ac68077c6 273
amiraseman 15:c6f7c4768cf2 274
amiraseman 6:03f12eda070d 275
amiraseman 6:03f12eda070d 276
amiraseman 6:03f12eda070d 277 if (unitFlag==1 || unitFlag==3 ) {
amiraseman 15:c6f7c4768cf2 278 pressure = measurement.pressure; // same idea with float
amiraseman 15:c6f7c4768cf2 279 int length = sprintf(bufferP,"P = %.2f mb",pressure); // print formatted data to buffer
amiraseman 6:03f12eda070d 280 // it is important the format specifier ensures the length will fit in the buffer
amiraseman 5:6952998ab446 281 }
amiraseman 6:03f12eda070d 282 if (unitFlag==2 || unitFlag==4 ) {
amiraseman 15:c6f7c4768cf2 283 pressure = measurement.pressure*0.0009869; // same idea with floats
amiraseman 15:c6f7c4768cf2 284 int length = sprintf(bufferP,"P = %.2f atm",pressure); // print formatted data to buffer
amiraseman 6:03f12eda070d 285 // it is important the format specifier ensures the length will fit in the buffer
amiraseman 5:6952998ab446 286 }
amiraseman 0:d78ac68077c6 287
amiraseman 8:8b810c29eb7b 288 }
amiraseman 0:d78ac68077c6 289
amiraseman 0:d78ac68077c6 290
amiraseman 15:c6f7c4768cf2 291 void wakeUp () //Turns the LCD on after the mbed is interrupted
amiraseman 15:c6f7c4768cf2 292 {
amiraseman 15:c6f7c4768cf2 293
amiraseman 15:c6f7c4768cf2 294
amiraseman 15:c6f7c4768cf2 295 if (lcdPowerFlag == 0) {// if the LCD is powered off
amiraseman 15:c6f7c4768cf2 296 serial.printf("lcd is off\n");
amiraseman 15:c6f7c4768cf2 297
amiraseman 15:c6f7c4768cf2 298 if (button1Flag || button2Flag || button3Flag || button4Flag) { // if any of the buttons are pressed
amiraseman 15:c6f7c4768cf2 299
amiraseman 15:c6f7c4768cf2 300 serial.printf("one of the buttons are pressed to turn on the lcd\n");
amiraseman 15:c6f7c4768cf2 301 lcdPowerFlag = 1 ; // sets the status of the lcd to powered on
amiraseman 15:c6f7c4768cf2 302 serial.printf("lcd is on\n");
amiraseman 15:c6f7c4768cf2 303 lcd.init(); // turns the LCD on
amiraseman 15:c6f7c4768cf2 304 powerSaverTimeout.attach(&savePower, powerSaverTime); // setup a timeiut to call the savePower function
amiraseman 15:c6f7c4768cf2 305 button1Flag = 0 ;
amiraseman 15:c6f7c4768cf2 306 button2Flag = 0 ;
amiraseman 15:c6f7c4768cf2 307 button3Flag = 0 ;
amiraseman 15:c6f7c4768cf2 308 button4Flag = 0 ;
amiraseman 15:c6f7c4768cf2 309
amiraseman 15:c6f7c4768cf2 310 }
amiraseman 15:c6f7c4768cf2 311 }
amiraseman 15:c6f7c4768cf2 312
amiraseman 15:c6f7c4768cf2 313 }
amiraseman 0:d78ac68077c6 314
amiraseman 1:e60b9f116d38 315
amiraseman 1:e60b9f116d38 316
amiraseman 6:03f12eda070d 317
amiraseman 6:03f12eda070d 318
amiraseman 6:03f12eda070d 319 void savePower() // turns off the LCD to save power
amiraseman 6:03f12eda070d 320 {
amiraseman 13:213bf5887930 321 serial.printf("starts saving power\n");
amiraseman 6:03f12eda070d 322 lcd.turnOff () ; //turns off the lcd
amiraseman 13:213bf5887930 323 lcdPowerFlag = 0 ; // A flag is set to indicate the state of the LCD (is switched off)
amiraseman 13:213bf5887930 324 serial.printf("LCD is off\n");
amiraseman 13:213bf5887930 325
amiraseman 6:03f12eda070d 326 }
amiraseman 6:03f12eda070d 327
amiraseman 6:03f12eda070d 328
amiraseman 6:03f12eda070d 329
amiraseman 6:03f12eda070d 330
amiraseman 6:03f12eda070d 331
amiraseman 6:03f12eda070d 332
amiraseman 7:328dc986484f 333
amiraseman 7:328dc986484f 334 void powerSaverCheck() // checks if the powersaverFlag is set
amiraseman 7:328dc986484f 335 {
amiraseman 7:328dc986484f 336
amiraseman 13:213bf5887930 337 if (powerSaverFlag) {
amiraseman 7:328dc986484f 338
amiraseman 13:213bf5887930 339 serial.printf("Timeout attached\n");
amiraseman 7:328dc986484f 340 powerSaverTimeout.attach(&savePower, powerSaverTime); // setup a timeiut to call the savePower function
amiraseman 7:328dc986484f 341
amiraseman 7:328dc986484f 342 }
amiraseman 7:328dc986484f 343
amiraseman 7:328dc986484f 344 else {
amiraseman 13:213bf5887930 345 serial.printf("lcd is on\n");
amiraseman 7:328dc986484f 346 powerSaverTimeout.detach();
amiraseman 13:213bf5887930 347 serial.printf("Timeout detached\n");
amiraseman 7:328dc986484f 348
amiraseman 7:328dc986484f 349 }
amiraseman 7:328dc986484f 350 }
amiraseman 7:328dc986484f 351
amiraseman 7:328dc986484f 352
amiraseman 7:328dc986484f 353
amiraseman 6:03f12eda070d 354
amiraseman 12:d4011389defe 355 void liveData() //
amiraseman 7:328dc986484f 356 {
amiraseman 13:213bf5887930 357 powerSaverCheck();
amiraseman 12:d4011389defe 358 while (1) {
amiraseman 15:c6f7c4768cf2 359 updateTime();
amiraseman 12:d4011389defe 360 wakeUp();
amiraseman 17:99161153081d 361 loggerData();
amiraseman 12:d4011389defe 362 if (timerFlag) {
amiraseman 17:99161153081d 363
amiraseman 17:99161153081d 364 yellowLED = 1;
amiraseman 12:d4011389defe 365 timerFlag=0;
amiraseman 7:328dc986484f 366 readData();
amiraseman 12:d4011389defe 367 strncpy(buffer1, bufferTime, 14);
amiraseman 12:d4011389defe 368 strncpy(buffer2, bufferDate, 14);
amiraseman 12:d4011389defe 369 strncpy(buffer3, bufferT, 14);
amiraseman 12:d4011389defe 370 strncpy(buffer4, bufferP, 14);
amiraseman 12:d4011389defe 371 int dispaly = sprintf (buffer5, "");//convert integer to buffer str
amiraseman 12:d4011389defe 372 int dispaly1 = sprintf (buffer0, "");//convert integer to buffer str
amiraseman 12:d4011389defe 373 display();
amiraseman 12:d4011389defe 374 }
amiraseman 17:99161153081d 375 yellowLED = 0;
amiraseman 12:d4011389defe 376 if (button3Flag) {
amiraseman 12:d4011389defe 377 button3Flag = 0;
amiraseman 12:d4011389defe 378 timer.detach();
amiraseman 12:d4011389defe 379 break;
amiraseman 7:328dc986484f 380 }
amiraseman 7:328dc986484f 381 }
amiraseman 7:328dc986484f 382 }
amiraseman 7:328dc986484f 383
amiraseman 7:328dc986484f 384
amiraseman 8:8b810c29eb7b 385
amiraseman 15:c6f7c4768cf2 386 void loggerData() // gets the temp and pressure data and stores to suitable arrays (the arrays are used to plot the desired graphs)
amiraseman 8:8b810c29eb7b 387 {
amiraseman 15:c6f7c4768cf2 388 if(dataLoggerFlag ==1) {
amiraseman 17:99161153081d 389 int k ;
amiraseman 17:99161153081d 390 int sumTemperature = 0;
amiraseman 17:99161153081d 391 int sumPressure = 0;
amiraseman 17:99161153081d 392 minTemperature = arrayT[0]; // sets the min to the first value in the array
amiraseman 17:99161153081d 393 minPressure = arrayP[0];
amiraseman 17:99161153081d 394 maxTemperature = arrayT[0];
amiraseman 17:99161153081d 395 maxPressure = arrayP[0];
amiraseman 17:99161153081d 396 yellowLED = 1;
amiraseman 17:99161153081d 397 readData();
amiraseman 8:8b810c29eb7b 398
amiraseman 15:c6f7c4768cf2 399 dataLoggerFlag=0;
amiraseman 8:8b810c29eb7b 400 //write the data to the arrays (arrays used to plot graphs)
amiraseman 8:8b810c29eb7b 401 //read the data from sensor
amiraseman 15:c6f7c4768cf2 402
amiraseman 8:8b810c29eb7b 403 //Store the values in the array
amiraseman 15:c6f7c4768cf2 404 arrayT[i] = temperature;
amiraseman 15:c6f7c4768cf2 405 arrayP[i] = pressure/25 ;
amiraseman 15:c6f7c4768cf2 406
amiraseman 8:8b810c29eb7b 407
amiraseman 8:8b810c29eb7b 408 // calculate the average value of the arrays and save them to an integer
amiraseman 8:8b810c29eb7b 409
amiraseman 15:c6f7c4768cf2 410 for (k = 0 ; k<=i ; k++) { // loops through the arrays
amiraseman 15:c6f7c4768cf2 411
amiraseman 15:c6f7c4768cf2 412 sumTemperature += arrayT[k]; // calculates the sum of the stored values
amiraseman 15:c6f7c4768cf2 413 averageTemperature = sumTemperature/(k+1) ; //calculates the average value
amiraseman 8:8b810c29eb7b 414
amiraseman 15:c6f7c4768cf2 415 sumPressure += arrayP[k]; // calculates the sum of the stored values
amiraseman 15:c6f7c4768cf2 416 averagePressure = sumPressure/(k+1) ; //calculates the average value
amiraseman 15:c6f7c4768cf2 417
amiraseman 15:c6f7c4768cf2 418 if(arrayT[k]>maxTemperature) { // checks if any of the values in the array is bigger than the fist value
amiraseman 15:c6f7c4768cf2 419 maxTemperature=arrayT[k]; // if any greater values, sets the max value to that
amiraseman 8:8b810c29eb7b 420 }
amiraseman 15:c6f7c4768cf2 421 if(arrayT[k]<minTemperature) { // finds the smallest value of the array
amiraseman 15:c6f7c4768cf2 422 minTemperature=arrayT[k];
amiraseman 8:8b810c29eb7b 423 }
amiraseman 15:c6f7c4768cf2 424 if(arrayP[k]>maxPressure) { // checks if any of the values in the array is bigger than the fist value
amiraseman 15:c6f7c4768cf2 425 maxPressure=arrayP[k]; // if any greater values, sets the max value to that
amiraseman 8:8b810c29eb7b 426 }
amiraseman 15:c6f7c4768cf2 427 if(arrayP[k]<maxPressure) {
amiraseman 15:c6f7c4768cf2 428 minPressure=arrayP[k];
amiraseman 8:8b810c29eb7b 429 }
amiraseman 8:8b810c29eb7b 430
amiraseman 8:8b810c29eb7b 431 }
amiraseman 15:c6f7c4768cf2 432 i++; // moves to the next cell in the array
amiraseman 8:8b810c29eb7b 433 if (i>83) {
amiraseman 8:8b810c29eb7b 434 lcd.clear();
amiraseman 8:8b810c29eb7b 435 i=0;
amiraseman 8:8b810c29eb7b 436 }
amiraseman 8:8b810c29eb7b 437 }
amiraseman 17:99161153081d 438 yellowLED = 0;
amiraseman 8:8b810c29eb7b 439 }
amiraseman 8:8b810c29eb7b 440
amiraseman 8:8b810c29eb7b 441
amiraseman 8:8b810c29eb7b 442
amiraseman 8:8b810c29eb7b 443
amiraseman 15:c6f7c4768cf2 444
amiraseman 8:8b810c29eb7b 445 void dataLogger() // shows a summery of data and the graphs
amiraseman 8:8b810c29eb7b 446 {
amiraseman 15:c6f7c4768cf2 447 int swipe = 1 ;
amiraseman 8:8b810c29eb7b 448 while (1) {
amiraseman 16:5ce95c8f4e89 449 wakeUp();
amiraseman 16:5ce95c8f4e89 450 updateTime();
amiraseman 15:c6f7c4768cf2 451 if (runLoggerFlag) {
amiraseman 15:c6f7c4768cf2 452
amiraseman 15:c6f7c4768cf2 453
amiraseman 15:c6f7c4768cf2 454 loggerData();
amiraseman 15:c6f7c4768cf2 455
amiraseman 15:c6f7c4768cf2 456 if (button4Flag) {
amiraseman 15:c6f7c4768cf2 457 button4Flag = 0 ;
amiraseman 15:c6f7c4768cf2 458 swipe ++;
amiraseman 15:c6f7c4768cf2 459 }
amiraseman 15:c6f7c4768cf2 460 if (swipe > 4) {
amiraseman 15:c6f7c4768cf2 461 swipe = 1;
amiraseman 15:c6f7c4768cf2 462 }
amiraseman 15:c6f7c4768cf2 463
amiraseman 15:c6f7c4768cf2 464 strncpy(buffer0, bufferTime, 14);
amiraseman 15:c6f7c4768cf2 465 int display5 = sprintf (buffer5, " Back Next");//convert integer to buffer str
amiraseman 8:8b810c29eb7b 466
amiraseman 15:c6f7c4768cf2 467 switch (swipe) {
amiraseman 15:c6f7c4768cf2 468 case 1: {
amiraseman 15:c6f7c4768cf2 469 int display1 = sprintf (buffer1, "Temperature");
amiraseman 15:c6f7c4768cf2 470 int display2 = sprintf (buffer2, "Min = %d", minTemperature);
amiraseman 15:c6f7c4768cf2 471 int display3 = sprintf (buffer3, "Max = %d", maxTemperature);
amiraseman 15:c6f7c4768cf2 472 int display4 = sprintf (buffer4, "Avg = %d", averageTemperature);
amiraseman 15:c6f7c4768cf2 473 display();
amiraseman 15:c6f7c4768cf2 474 break;
amiraseman 15:c6f7c4768cf2 475 }
amiraseman 15:c6f7c4768cf2 476 case 2 : {
amiraseman 15:c6f7c4768cf2 477 lcd.clear();
amiraseman 15:c6f7c4768cf2 478 lcd.printString(" Temperature",0,0);
amiraseman 15:c6f7c4768cf2 479 lcd.plotArray(arrayT);
amiraseman 15:c6f7c4768cf2 480 break;
amiraseman 15:c6f7c4768cf2 481 }
amiraseman 15:c6f7c4768cf2 482 case 3 : {
amiraseman 15:c6f7c4768cf2 483 int display11 = sprintf (buffer1, "Pressure");
amiraseman 15:c6f7c4768cf2 484 int display22 = sprintf (buffer2, "Min = %d", minPressure);
amiraseman 15:c6f7c4768cf2 485 int display33 = sprintf (buffer3, "Max = %d", maxPressure);
amiraseman 15:c6f7c4768cf2 486 int display44 = sprintf (buffer4, "Avg = %d", averagePressure);
amiraseman 15:c6f7c4768cf2 487 display();
amiraseman 15:c6f7c4768cf2 488 break;
amiraseman 15:c6f7c4768cf2 489 }
amiraseman 15:c6f7c4768cf2 490 case 4 : {
amiraseman 15:c6f7c4768cf2 491 lcd.clear();
amiraseman 15:c6f7c4768cf2 492 lcd.printString(" Pressure",0,0);
amiraseman 15:c6f7c4768cf2 493 lcd.plotArray(arrayP);
amiraseman 15:c6f7c4768cf2 494 break;
amiraseman 15:c6f7c4768cf2 495 }
amiraseman 15:c6f7c4768cf2 496 default :
amiraseman 15:c6f7c4768cf2 497 break;
amiraseman 15:c6f7c4768cf2 498 }
amiraseman 15:c6f7c4768cf2 499 } else {
amiraseman 15:c6f7c4768cf2 500 lcd.clear();
amiraseman 15:c6f7c4768cf2 501 lcd.printString(" To Turn On",0,1);
amiraseman 15:c6f7c4768cf2 502 lcd.printString(" Go To",0,2);
amiraseman 15:c6f7c4768cf2 503 lcd.printString(" Settings",0,3);
amiraseman 15:c6f7c4768cf2 504 lcd.printString ("Back",0,5);
amiraseman 15:c6f7c4768cf2 505
amiraseman 8:8b810c29eb7b 506 }
amiraseman 8:8b810c29eb7b 507
amiraseman 15:c6f7c4768cf2 508 if (button3Flag) {
amiraseman 15:c6f7c4768cf2 509 button3Flag=0;
amiraseman 15:c6f7c4768cf2 510 break;
amiraseman 8:8b810c29eb7b 511 }
amiraseman 8:8b810c29eb7b 512 }
amiraseman 8:8b810c29eb7b 513 }
amiraseman 8:8b810c29eb7b 514
amiraseman 17:99161153081d 515 void alarmClockCheck() //checks if the alarmClockFlag is set
amiraseman 17:99161153081d 516 {
amiraseman 17:99161153081d 517 // if (alarmClockFlag ==1) {
amiraseman 17:99161153081d 518 serial.printf("Alarm clock flag is set\n");
amiraseman 17:99161153081d 519 alarmClockFlag =0 ;
amiraseman 17:99161153081d 520 while (1) {
amiraseman 17:99161153081d 521 int display0 = sprintf (buffer0, "");
amiraseman 17:99161153081d 522 int display1 = sprintf (buffer1, "Alarm !");
amiraseman 17:99161153081d 523 strncpy(buffer2, bufferTime, 14);
amiraseman 17:99161153081d 524 int display2 = sprintf (buffer3, "");
amiraseman 17:99161153081d 525 int display4 = sprintf (buffer4, "");
amiraseman 17:99161153081d 526 int display5 = sprintf (buffer5, "Stop");
amiraseman 17:99161153081d 527 display();
amiraseman 17:99161153081d 528 for (int i=0; i<=11; i++) {
amiraseman 17:99161153081d 529 buzzer.period(1/(frequency[i])); // set PWM period
amiraseman 17:99161153081d 530 buzzer=0.5; // set duty cycle
amiraseman 17:99161153081d 531 wait(0.5*beat[i]); // hold for beat period
amiraseman 17:99161153081d 532 if (button3Flag) {
amiraseman 17:99161153081d 533 buzzer = 0 ;
amiraseman 17:99161153081d 534 break;
amiraseman 17:99161153081d 535 }
amiraseman 17:99161153081d 536 }
amiraseman 17:99161153081d 537 if (button3Flag) {
amiraseman 17:99161153081d 538 button3Flag=0;
amiraseman 17:99161153081d 539 break;
amiraseman 17:99161153081d 540 }
amiraseman 17:99161153081d 541
amiraseman 17:99161153081d 542 }
amiraseman 17:99161153081d 543 // }
amiraseman 17:99161153081d 544 }
amiraseman 17:99161153081d 545
amiraseman 17:99161153081d 546
amiraseman 17:99161153081d 547
amiraseman 17:99161153081d 548
amiraseman 17:99161153081d 549
amiraseman 17:99161153081d 550 void alarmClock ()
amiraseman 17:99161153081d 551 {
amiraseman 17:99161153081d 552 powerSaverCheck();
amiraseman 17:99161153081d 553 state = 0;
amiraseman 17:99161153081d 554 while (1) {
amiraseman 17:99161153081d 555
amiraseman 17:99161153081d 556 wakeUp();
amiraseman 17:99161153081d 557 updateTime();
amiraseman 17:99161153081d 558 loggerData();
amiraseman 17:99161153081d 559 stateminus1=fsmC[state].nextState[0];
amiraseman 17:99161153081d 560 stateminus2=fsmC[stateminus1].nextState[0];
amiraseman 17:99161153081d 561 stateplus1=fsmC[state].nextState[1];
amiraseman 17:99161153081d 562 stateplus2=fsmC[stateplus1].nextState[1];
amiraseman 17:99161153081d 563
amiraseman 17:99161153081d 564
amiraseman 17:99161153081d 565
amiraseman 17:99161153081d 566
amiraseman 17:99161153081d 567 int display0 = sprintf (buffer0, " Back Save");//convert integer to buffer str
amiraseman 17:99161153081d 568 int display1 = sprintf (buffer1, "%s %d", fsmC[stateminus2].title,fsmC[stateminus2].output);//convert integer to buffer str
amiraseman 17:99161153081d 569 int display2 = sprintf (buffer2, "%s %d", fsmC[stateminus1].title,fsmC[stateminus1].output);//convert integer to buffer str
amiraseman 17:99161153081d 570 int display3 = sprintf (buffer3, ">>%s %d", fsmC[state].title,fsmC[state].output);//convert integer to buffer str
amiraseman 17:99161153081d 571 int display4 = sprintf (buffer4, "%s %d", fsmC[stateplus1].title,fsmC[stateplus1].output);//convert integer to buffer str
amiraseman 17:99161153081d 572 int display5 = sprintf (buffer5, "%s %d", fsmC[stateplus2].title,fsmC[stateplus2].output);//convert integer to buffer str
amiraseman 17:99161153081d 573
amiraseman 17:99161153081d 574
amiraseman 17:99161153081d 575
amiraseman 17:99161153081d 576 display();
amiraseman 17:99161153081d 577
amiraseman 17:99161153081d 578
amiraseman 17:99161153081d 579
amiraseman 17:99161153081d 580 if (button4Flag) {
amiraseman 17:99161153081d 581 button4Flag= 0;
amiraseman 17:99161153081d 582 fsmC[state].output ++;
amiraseman 17:99161153081d 583 calculateUNIXTime();
amiraseman 17:99161153081d 584 }
amiraseman 17:99161153081d 585
amiraseman 17:99161153081d 586
amiraseman 17:99161153081d 587 //checks the limits of the values
amiraseman 17:99161153081d 588 if (fsmC[0].output >23) { //hour
amiraseman 17:99161153081d 589 fsmC[0].output = 0 ;
amiraseman 17:99161153081d 590 }
amiraseman 17:99161153081d 591 if (fsmC[1].output>59) { // minute
amiraseman 17:99161153081d 592 fsmC[1].output = 0 ;
amiraseman 17:99161153081d 593 }
amiraseman 17:99161153081d 594 if (fsmC[3].output>11) { //month
amiraseman 17:99161153081d 595 fsmC[3].output = 0 ;
amiraseman 17:99161153081d 596 }
amiraseman 17:99161153081d 597 if (fsmC[2].output>31) { //day
amiraseman 17:99161153081d 598 fsmC[2].output = 1 ;
amiraseman 17:99161153081d 599 }
amiraseman 17:99161153081d 600 if (fsmC[4].output>2030) { //year
amiraseman 17:99161153081d 601 fsmC[4].output = 2015 ;
amiraseman 17:99161153081d 602 }
amiraseman 17:99161153081d 603
amiraseman 17:99161153081d 604
amiraseman 17:99161153081d 605
amiraseman 17:99161153081d 606 if (button3Flag) {
amiraseman 17:99161153081d 607 button3Flag=0;
amiraseman 17:99161153081d 608 while (1) {
amiraseman 17:99161153081d 609 int display0 = sprintf (buffer0, "");
amiraseman 17:99161153081d 610 int display1 = sprintf (buffer1, "");
amiraseman 17:99161153081d 611 int display2 = sprintf (buffer2, "Set Alarm?");
amiraseman 17:99161153081d 612 int display3 = sprintf (buffer3, ">>%s", fsmG[state].title);
amiraseman 17:99161153081d 613 int display4 = sprintf (buffer4, "");
amiraseman 17:99161153081d 614 int display5 = sprintf (buffer5, "");
amiraseman 17:99161153081d 615 display();
amiraseman 17:99161153081d 616 if (state>1) {
amiraseman 17:99161153081d 617 state = 0;
amiraseman 17:99161153081d 618 }
amiraseman 17:99161153081d 619 if (state<0) {
amiraseman 17:99161153081d 620 state = 1;
amiraseman 17:99161153081d 621 }
amiraseman 17:99161153081d 622 if (button3Flag) {
amiraseman 17:99161153081d 623 button3Flag=0;
amiraseman 17:99161153081d 624 alarmClockFlag = fsmG[state].output ;
amiraseman 17:99161153081d 625
amiraseman 17:99161153081d 626 goto exit;
amiraseman 17:99161153081d 627 }
amiraseman 17:99161153081d 628 }
amiraseman 17:99161153081d 629 }
amiraseman 17:99161153081d 630 }
amiraseman 17:99161153081d 631 exit:
amiraseman 17:99161153081d 632 return;
amiraseman 17:99161153081d 633 }
amiraseman 17:99161153081d 634
amiraseman 17:99161153081d 635
amiraseman 17:99161153081d 636
amiraseman 17:99161153081d 637
amiraseman 17:99161153081d 638
amiraseman 17:99161153081d 639 void alarmsMenu ()
amiraseman 17:99161153081d 640 {
amiraseman 17:99161153081d 641 state = 0 ;
amiraseman 17:99161153081d 642 powerSaverCheck();
amiraseman 17:99161153081d 643 while (1) {
amiraseman 17:99161153081d 644 wakeUp();
amiraseman 17:99161153081d 645 updateTime();
amiraseman 17:99161153081d 646 loggerData();
amiraseman 17:99161153081d 647 int display0 = sprintf (buffer0, " Back Next");
amiraseman 17:99161153081d 648 int display1 = sprintf (buffer1, "");
amiraseman 17:99161153081d 649 int display2 = sprintf (buffer2, "");
amiraseman 17:99161153081d 650 int display3 = sprintf (buffer3, ">>%s", fsmF[state].title);
amiraseman 17:99161153081d 651 int display4 = sprintf (buffer4, "");
amiraseman 17:99161153081d 652 int display5 = sprintf (buffer5, "");
amiraseman 17:99161153081d 653
amiraseman 17:99161153081d 654 display();
amiraseman 17:99161153081d 655
amiraseman 17:99161153081d 656
amiraseman 17:99161153081d 657
amiraseman 17:99161153081d 658 if (state > 1) {
amiraseman 17:99161153081d 659 state = 0 ;
amiraseman 17:99161153081d 660 }
amiraseman 17:99161153081d 661 if (state < 0) {
amiraseman 17:99161153081d 662 state = 1 ;
amiraseman 17:99161153081d 663 }
amiraseman 17:99161153081d 664 if (button3Flag) {
amiraseman 17:99161153081d 665 button3Flag=0;
amiraseman 17:99161153081d 666 state = 0;
amiraseman 17:99161153081d 667 break;
amiraseman 17:99161153081d 668 }
amiraseman 17:99161153081d 669 if (button4Flag) {
amiraseman 17:99161153081d 670 if (state == 0) { // temp and pressure thresholds
amiraseman 17:99161153081d 671
amiraseman 17:99161153081d 672
amiraseman 17:99161153081d 673 }
amiraseman 17:99161153081d 674 if (state == 1) {// alarm clock
amiraseman 17:99161153081d 675
amiraseman 17:99161153081d 676 alarmClock();
amiraseman 17:99161153081d 677 }
amiraseman 17:99161153081d 678 }
amiraseman 17:99161153081d 679 }
amiraseman 17:99161153081d 680 }
amiraseman 17:99161153081d 681
amiraseman 17:99161153081d 682
amiraseman 17:99161153081d 683
amiraseman 15:c6f7c4768cf2 684
amiraseman 7:328dc986484f 685 void dataLoggerSetting()
amiraseman 7:328dc986484f 686 {
amiraseman 15:c6f7c4768cf2 687 state = runLoggerFlag ; //inits the state to the saved flag by the user in the past
amiraseman 13:213bf5887930 688 powerSaverCheck();
amiraseman 13:213bf5887930 689 while (1) {
amiraseman 13:213bf5887930 690 wakeUp();
amiraseman 13:213bf5887930 691 updateTime();
amiraseman 15:c6f7c4768cf2 692 loggerData();
amiraseman 13:213bf5887930 693 int display0 = sprintf (buffer0, " Back Save");
amiraseman 14:f3eb0fb6ecd5 694 int display1 = sprintf (buffer1, "");
amiraseman 14:f3eb0fb6ecd5 695 int display2 = sprintf (buffer2, "Data Logger");
amiraseman 14:f3eb0fb6ecd5 696 int display3 = sprintf (buffer3, ">>%s", fsmE[state].title);
amiraseman 14:f3eb0fb6ecd5 697 if (state == 1) {
amiraseman 14:f3eb0fb6ecd5 698 int display4 = sprintf (buffer4, "%i mins", fsmE[state].output/60);
amiraseman 14:f3eb0fb6ecd5 699 } else { // if the power saver is off it dowsnt show the time
amiraseman 14:f3eb0fb6ecd5 700 int display4 = sprintf (buffer4, "");
amiraseman 13:213bf5887930 701 }
amiraseman 14:f3eb0fb6ecd5 702 int dispaly5 = sprintf (buffer5, "");
amiraseman 8:8b810c29eb7b 703
amiraseman 8:8b810c29eb7b 704
amiraseman 13:213bf5887930 705 display();
amiraseman 7:328dc986484f 706
amiraseman 13:213bf5887930 707
amiraseman 7:328dc986484f 708
amiraseman 15:c6f7c4768cf2 709 runLoggerFlag = state ; //sets the flag to the value of state (0 is off, 1 is on)
amiraseman 14:f3eb0fb6ecd5 710 dataLoggerTime = fsmE[state].output; //sets the timer to to value of output from the fsm
amiraseman 14:f3eb0fb6ecd5 711 serial.printf("data logger Time = %i \n dataLoggerFlag = %i \n",dataLoggerTime , dataLoggerFlag);
amiraseman 7:328dc986484f 712
amiraseman 14:f3eb0fb6ecd5 713 if (button4Flag) {
amiraseman 14:f3eb0fb6ecd5 714 button4Flag=0;
amiraseman 14:f3eb0fb6ecd5 715 fsmE[state].output += 60 ; //adds a minute to the timer when button 4 is pressed
amiraseman 14:f3eb0fb6ecd5 716 }
amiraseman 14:f3eb0fb6ecd5 717 if (fsmE[state].output > 1800) {
amiraseman 14:f3eb0fb6ecd5 718 fsmE[state].output = 60 ;
amiraseman 7:328dc986484f 719 }
amiraseman 7:328dc986484f 720
amiraseman 14:f3eb0fb6ecd5 721 if (state > 1) {
amiraseman 14:f3eb0fb6ecd5 722 state = 0 ;
amiraseman 14:f3eb0fb6ecd5 723 }
amiraseman 14:f3eb0fb6ecd5 724
amiraseman 7:328dc986484f 725 if (button3Flag) {
amiraseman 15:c6f7c4768cf2 726 if (state == 1) { // if the data logger is swiched on
amiraseman 15:c6f7c4768cf2 727 dataLoggerTimer.attach(&dataLoggerTimerExpired, dataLoggerTime); // set the timer
amiraseman 15:c6f7c4768cf2 728 }
amiraseman 15:c6f7c4768cf2 729 if (state == 0) { // if the data logger is swiched off
amiraseman 15:c6f7c4768cf2 730 dataLoggerTimer.detach(); // detach the timer
amiraseman 15:c6f7c4768cf2 731 }
amiraseman 15:c6f7c4768cf2 732 dataLoggerFlag = 1;
amiraseman 7:328dc986484f 733 button3Flag=0;
amiraseman 17:99161153081d 734 state = 0;
amiraseman 7:328dc986484f 735 break;
amiraseman 7:328dc986484f 736 }
amiraseman 14:f3eb0fb6ecd5 737 wait (0.1);
amiraseman 7:328dc986484f 738 }
amiraseman 7:328dc986484f 739
amiraseman 7:328dc986484f 740 }
amiraseman 6:03f12eda070d 741
amiraseman 6:03f12eda070d 742
amiraseman 6:03f12eda070d 743
amiraseman 6:03f12eda070d 744
amiraseman 6:03f12eda070d 745
amiraseman 6:03f12eda070d 746
amiraseman 6:03f12eda070d 747
amiraseman 6:03f12eda070d 748
amiraseman 6:03f12eda070d 749
amiraseman 6:03f12eda070d 750
amiraseman 6:03f12eda070d 751
amiraseman 6:03f12eda070d 752
amiraseman 6:03f12eda070d 753 void powerSaverSetting()
amiraseman 6:03f12eda070d 754 {
amiraseman 13:213bf5887930 755 state = powerSaverFlag ; //inits the state to the saved flag by the user in the past
amiraseman 13:213bf5887930 756 powerSaverCheck();
amiraseman 6:03f12eda070d 757 while (1) {
amiraseman 6:03f12eda070d 758 wakeUp();
amiraseman 13:213bf5887930 759 updateTime();
amiraseman 15:c6f7c4768cf2 760 loggerData();
amiraseman 13:213bf5887930 761 int display0 = sprintf (buffer0, " Back Save");
amiraseman 13:213bf5887930 762 int display1 = sprintf (buffer1, "");
amiraseman 13:213bf5887930 763 int display2 = sprintf (buffer2, "Power Saver");
amiraseman 13:213bf5887930 764 int display3 = sprintf (buffer3, ">>%s", fsmE[state].title);
amiraseman 13:213bf5887930 765 if (state == 1) {
amiraseman 13:213bf5887930 766 int display4 = sprintf (buffer4, "%i mins", fsmE[state].output/60);
amiraseman 13:213bf5887930 767 } else { // if the power saver is off it dowsnt show the time
amiraseman 13:213bf5887930 768 int display4 = sprintf (buffer4, "");
amiraseman 6:03f12eda070d 769 }
amiraseman 13:213bf5887930 770 int dispaly5 = sprintf (buffer5, "");
amiraseman 13:213bf5887930 771
amiraseman 13:213bf5887930 772
amiraseman 13:213bf5887930 773 display();
amiraseman 13:213bf5887930 774
amiraseman 6:03f12eda070d 775
amiraseman 6:03f12eda070d 776
amiraseman 13:213bf5887930 777 powerSaverFlag = state ; //sets the flag to the value of state (0 is off, 1 is on)
amiraseman 13:213bf5887930 778 powerSaverTime = fsmE[state].output; //sets the timer to to value of output from the fsm
amiraseman 13:213bf5887930 779 serial.printf("Power Saver Time = %i \n powerSaverFlag = %i \n",powerSaverTime , powerSaverFlag);
amiraseman 6:03f12eda070d 780
amiraseman 13:213bf5887930 781 if (button4Flag) {
amiraseman 13:213bf5887930 782 button4Flag=0;
amiraseman 13:213bf5887930 783 fsmE[state].output += 60 ; //adds a minute to the timer when button 4 is pressed
amiraseman 13:213bf5887930 784 }
amiraseman 13:213bf5887930 785 if (fsmE[state].output > 600) {
amiraseman 13:213bf5887930 786 fsmE[state].output = 60 ;
amiraseman 6:03f12eda070d 787 }
amiraseman 6:03f12eda070d 788
amiraseman 13:213bf5887930 789 if (state > 1) {
amiraseman 13:213bf5887930 790 state = 0 ;
amiraseman 13:213bf5887930 791 }
amiraseman 13:213bf5887930 792
amiraseman 6:03f12eda070d 793 if (button3Flag) {
amiraseman 6:03f12eda070d 794 button3Flag=0;
amiraseman 13:213bf5887930 795 powerSaverCheck();
amiraseman 17:99161153081d 796 state = 0;
amiraseman 6:03f12eda070d 797 break;
amiraseman 6:03f12eda070d 798 }
amiraseman 13:213bf5887930 799 wait (0.1);
amiraseman 6:03f12eda070d 800 }
amiraseman 6:03f12eda070d 801 }
amiraseman 6:03f12eda070d 802
amiraseman 6:03f12eda070d 803
amiraseman 6:03f12eda070d 804
amiraseman 6:03f12eda070d 805
amiraseman 6:03f12eda070d 806
amiraseman 6:03f12eda070d 807
amiraseman 6:03f12eda070d 808
amiraseman 6:03f12eda070d 809
amiraseman 4:783276521952 810 void calculateUNIXTime()
amiraseman 4:783276521952 811 {
amiraseman 4:783276521952 812 time_t rawtime;
amiraseman 4:783276521952 813 struct tm * timeinfo;
amiraseman 4:783276521952 814
amiraseman 17:99161153081d 815 // get current timeinfo
amiraseman 17:99161153081d 816 time ( &rawtime );
amiraseman 17:99161153081d 817 // convert to struct
amiraseman 4:783276521952 818 timeinfo = localtime ( &rawtime );
amiraseman 17:99161153081d 819 // now modify the timeinfo to the given date
amiraseman 12:d4011389defe 820 timeinfo->tm_year = (fsmC[4].output) - 1900;
amiraseman 12:d4011389defe 821 timeinfo->tm_mon = (fsmC[3].output) - 1; //months since January - [0,11]
amiraseman 12:d4011389defe 822 timeinfo->tm_mday = (fsmC[2].output) ; //day of the month - [1,31]
amiraseman 12:d4011389defe 823 timeinfo->tm_hour = (fsmC[0].output) ; //hours since midnight - [0,23]
amiraseman 12:d4011389defe 824 timeinfo->tm_min = (fsmC[1].output) ; //minutes after the hour - [0,59]
amiraseman 12:d4011389defe 825 timeinfo->tm_sec = 0 ; //seconds after the minute - [0,59]
amiraseman 4:783276521952 826
amiraseman 17:99161153081d 827 //call mktime to create unix time stamp from timeinfo struct
amiraseman 4:783276521952 828 UNIXdate = mktime ( timeinfo );
amiraseman 4:783276521952 829
amiraseman 4:783276521952 830 }
amiraseman 4:783276521952 831
amiraseman 5:6952998ab446 832
amiraseman 13:213bf5887930 833 void notificationSetting ()
amiraseman 4:783276521952 834 {
amiraseman 4:783276521952 835 while(1) {
amiraseman 6:03f12eda070d 836 wakeUp();
amiraseman 12:d4011389defe 837 powerSaverCheck();
amiraseman 17:99161153081d 838 loggerData();
amiraseman 5:6952998ab446 839
amiraseman 5:6952998ab446 840
amiraseman 5:6952998ab446 841 if (button4Flag) {
amiraseman 5:6952998ab446 842 button4Flag=0;
amiraseman 12:d4011389defe 843
amiraseman 5:6952998ab446 844 }
amiraseman 5:6952998ab446 845
amiraseman 4:783276521952 846 if (button3Flag) {
amiraseman 4:783276521952 847 button3Flag=0;
amiraseman 17:99161153081d 848 state = 0;
amiraseman 4:783276521952 849 break;
amiraseman 4:783276521952 850 }
amiraseman 4:783276521952 851 }
amiraseman 0:d78ac68077c6 852 }
amiraseman 0:d78ac68077c6 853
amiraseman 0:d78ac68077c6 854
amiraseman 2:1d7ef0f49b35 855
amiraseman 12:d4011389defe 856 void unitsSetting()
amiraseman 3:8a559b949470 857 {
amiraseman 12:d4011389defe 858 state = 0;
amiraseman 13:213bf5887930 859 powerSaverCheck();
amiraseman 11:a78e01c9f054 860 while (1) {
amiraseman 12:d4011389defe 861 wakeUp();
amiraseman 12:d4011389defe 862 updateTime();
amiraseman 17:99161153081d 863 loggerData();
amiraseman 12:d4011389defe 864 stateminus1=fsmD[state].nextState[0];
amiraseman 12:d4011389defe 865 stateminus2=fsmD[stateminus1].nextState[0];
amiraseman 12:d4011389defe 866 stateplus1=fsmD[state].nextState[1];
amiraseman 12:d4011389defe 867 stateplus2=fsmD[stateplus1].nextState[1];
amiraseman 12:d4011389defe 868
amiraseman 3:8a559b949470 869
amiraseman 4:783276521952 870
amiraseman 3:8a559b949470 871
amiraseman 12:d4011389defe 872 int display0 = sprintf (buffer0, " Back Save");//convert integer to buffer str
amiraseman 12:d4011389defe 873 int display1 = sprintf (buffer1, "%s", fsmD[stateminus2].title);//convert integer to buffer str
amiraseman 12:d4011389defe 874 int display2 = sprintf (buffer2, "%s", fsmD[stateminus1].title);//convert integer to buffer str
amiraseman 12:d4011389defe 875 int display3 = sprintf (buffer3, ">>%s", fsmD[state].title);//convert integer to buffer str
amiraseman 12:d4011389defe 876 int display4 = sprintf (buffer4, "%s", fsmD[stateplus1].title);//convert integer to buffer str
amiraseman 12:d4011389defe 877 int dispaly5 = sprintf (buffer5, "");//convert integer to buffer str
amiraseman 12:d4011389defe 878
amiraseman 12:d4011389defe 879
amiraseman 12:d4011389defe 880 unitFlag = fsmD[state].output;
amiraseman 12:d4011389defe 881
amiraseman 12:d4011389defe 882 display();
amiraseman 12:d4011389defe 883
amiraseman 12:d4011389defe 884 if (button3Flag) {
amiraseman 12:d4011389defe 885 button3Flag=0;
amiraseman 17:99161153081d 886 state = 0;
amiraseman 12:d4011389defe 887 break;
amiraseman 12:d4011389defe 888 }
amiraseman 12:d4011389defe 889
amiraseman 12:d4011389defe 890 wait (0.1);
amiraseman 12:d4011389defe 891 }
amiraseman 12:d4011389defe 892 }
amiraseman 12:d4011389defe 893
amiraseman 12:d4011389defe 894
amiraseman 12:d4011389defe 895
amiraseman 12:d4011389defe 896
amiraseman 12:d4011389defe 897
amiraseman 12:d4011389defe 898
amiraseman 12:d4011389defe 899
amiraseman 12:d4011389defe 900 void timeDateSetting()
amiraseman 12:d4011389defe 901 {
amiraseman 13:213bf5887930 902 powerSaverCheck();
amiraseman 12:d4011389defe 903 state = 0;
amiraseman 12:d4011389defe 904 while (1) {
amiraseman 11:a78e01c9f054 905 wakeUp();
amiraseman 11:a78e01c9f054 906 updateTime();
amiraseman 17:99161153081d 907 loggerData();
amiraseman 12:d4011389defe 908 stateminus1=fsmC[state].nextState[0];
amiraseman 12:d4011389defe 909 stateminus2=fsmC[stateminus1].nextState[0];
amiraseman 12:d4011389defe 910 stateplus1=fsmC[state].nextState[1];
amiraseman 12:d4011389defe 911 stateplus2=fsmC[stateplus1].nextState[1];
amiraseman 12:d4011389defe 912
amiraseman 12:d4011389defe 913
amiraseman 12:d4011389defe 914
amiraseman 12:d4011389defe 915
amiraseman 12:d4011389defe 916 int display0 = sprintf (buffer0, " Back Save");//convert integer to buffer str
amiraseman 12:d4011389defe 917 int display1 = sprintf (buffer1, "%s %d", fsmC[stateminus2].title,fsmC[stateminus2].output);//convert integer to buffer str
amiraseman 12:d4011389defe 918 int display2 = sprintf (buffer2, "%s %d", fsmC[stateminus1].title,fsmC[stateminus1].output);//convert integer to buffer str
amiraseman 12:d4011389defe 919 int display3 = sprintf (buffer3, ">>%s %d", fsmC[state].title,fsmC[state].output);//convert integer to buffer str
amiraseman 12:d4011389defe 920 int display4 = sprintf (buffer4, "%s %d", fsmC[stateplus1].title,fsmC[stateplus1].output);//convert integer to buffer str
amiraseman 12:d4011389defe 921 int display5 = sprintf (buffer5, "%s %d", fsmC[stateplus2].title,fsmC[stateplus2].output);//convert integer to buffer str
amiraseman 12:d4011389defe 922
amiraseman 12:d4011389defe 923
amiraseman 11:a78e01c9f054 924
amiraseman 11:a78e01c9f054 925 display();
amiraseman 3:8a559b949470 926
amiraseman 4:783276521952 927
amiraseman 11:a78e01c9f054 928
amiraseman 12:d4011389defe 929 if (button4Flag) {
amiraseman 12:d4011389defe 930 button4Flag= 0;
amiraseman 13:213bf5887930 931 fsmC[state].output ++;
amiraseman 12:d4011389defe 932 calculateUNIXTime();
amiraseman 12:d4011389defe 933 set_time(UNIXdate); // initialise time from the calculated UNIX time entered by the user
amiraseman 12:d4011389defe 934 }
amiraseman 11:a78e01c9f054 935
amiraseman 11:a78e01c9f054 936
amiraseman 12:d4011389defe 937 //checks the limits of the values
amiraseman 12:d4011389defe 938 if (fsmC[0].output >23) { //hour
amiraseman 12:d4011389defe 939 fsmC[0].output = 0 ;
amiraseman 12:d4011389defe 940 }
amiraseman 12:d4011389defe 941 if (fsmC[1].output>59) { // minute
amiraseman 12:d4011389defe 942 fsmC[1].output = 0 ;
amiraseman 12:d4011389defe 943 }
amiraseman 12:d4011389defe 944 if (fsmC[3].output>11) { //month
amiraseman 12:d4011389defe 945 fsmC[3].output = 0 ;
amiraseman 12:d4011389defe 946 }
amiraseman 12:d4011389defe 947 if (fsmC[2].output>31) { //day
amiraseman 12:d4011389defe 948 fsmC[2].output = 1 ;
amiraseman 12:d4011389defe 949 }
amiraseman 12:d4011389defe 950 if (fsmC[4].output>2030) { //year
amiraseman 12:d4011389defe 951 fsmC[4].output = 2015 ;
amiraseman 12:d4011389defe 952 }
amiraseman 11:a78e01c9f054 953
amiraseman 11:a78e01c9f054 954
amiraseman 12:d4011389defe 955
amiraseman 11:a78e01c9f054 956 if (button3Flag) {
amiraseman 11:a78e01c9f054 957 button3Flag=0;
amiraseman 17:99161153081d 958 state = 0;
amiraseman 11:a78e01c9f054 959 break;
amiraseman 11:a78e01c9f054 960 }
amiraseman 5:6952998ab446 961 wait (0.1);
amiraseman 3:8a559b949470 962 }
amiraseman 3:8a559b949470 963 }
amiraseman 3:8a559b949470 964
amiraseman 3:8a559b949470 965
amiraseman 3:8a559b949470 966
amiraseman 2:1d7ef0f49b35 967
amiraseman 2:1d7ef0f49b35 968 void settingsMenu()
amiraseman 2:1d7ef0f49b35 969 {
amiraseman 12:d4011389defe 970 state = 0;
amiraseman 13:213bf5887930 971 powerSaverCheck();
amiraseman 11:a78e01c9f054 972 while(1) {
amiraseman 12:d4011389defe 973
amiraseman 11:a78e01c9f054 974 stateminus1=fsmB[state].nextState[0];
amiraseman 11:a78e01c9f054 975 stateminus2=fsmB[stateminus1].nextState[0];
amiraseman 11:a78e01c9f054 976 stateplus1=fsmB[state].nextState[1];
amiraseman 11:a78e01c9f054 977 stateplus2=fsmB[stateplus1].nextState[1];
amiraseman 6:03f12eda070d 978
amiraseman 6:03f12eda070d 979
amiraseman 6:03f12eda070d 980 wakeUp();
amiraseman 3:8a559b949470 981 updateTime();
amiraseman 15:c6f7c4768cf2 982 loggerData();
amiraseman 11:a78e01c9f054 983 strncpy(buffer0, bufferTime, 14);
amiraseman 10:7c976b5a5e25 984 int dispaly = sprintf (buffer1, "%s", fsmB[stateminus2].title);//convert integer to buffer str
amiraseman 10:7c976b5a5e25 985 int dispaly1 = sprintf (buffer2, "%s", fsmB[stateminus1].title);//convert integer to buffer str
amiraseman 10:7c976b5a5e25 986 int dispaly2 = sprintf (buffer3, ">>%s", fsmB[state].title);//convert integer to buffer str
amiraseman 10:7c976b5a5e25 987 int dispaly3 = sprintf (buffer4, "%s", fsmB[stateplus1].title);//convert integer to buffer str
amiraseman 10:7c976b5a5e25 988 int dispaly4 = sprintf (buffer5, "%s", fsmB[stateplus2].title);//convert integer to buffer str
amiraseman 9:d1691d971f63 989
amiraseman 9:d1691d971f63 990 display();
amiraseman 9:d1691d971f63 991
amiraseman 9:d1691d971f63 992
amiraseman 10:7c976b5a5e25 993 switch (state) {
amiraseman 11:a78e01c9f054 994 case 0:
amiraseman 4:783276521952 995 if (button4Flag) {
amiraseman 4:783276521952 996 button4Flag=0;
amiraseman 4:783276521952 997 timeDateSetting();
amiraseman 4:783276521952 998 }
amiraseman 4:783276521952 999
amiraseman 4:783276521952 1000
amiraseman 2:1d7ef0f49b35 1001 break;
amiraseman 11:a78e01c9f054 1002 case 1:
amiraseman 9:d1691d971f63 1003
amiraseman 5:6952998ab446 1004
amiraseman 5:6952998ab446 1005 if (button4Flag) {
amiraseman 5:6952998ab446 1006 button4Flag=0;
amiraseman 5:6952998ab446 1007 unitsSetting();
amiraseman 5:6952998ab446 1008 }
amiraseman 5:6952998ab446 1009
amiraseman 2:1d7ef0f49b35 1010 break;
amiraseman 11:a78e01c9f054 1011 case 2:
amiraseman 9:d1691d971f63 1012
amiraseman 4:783276521952 1013 if (button4Flag) {
amiraseman 4:783276521952 1014 button4Flag = 0;
amiraseman 13:213bf5887930 1015 notificationSetting();
amiraseman 4:783276521952 1016 }
amiraseman 2:1d7ef0f49b35 1017 break;
amiraseman 11:a78e01c9f054 1018 case 3:
amiraseman 6:03f12eda070d 1019 if (button4Flag) {
amiraseman 6:03f12eda070d 1020 button4Flag = 0;
amiraseman 6:03f12eda070d 1021 powerSaverSetting();
amiraseman 6:03f12eda070d 1022 }
amiraseman 2:1d7ef0f49b35 1023 break;
amiraseman 11:a78e01c9f054 1024 case 4:
amiraseman 7:328dc986484f 1025 if (button4Flag) {
amiraseman 7:328dc986484f 1026 button4Flag = 0;
amiraseman 7:328dc986484f 1027 dataLoggerSetting();
amiraseman 7:328dc986484f 1028 }
amiraseman 2:1d7ef0f49b35 1029 break;
amiraseman 2:1d7ef0f49b35 1030 default:
amiraseman 2:1d7ef0f49b35 1031 break;
amiraseman 2:1d7ef0f49b35 1032 }
amiraseman 4:783276521952 1033 if (button3Flag) {
amiraseman 2:1d7ef0f49b35 1034 button3Flag=0;
amiraseman 17:99161153081d 1035 state = 0;
amiraseman 2:1d7ef0f49b35 1036 break;
amiraseman 4:783276521952 1037 }
amiraseman 5:6952998ab446 1038 wait (0.1);
amiraseman 2:1d7ef0f49b35 1039 }
amiraseman 2:1d7ef0f49b35 1040 }
amiraseman 2:1d7ef0f49b35 1041
amiraseman 2:1d7ef0f49b35 1042
amiraseman 5:6952998ab446 1043 void startMenu() //The menu displayed at the beginning
amiraseman 1:e60b9f116d38 1044 {
amiraseman 13:213bf5887930 1045 wakeUp();
amiraseman 9:d1691d971f63 1046
amiraseman 12:d4011389defe 1047 stateminus1=fsmA[state].nextState[1];
amiraseman 12:d4011389defe 1048 stateminus2=fsmA[stateminus1].nextState[1];
amiraseman 12:d4011389defe 1049 stateplus1=fsmA[state].nextState[0];
amiraseman 12:d4011389defe 1050 stateplus2=fsmA[stateplus1].nextState[0];
amiraseman 9:d1691d971f63 1051
amiraseman 8:8b810c29eb7b 1052
amiraseman 11:a78e01c9f054 1053 strncpy(buffer0, bufferTime, 14);
amiraseman 10:7c976b5a5e25 1054 int dispaly = sprintf (buffer1, "%s", fsmA[stateminus2].title);//convert integer to buffer str
amiraseman 10:7c976b5a5e25 1055 int dispaly1 = sprintf (buffer2, "%s", fsmA[stateminus1].title);//convert integer to buffer str
amiraseman 10:7c976b5a5e25 1056 int dispaly2 = sprintf (buffer3, ">>%s", fsmA[state].title);//convert integer to buffer str
amiraseman 10:7c976b5a5e25 1057 int dispaly3 = sprintf (buffer4, "%s", fsmA[stateplus1].title);//convert integer to buffer str
amiraseman 10:7c976b5a5e25 1058 int dispaly4 = sprintf (buffer5, "%s", fsmA[stateplus2].title);//convert integer to buffer str
amiraseman 1:e60b9f116d38 1059
amiraseman 9:d1691d971f63 1060
amiraseman 9:d1691d971f63 1061
amiraseman 10:7c976b5a5e25 1062 switch (state) {
amiraseman 9:d1691d971f63 1063 case 0:
amiraseman 4:783276521952 1064 if (button4Flag) {
amiraseman 4:783276521952 1065 button4Flag=0;
amiraseman 12:d4011389defe 1066 timerFlag=1;
amiraseman 8:8b810c29eb7b 1067 timer.attach(&timerExpired,1.0);
amiraseman 12:d4011389defe 1068 liveData();
amiraseman 4:783276521952 1069 }
amiraseman 1:e60b9f116d38 1070 break;
amiraseman 9:d1691d971f63 1071 case 1:
amiraseman 8:8b810c29eb7b 1072 if (button4Flag) {
amiraseman 8:8b810c29eb7b 1073 button4Flag=0;
amiraseman 8:8b810c29eb7b 1074 dataLogger();
amiraseman 8:8b810c29eb7b 1075 }
amiraseman 1:e60b9f116d38 1076 break;
amiraseman 9:d1691d971f63 1077 case 2:
amiraseman 9:d1691d971f63 1078 break;
amiraseman 1:e60b9f116d38 1079 case 3:
amiraseman 17:99161153081d 1080 if (button4Flag) {
amiraseman 17:99161153081d 1081 button4Flag=0;
amiraseman 17:99161153081d 1082 alarmsMenu();
amiraseman 17:99161153081d 1083 }
amiraseman 1:e60b9f116d38 1084 break;
amiraseman 1:e60b9f116d38 1085 case 4:
amiraseman 2:1d7ef0f49b35 1086 if (button4Flag) {
amiraseman 2:1d7ef0f49b35 1087 button4Flag=0;
amiraseman 2:1d7ef0f49b35 1088 settingsMenu();
amiraseman 2:1d7ef0f49b35 1089 }
amiraseman 1:e60b9f116d38 1090 break;
amiraseman 1:e60b9f116d38 1091 default:
amiraseman 1:e60b9f116d38 1092 break;
amiraseman 1:e60b9f116d38 1093 }
amiraseman 1:e60b9f116d38 1094 }
amiraseman 1:e60b9f116d38 1095
amiraseman 1:e60b9f116d38 1096
amiraseman 1:e60b9f116d38 1097
amiraseman 2:1d7ef0f49b35 1098
amiraseman 0:d78ac68077c6 1099 int main()
amiraseman 0:d78ac68077c6 1100 {
amiraseman 0:d78ac68077c6 1101
amiraseman 0:d78ac68077c6 1102 // initiliase barometer
amiraseman 0:d78ac68077c6 1103 bmp180.init();
amiraseman 0:d78ac68077c6 1104 lcd.init();
amiraseman 1:e60b9f116d38 1105 button1.rise(&button1Pressed); // call ISR on rising edge (button1pressed)
amiraseman 1:e60b9f116d38 1106 button2.rise(&button2Pressed); // call ISR on rising edge (button2pressed)
amiraseman 2:1d7ef0f49b35 1107 button3.rise(&button3Pressed);
amiraseman 2:1d7ef0f49b35 1108 button4.rise(&button4Pressed);
amiraseman 8:8b810c29eb7b 1109 dataLoggerTimer.attach(&dataLoggerTimerExpired , dataLoggerTime);
amiraseman 17:99161153081d 1110 //set_time(UNIXdate); // initialise time from the calculated UNIX time entered by the user
amiraseman 17:99161153081d 1111 redLED.period_us(25);// Set frequency at 40kHz
amiraseman 17:99161153081d 1112 yellowLED.period_us(25);// Set frequency at 40kHz
amiraseman 17:99161153081d 1113 greenLED.period_us(25);// Set frequency at 40kHz
amiraseman 13:213bf5887930 1114 powerSaverCheck();
amiraseman 6:03f12eda070d 1115
amiraseman 0:d78ac68077c6 1116 while(1) {
amiraseman 3:8a559b949470 1117 updateTime();
amiraseman 15:c6f7c4768cf2 1118 loggerData();
amiraseman 1:e60b9f116d38 1119 startMenu();
amiraseman 9:d1691d971f63 1120 display();
amiraseman 4:783276521952 1121 wait (0.1);
amiraseman 0:d78ac68077c6 1122 }
amiraseman 0:d78ac68077c6 1123 }
amiraseman 0:d78ac68077c6 1124
amiraseman 0:d78ac68077c6 1125
amiraseman 0:d78ac68077c6 1126