Amir Asemanpayeh / Mbed 2 deprecated WeatherStation

Dependencies:   BMP180 N5110 PowerControl mbed

Committer:
amiraseman
Date:
Sun Apr 12 12:17:31 2015 +0000
Revision:
6:03f12eda070d
Parent:
5:6952998ab446
Child:
7:328dc986484f
Power saver option done . Woohoo

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 1:e60b9f116d38 15
amiraseman 0:d78ac68077c6 16
amiraseman 0:d78ac68077c6 17 Ticker timer; //Create ticker object for temperature and pressure readings
amiraseman 6:03f12eda070d 18 Timeout powerSaverTimeout; // create a timeout object for the poweerSaver function
amiraseman 0:d78ac68077c6 19
amiraseman 0:d78ac68077c6 20 int setTimeFlag = 0; // flag for real time clock ISR
amiraseman 0:d78ac68077c6 21 int timerFlag = 0; // Flag for tempesrature pressure reading ISR
amiraseman 1:e60b9f116d38 22 int button1Flag = 0;
amiraseman 1:e60b9f116d38 23 int button2Flag = 0 ;
amiraseman 2:1d7ef0f49b35 24 int button3Flag = 0 ;
amiraseman 2:1d7ef0f49b35 25 int button4Flag = 0 ;
amiraseman 5:6952998ab446 26 int unitFlag = 1 ;
amiraseman 6:03f12eda070d 27 int powerSaverFlag = 0 ;
amiraseman 6:03f12eda070d 28 int lcdPowerFlag = 1 ; // Indicates if the LCD is switched on or powered off
amiraseman 2:1d7ef0f49b35 29
amiraseman 2:1d7ef0f49b35 30
amiraseman 2:1d7ef0f49b35 31
amiraseman 1:e60b9f116d38 32 int choice=1 ;
amiraseman 0:d78ac68077c6 33 int length;
amiraseman 4:783276521952 34 int year=2015;
amiraseman 4:783276521952 35 int month=1;
amiraseman 4:783276521952 36 int day=1;
amiraseman 4:783276521952 37 int hour=12;
amiraseman 4:783276521952 38 int min=0;
amiraseman 4:783276521952 39 int sec=1;
amiraseman 4:783276521952 40 int UNIXdate;
amiraseman 6:03f12eda070d 41 int powerSaverTime = 60;
amiraseman 6:03f12eda070d 42
amiraseman 6:03f12eda070d 43
amiraseman 6:03f12eda070d 44
amiraseman 0:d78ac68077c6 45
amiraseman 3:8a559b949470 46 char rxString[16]; //buffer to store recieved string from serial
amiraseman 0:d78ac68077c6 47 char bufferTime[14]; // buffer to store time
amiraseman 0:d78ac68077c6 48 char bufferDate[14]; //buffer to store date
amiraseman 4:783276521952 49 char bufferT[14]; //buffer to store temperature
amiraseman 4:783276521952 50 char bufferP[14]; //buffer to store pressure, each character is 6 pixels wide, screen is 84 pixels (84/6 = 14)
amiraseman 0:d78ac68077c6 51 // so can display a string of a maximum 14 characters in length
amiraseman 0:d78ac68077c6 52 // or create formatted strings - ensure they aren't more than 14 characters long
amiraseman 4:783276521952 53 char Year[4];
amiraseman 4:783276521952 54 char Month[12];
amiraseman 4:783276521952 55 char Day[31];
amiraseman 4:783276521952 56 char Hour[24];
amiraseman 4:783276521952 57 char Min[60];
amiraseman 6:03f12eda070d 58 char Time[2]; // string to store the powerSaverTime value to display on the LCD
amiraseman 0:d78ac68077c6 59
amiraseman 3:8a559b949470 60
amiraseman 1:e60b9f116d38 61 void button1Pressed() //ISR to subtract 1 from the value of choice when the first button is pressed
amiraseman 1:e60b9f116d38 62 {
amiraseman 1:e60b9f116d38 63 choice --;
amiraseman 4:783276521952 64 leds = 1;
amiraseman 6:03f12eda070d 65
amiraseman 1:e60b9f116d38 66 }
amiraseman 1:e60b9f116d38 67
amiraseman 1:e60b9f116d38 68
amiraseman 1:e60b9f116d38 69
amiraseman 1:e60b9f116d38 70 void button2Pressed() //ISR to add 1 to the value of the choice when the second button is pressed
amiraseman 1:e60b9f116d38 71 {
amiraseman 1:e60b9f116d38 72 choice ++;
amiraseman 4:783276521952 73 leds = 2 ;
amiraseman 6:03f12eda070d 74
amiraseman 1:e60b9f116d38 75 }
amiraseman 0:d78ac68077c6 76
amiraseman 0:d78ac68077c6 77
amiraseman 2:1d7ef0f49b35 78
amiraseman 2:1d7ef0f49b35 79 void button3Pressed()
amiraseman 2:1d7ef0f49b35 80 {
amiraseman 2:1d7ef0f49b35 81 button3Flag=1;
amiraseman 2:1d7ef0f49b35 82 }
amiraseman 2:1d7ef0f49b35 83
amiraseman 2:1d7ef0f49b35 84
amiraseman 2:1d7ef0f49b35 85
amiraseman 2:1d7ef0f49b35 86 void button4Pressed()
amiraseman 2:1d7ef0f49b35 87 {
amiraseman 2:1d7ef0f49b35 88 button4Flag = 1 ;
amiraseman 2:1d7ef0f49b35 89 }
amiraseman 2:1d7ef0f49b35 90
amiraseman 2:1d7ef0f49b35 91
amiraseman 2:1d7ef0f49b35 92
amiraseman 2:1d7ef0f49b35 93
amiraseman 2:1d7ef0f49b35 94
amiraseman 3:8a559b949470 95 void serialISR()
amiraseman 0:d78ac68077c6 96 {
amiraseman 4:783276521952 97 //reads rx string into buffer when a serial interrupt occurs
amiraseman 3:8a559b949470 98 serial.gets(rxString,16);
amiraseman 4:783276521952 99 //set flag
amiraseman 3:8a559b949470 100 setTimeFlag=1;
amiraseman 3:8a559b949470 101 }
amiraseman 4:783276521952 102
amiraseman 4:783276521952 103
amiraseman 3:8a559b949470 104
amiraseman 3:8a559b949470 105 void setTime() // sets the time every second
amiraseman 3:8a559b949470 106 {
amiraseman 4:783276521952 107 //print time for debugging
amiraseman 6:03f12eda070d 108 //serial.printf("set_time -%s ",rxString);
amiraseman 3:8a559b949470 109 //atoi() converts a string to an integer
amiraseman 4:783276521952 110 int time = atoi(rxString);
amiraseman 4:783276521952 111 //update the time
amiraseman 4:783276521952 112 set_time(time);
amiraseman 0:d78ac68077c6 113 }
amiraseman 0:d78ac68077c6 114
amiraseman 0:d78ac68077c6 115
amiraseman 0:d78ac68077c6 116
amiraseman 3:8a559b949470 117 void updateTime()
amiraseman 0:d78ac68077c6 118 {
amiraseman 4:783276521952 119 time_t seconds = time(NULL); // get current time
amiraseman 0:d78ac68077c6 120 // format time into a string (time and date)
amiraseman 4:783276521952 121 strftime(bufferTime, 14 , "%I:%M", localtime(&seconds));
amiraseman 4:783276521952 122 strftime(bufferDate, 14 , "%d/%m/%y", localtime(&seconds));
amiraseman 4:783276521952 123
amiraseman 3:8a559b949470 124 if (setTimeFlag) {
amiraseman 3:8a559b949470 125 setTimeFlag=0;
amiraseman 0:d78ac68077c6 126 }
amiraseman 0:d78ac68077c6 127 }
amiraseman 0:d78ac68077c6 128
amiraseman 0:d78ac68077c6 129
amiraseman 1:e60b9f116d38 130 void timerExpired() // ISR which sets the timer flag (flag used to display the buffers on LCD)
amiraseman 0:d78ac68077c6 131 {
amiraseman 0:d78ac68077c6 132 timerFlag=1;
amiraseman 0:d78ac68077c6 133 }
amiraseman 0:d78ac68077c6 134
amiraseman 0:d78ac68077c6 135
amiraseman 0:d78ac68077c6 136
amiraseman 1:e60b9f116d38 137 void readData() //Imports the data and saves them to the bufferss
amiraseman 0:d78ac68077c6 138 {
amiraseman 0:d78ac68077c6 139
amiraseman 0:d78ac68077c6 140 Measurement measurement; // measurement structure declared in BMP180 class
amiraseman 0:d78ac68077c6 141
amiraseman 0:d78ac68077c6 142 // read values (T in Celsius and P in mb) and print over serial port
amiraseman 0:d78ac68077c6 143 measurement = bmp180.readValues();
amiraseman 0:d78ac68077c6 144 // serial.printf("T = %.2f C P = %.2f mb\n",measurement.temperature,measurement.pressure);
amiraseman 0:d78ac68077c6 145
amiraseman 5:6952998ab446 146 int temperatureC = measurement.temperature;
amiraseman 5:6952998ab446 147 int temperatureF = (temperatureC*(9/5))+32;
amiraseman 6:03f12eda070d 148
amiraseman 6:03f12eda070d 149 if (unitFlag==1 || unitFlag==2 ) {
amiraseman 6:03f12eda070d 150 length = sprintf(bufferT,"T = %0.1d C",temperatureC); // print formatted data to buffer
amiraseman 6:03f12eda070d 151 // it is important the format specifier ensures the length will fit in the buffer
amiraseman 5:6952998ab446 152 }
amiraseman 6:03f12eda070d 153 if (unitFlag==3 || unitFlag==4 ) {
amiraseman 6:03f12eda070d 154 length = sprintf(bufferT,"T = %0.1d F",temperatureF); // print formatted data to buffer
amiraseman 6:03f12eda070d 155 // it is important the format specifier ensures the length will fit in the buffer
amiraseman 5:6952998ab446 156 }
amiraseman 0:d78ac68077c6 157
amiraseman 5:6952998ab446 158 float pressureMB = measurement.pressure; // same idea with floats
amiraseman 5:6952998ab446 159 float pressureATM = pressureMB*0.0009869;
amiraseman 6:03f12eda070d 160
amiraseman 6:03f12eda070d 161
amiraseman 6:03f12eda070d 162 if (unitFlag==1 || unitFlag==3 ) {
amiraseman 6:03f12eda070d 163 length = sprintf(bufferP,"P = %.2f mb",pressureMB); // print formatted data to buffer
amiraseman 6:03f12eda070d 164 // it is important the format specifier ensures the length will fit in the buffer
amiraseman 5:6952998ab446 165 }
amiraseman 6:03f12eda070d 166 if (unitFlag==2 || unitFlag==4 ) {
amiraseman 6:03f12eda070d 167 length = sprintf(bufferP,"P = %.2f atm",pressureATM); // print formatted data to buffer
amiraseman 6:03f12eda070d 168 // it is important the format specifier ensures the length will fit in the buffer
amiraseman 5:6952998ab446 169 }
amiraseman 0:d78ac68077c6 170
amiraseman 0:d78ac68077c6 171
amiraseman 0:d78ac68077c6 172 }
amiraseman 0:d78ac68077c6 173
amiraseman 0:d78ac68077c6 174
amiraseman 1:e60b9f116d38 175
amiraseman 1:e60b9f116d38 176
amiraseman 1:e60b9f116d38 177 void displayData() //Prints the buffers on the LCD
amiraseman 0:d78ac68077c6 178 {
amiraseman 4:783276521952 179 lcd.clear();
amiraseman 0:d78ac68077c6 180 if (length <= 14) { // if string will fit on display
amiraseman 0:d78ac68077c6 181 lcd.printString(bufferT,0,1); // display on screen
amiraseman 0:d78ac68077c6 182 lcd.printString(bufferP,0,2);
amiraseman 0:d78ac68077c6 183 lcd.printString(bufferTime,0,3);
amiraseman 0:d78ac68077c6 184 lcd.printString(bufferDate,0,4);
amiraseman 0:d78ac68077c6 185 }
amiraseman 0:d78ac68077c6 186 }
amiraseman 0:d78ac68077c6 187
amiraseman 0:d78ac68077c6 188
amiraseman 1:e60b9f116d38 189
amiraseman 1:e60b9f116d38 190
amiraseman 1:e60b9f116d38 191 void updateData() //
amiraseman 0:d78ac68077c6 192 {
amiraseman 4:783276521952 193 while (1) {
amiraseman 4:783276521952 194 if (timerFlag) {
amiraseman 4:783276521952 195 timerFlag=0;
amiraseman 4:783276521952 196 readData();
amiraseman 4:783276521952 197 displayData();
amiraseman 4:783276521952 198 }
amiraseman 4:783276521952 199 if (button3Flag) {
amiraseman 4:783276521952 200 button3Flag = 0;
amiraseman 4:783276521952 201 break;
amiraseman 4:783276521952 202 }
amiraseman 6:03f12eda070d 203
amiraseman 4:783276521952 204 Sleep();
amiraseman 0:d78ac68077c6 205 }
amiraseman 4:783276521952 206 }
amiraseman 4:783276521952 207
amiraseman 4:783276521952 208
amiraseman 6:03f12eda070d 209
amiraseman 6:03f12eda070d 210
amiraseman 6:03f12eda070d 211
amiraseman 6:03f12eda070d 212
amiraseman 6:03f12eda070d 213 void savePower() // turns off the LCD to save power
amiraseman 6:03f12eda070d 214 {
amiraseman 6:03f12eda070d 215
amiraseman 6:03f12eda070d 216 lcd.turnOff () ; //turns off the lcd
amiraseman 6:03f12eda070d 217 lcdPowerFlag = 0 ; // A flag is set to indicate the state of the LCD
amiraseman 6:03f12eda070d 218
amiraseman 6:03f12eda070d 219 }
amiraseman 6:03f12eda070d 220
amiraseman 6:03f12eda070d 221
amiraseman 6:03f12eda070d 222
amiraseman 6:03f12eda070d 223
amiraseman 6:03f12eda070d 224
amiraseman 6:03f12eda070d 225
amiraseman 6:03f12eda070d 226 void wakeUp () //Turns the LCD on after the mbed is interrupted
amiraseman 6:03f12eda070d 227 {
amiraseman 6:03f12eda070d 228
amiraseman 6:03f12eda070d 229 if (button1Flag || button2Flag || button3Flag || button4Flag ) {
amiraseman 6:03f12eda070d 230
amiraseman 6:03f12eda070d 231
amiraseman 6:03f12eda070d 232 if (lcdPowerFlag == 0) { // if the LCD is powered off
amiraseman 6:03f12eda070d 233 lcdPowerFlag = 1 ;
amiraseman 6:03f12eda070d 234 lcd.init(); // turns the LCD on
amiraseman 6:03f12eda070d 235 powerSaverTimeout.attach(&savePower, powerSaverTime); // setup a timeiut to call the savePower function
amiraseman 6:03f12eda070d 236 button1Flag = 0 ;
amiraseman 6:03f12eda070d 237 button2Flag = 0 ;
amiraseman 6:03f12eda070d 238 button3Flag = 0 ;
amiraseman 6:03f12eda070d 239 button4Flag = 0 ;
amiraseman 6:03f12eda070d 240 }
amiraseman 6:03f12eda070d 241 }
amiraseman 6:03f12eda070d 242
amiraseman 6:03f12eda070d 243 }
amiraseman 6:03f12eda070d 244
amiraseman 6:03f12eda070d 245
amiraseman 6:03f12eda070d 246
amiraseman 6:03f12eda070d 247
amiraseman 6:03f12eda070d 248
amiraseman 6:03f12eda070d 249
amiraseman 6:03f12eda070d 250
amiraseman 6:03f12eda070d 251
amiraseman 6:03f12eda070d 252 void powerSaverCheck() // checks if the powersaverFlag is set
amiraseman 6:03f12eda070d 253 {
amiraseman 6:03f12eda070d 254
amiraseman 6:03f12eda070d 255 if (powerSaverFlag == 1 ) {
amiraseman 6:03f12eda070d 256
amiraseman 6:03f12eda070d 257 powerSaverTimeout.attach(&savePower, powerSaverTime); // setup a timeiut to call the savePower function
amiraseman 6:03f12eda070d 258
amiraseman 6:03f12eda070d 259 }
amiraseman 6:03f12eda070d 260
amiraseman 6:03f12eda070d 261 else {
amiraseman 6:03f12eda070d 262 powerSaverTimeout.detach();
amiraseman 6:03f12eda070d 263
amiraseman 6:03f12eda070d 264 }
amiraseman 6:03f12eda070d 265 }
amiraseman 6:03f12eda070d 266
amiraseman 6:03f12eda070d 267
amiraseman 6:03f12eda070d 268
amiraseman 6:03f12eda070d 269 void powerSaverSetting()
amiraseman 6:03f12eda070d 270 {
amiraseman 6:03f12eda070d 271
amiraseman 6:03f12eda070d 272
amiraseman 6:03f12eda070d 273 lcd.clear();
amiraseman 6:03f12eda070d 274 choice = powerSaverFlag ;
amiraseman 6:03f12eda070d 275
amiraseman 6:03f12eda070d 276 while (1) {
amiraseman 6:03f12eda070d 277 wakeUp();
amiraseman 6:03f12eda070d 278 int time = sprintf (Time, "%d min", powerSaverTime/60);//convert integer to buffer str
amiraseman 6:03f12eda070d 279
amiraseman 6:03f12eda070d 280 if (choice < 1) {
amiraseman 6:03f12eda070d 281 choice = 2;
amiraseman 6:03f12eda070d 282 }
amiraseman 6:03f12eda070d 283 if (choice > 2) {
amiraseman 6:03f12eda070d 284 choice = 1;
amiraseman 6:03f12eda070d 285 }
amiraseman 6:03f12eda070d 286 if (powerSaverTime > 300){
amiraseman 6:03f12eda070d 287 powerSaverTime = 60 ;
amiraseman 6:03f12eda070d 288 }
amiraseman 6:03f12eda070d 289
amiraseman 6:03f12eda070d 290
amiraseman 6:03f12eda070d 291 switch (choice) {
amiraseman 6:03f12eda070d 292 case 1:
amiraseman 6:03f12eda070d 293
amiraseman 6:03f12eda070d 294 lcd.clear();
amiraseman 6:03f12eda070d 295 lcd.printString(bufferTime,48,0);
amiraseman 6:03f12eda070d 296 lcd.printString("Power Saver :",0,1);
amiraseman 6:03f12eda070d 297 lcd.printString("ON",0,2);
amiraseman 6:03f12eda070d 298 lcd.printString("Time Out :",0,3);
amiraseman 6:03f12eda070d 299 lcd.printString(Time,0,4);
amiraseman 6:03f12eda070d 300 lcd.printString("Back Save",0,5);
amiraseman 6:03f12eda070d 301
amiraseman 6:03f12eda070d 302 if (button4Flag) {
amiraseman 6:03f12eda070d 303 button4Flag=0;
amiraseman 6:03f12eda070d 304 powerSaverFlag = 1 ;
amiraseman 6:03f12eda070d 305 powerSaverTime += 60 ;
amiraseman 6:03f12eda070d 306
amiraseman 6:03f12eda070d 307 }
amiraseman 6:03f12eda070d 308
amiraseman 6:03f12eda070d 309
amiraseman 6:03f12eda070d 310 break;
amiraseman 6:03f12eda070d 311 case 2:
amiraseman 6:03f12eda070d 312 lcd.clear();
amiraseman 6:03f12eda070d 313 lcd.printString(bufferTime,48,0);
amiraseman 6:03f12eda070d 314 lcd.printString("Power Saver : ",0,1);
amiraseman 6:03f12eda070d 315 lcd.printString("OFF",0,2);
amiraseman 6:03f12eda070d 316 lcd.printString("Back Save",0,5);
amiraseman 6:03f12eda070d 317 if (button4Flag) {
amiraseman 6:03f12eda070d 318 button4Flag=0;
amiraseman 6:03f12eda070d 319 powerSaverFlag = 0 ;
amiraseman 6:03f12eda070d 320
amiraseman 6:03f12eda070d 321 }
amiraseman 6:03f12eda070d 322
amiraseman 6:03f12eda070d 323 default:
amiraseman 6:03f12eda070d 324 break;
amiraseman 6:03f12eda070d 325
amiraseman 6:03f12eda070d 326 }
amiraseman 6:03f12eda070d 327
amiraseman 6:03f12eda070d 328 wait (0.1);
amiraseman 6:03f12eda070d 329 powerSaverCheck();
amiraseman 6:03f12eda070d 330 if (button3Flag) {
amiraseman 6:03f12eda070d 331 button3Flag=0;
amiraseman 6:03f12eda070d 332 break;
amiraseman 6:03f12eda070d 333 }
amiraseman 6:03f12eda070d 334 }
amiraseman 6:03f12eda070d 335 }
amiraseman 6:03f12eda070d 336
amiraseman 6:03f12eda070d 337
amiraseman 6:03f12eda070d 338
amiraseman 6:03f12eda070d 339
amiraseman 6:03f12eda070d 340
amiraseman 6:03f12eda070d 341
amiraseman 6:03f12eda070d 342
amiraseman 6:03f12eda070d 343
amiraseman 4:783276521952 344 void calculateUNIXTime()
amiraseman 4:783276521952 345 {
amiraseman 4:783276521952 346 time_t rawtime;
amiraseman 4:783276521952 347 struct tm * timeinfo;
amiraseman 4:783276521952 348
amiraseman 4:783276521952 349 /* get current timeinfo: */
amiraseman 4:783276521952 350 time ( &rawtime ); //or: rawtime = time(0);
amiraseman 4:783276521952 351 /* convert to struct: */
amiraseman 4:783276521952 352 timeinfo = localtime ( &rawtime );
amiraseman 4:783276521952 353
amiraseman 4:783276521952 354 /* now modify the timeinfo to the given date: */
amiraseman 4:783276521952 355 timeinfo->tm_year = year - 1900;
amiraseman 4:783276521952 356 timeinfo->tm_mon = month - 1; //months since January - [0,11]
amiraseman 4:783276521952 357 timeinfo->tm_mday = day; //day of the month - [1,31]
amiraseman 4:783276521952 358 timeinfo->tm_hour = hour; //hours since midnight - [0,23]
amiraseman 4:783276521952 359 timeinfo->tm_min = min; //minutes after the hour - [0,59]
amiraseman 4:783276521952 360 timeinfo->tm_sec = sec; //seconds after the minute - [0,59]
amiraseman 4:783276521952 361
amiraseman 4:783276521952 362 /* call mktime: create unix time stamp from timeinfo struct */
amiraseman 4:783276521952 363 UNIXdate = mktime ( timeinfo );
amiraseman 4:783276521952 364
amiraseman 4:783276521952 365 }
amiraseman 4:783276521952 366
amiraseman 5:6952998ab446 367
amiraseman 5:6952998ab446 368
amiraseman 5:6952998ab446 369
amiraseman 5:6952998ab446 370 void unitsSetting()
amiraseman 5:6952998ab446 371 {
amiraseman 5:6952998ab446 372 choice = 1;
amiraseman 6:03f12eda070d 373 powerSaverCheck();
amiraseman 5:6952998ab446 374 while (1) {
amiraseman 6:03f12eda070d 375 wakeUp();
amiraseman 5:6952998ab446 376
amiraseman 5:6952998ab446 377
amiraseman 5:6952998ab446 378 if (choice < 1) {
amiraseman 5:6952998ab446 379 choice = 4;
amiraseman 5:6952998ab446 380 }
amiraseman 5:6952998ab446 381 if (choice > 4) {
amiraseman 5:6952998ab446 382 choice = 1;
amiraseman 5:6952998ab446 383 }
amiraseman 5:6952998ab446 384
amiraseman 5:6952998ab446 385
amiraseman 5:6952998ab446 386
amiraseman 5:6952998ab446 387 switch (choice) {
amiraseman 5:6952998ab446 388 case 1:
amiraseman 5:6952998ab446 389
amiraseman 5:6952998ab446 390 lcd.clear();
amiraseman 5:6952998ab446 391 lcd.printString(bufferTime,48,0);
amiraseman 5:6952998ab446 392 lcd.printString("Units : ",0,2);
amiraseman 5:6952998ab446 393 lcd.printString("C/mb",0,3);
amiraseman 5:6952998ab446 394 lcd.printString("Back Save",0,5);
amiraseman 5:6952998ab446 395
amiraseman 5:6952998ab446 396 if (button4Flag) {
amiraseman 5:6952998ab446 397 button4Flag=0;
amiraseman 5:6952998ab446 398 unitFlag=1;
amiraseman 5:6952998ab446 399 }
amiraseman 5:6952998ab446 400
amiraseman 5:6952998ab446 401
amiraseman 5:6952998ab446 402 break;
amiraseman 5:6952998ab446 403 case 2:
amiraseman 5:6952998ab446 404 lcd.clear();
amiraseman 5:6952998ab446 405 lcd.printString(bufferTime,48,0);
amiraseman 5:6952998ab446 406 lcd.printString("Units : ",0,2);
amiraseman 5:6952998ab446 407 lcd.printString("C/atm",0,3);
amiraseman 5:6952998ab446 408 lcd.printString("Back Save",0,5);
amiraseman 5:6952998ab446 409 if (button4Flag) {
amiraseman 5:6952998ab446 410 button4Flag=0;
amiraseman 5:6952998ab446 411 unitFlag=2;
amiraseman 5:6952998ab446 412 }
amiraseman 5:6952998ab446 413 break;
amiraseman 5:6952998ab446 414 case 3:
amiraseman 5:6952998ab446 415 lcd.clear();
amiraseman 5:6952998ab446 416 lcd.printString(bufferTime,48,0);
amiraseman 5:6952998ab446 417 lcd.printString("Units : ",0,2);
amiraseman 5:6952998ab446 418 lcd.printString("F/mb",0,3);
amiraseman 5:6952998ab446 419 lcd.printString("Back Save",0,5);
amiraseman 5:6952998ab446 420 if (button4Flag) {
amiraseman 5:6952998ab446 421 button4Flag = 0;
amiraseman 5:6952998ab446 422 unitFlag=3;
amiraseman 5:6952998ab446 423 }
amiraseman 5:6952998ab446 424 break;
amiraseman 5:6952998ab446 425 case 4:
amiraseman 5:6952998ab446 426 lcd.clear();
amiraseman 5:6952998ab446 427 lcd.printString(bufferTime,48,0);
amiraseman 5:6952998ab446 428 lcd.printString("Units : ",0,2);
amiraseman 5:6952998ab446 429 lcd.printString("F/atm",0,3);
amiraseman 5:6952998ab446 430 lcd.printString("Back Save",0,5);
amiraseman 5:6952998ab446 431 if (button4Flag) {
amiraseman 5:6952998ab446 432 button4Flag=0;
amiraseman 5:6952998ab446 433 unitFlag=4;
amiraseman 5:6952998ab446 434 }
amiraseman 5:6952998ab446 435 break;
amiraseman 5:6952998ab446 436 default:
amiraseman 5:6952998ab446 437 break;
amiraseman 5:6952998ab446 438
amiraseman 5:6952998ab446 439 }
amiraseman 5:6952998ab446 440 wait (0.1);
amiraseman 5:6952998ab446 441 if (button3Flag) {
amiraseman 5:6952998ab446 442 button3Flag=0;
amiraseman 5:6952998ab446 443 break;
amiraseman 5:6952998ab446 444 }
amiraseman 5:6952998ab446 445 }
amiraseman 5:6952998ab446 446 }
amiraseman 5:6952998ab446 447
amiraseman 5:6952998ab446 448
amiraseman 5:6952998ab446 449
amiraseman 5:6952998ab446 450
amiraseman 5:6952998ab446 451
amiraseman 4:783276521952 452 void brightnessSetting ()
amiraseman 4:783276521952 453 {
amiraseman 4:783276521952 454 lcd.clear();
amiraseman 4:783276521952 455 while(1) {
amiraseman 6:03f12eda070d 456 wakeUp();
amiraseman 5:6952998ab446 457 lcd.clear();
amiraseman 5:6952998ab446 458 lcd.refresh();
amiraseman 5:6952998ab446 459 if (choice < 1) {
amiraseman 5:6952998ab446 460 choice = 6 ;
amiraseman 5:6952998ab446 461 }
amiraseman 5:6952998ab446 462 if (choice > 6) {
amiraseman 4:783276521952 463 choice = 1;
amiraseman 4:783276521952 464 }
amiraseman 5:6952998ab446 465
amiraseman 5:6952998ab446 466
amiraseman 5:6952998ab446 467 if (button4Flag) {
amiraseman 5:6952998ab446 468 button4Flag=0;
amiraseman 5:6952998ab446 469 lcd.setBrightness(choice/10);
amiraseman 5:6952998ab446 470 }
amiraseman 5:6952998ab446 471
amiraseman 4:783276521952 472 if (button3Flag) {
amiraseman 4:783276521952 473 button3Flag=0;
amiraseman 4:783276521952 474 break;
amiraseman 4:783276521952 475 }
amiraseman 4:783276521952 476 }
amiraseman 0:d78ac68077c6 477 }
amiraseman 0:d78ac68077c6 478
amiraseman 0:d78ac68077c6 479
amiraseman 2:1d7ef0f49b35 480
amiraseman 4:783276521952 481 void timeDateSetting()
amiraseman 3:8a559b949470 482 {
amiraseman 3:8a559b949470 483
amiraseman 4:783276521952 484 choice = 1 ;
amiraseman 4:783276521952 485 while (1) {
amiraseman 6:03f12eda070d 486 wakeUp();
amiraseman 4:783276521952 487 if (choice > 6) {
amiraseman 4:783276521952 488 choice = 1 ;
amiraseman 4:783276521952 489 }
amiraseman 4:783276521952 490 if (choice < 1) {
amiraseman 4:783276521952 491 choice = 6 ;
amiraseman 4:783276521952 492 }
amiraseman 4:783276521952 493
amiraseman 3:8a559b949470 494
amiraseman 4:783276521952 495 //convert integers to strings to display on the LCD
amiraseman 4:783276521952 496 int y = sprintf (Year, "Year : %d", year);//convert integer to buffer str
amiraseman 4:783276521952 497 int m = sprintf (Month, "Month : %d", month);//convert integer to buffer str
amiraseman 4:783276521952 498 int d = sprintf (Day, "Day : %d", day);//convert integer to buffer str
amiraseman 4:783276521952 499 int h = sprintf (Hour, "Hour : %d", hour);//convert integer to buffer str
amiraseman 4:783276521952 500 int mi = sprintf (Min, "Min : %d", min);//convert integer to buffer str
amiraseman 3:8a559b949470 501
amiraseman 4:783276521952 502
amiraseman 4:783276521952 503 switch (choice) {
amiraseman 4:783276521952 504 case 1:
amiraseman 3:8a559b949470 505
amiraseman 4:783276521952 506 lcd.clear();
amiraseman 4:783276521952 507 lcd.printString(Hour,10,0);
amiraseman 4:783276521952 508 lcd.printString(Min,0,1);
amiraseman 4:783276521952 509 lcd.printString(Day,0,2);
amiraseman 4:783276521952 510 lcd.printString(Month,0,3);
amiraseman 4:783276521952 511 lcd.printString(Year,0,4);
amiraseman 4:783276521952 512 lcd.printString("Back Save",0,5);
amiraseman 4:783276521952 513 lcd.drawCircle(5,4,3,1); // x,y,radius,black fill
amiraseman 4:783276521952 514 if (button3Flag) {
amiraseman 4:783276521952 515 button3Flag= 0;
amiraseman 4:783276521952 516 hour--;
amiraseman 4:783276521952 517 }
amiraseman 4:783276521952 518 if (button4Flag) {
amiraseman 4:783276521952 519 button4Flag= 0;
amiraseman 4:783276521952 520 hour++;
amiraseman 4:783276521952 521 }
amiraseman 3:8a559b949470 522
amiraseman 4:783276521952 523 break;
amiraseman 4:783276521952 524 case 2:
amiraseman 4:783276521952 525 lcd.clear();
amiraseman 4:783276521952 526 lcd.printString(Hour,0,0);
amiraseman 4:783276521952 527 lcd.printString(Min,10,1);
amiraseman 4:783276521952 528 lcd.printString(Day,0,2);
amiraseman 4:783276521952 529 lcd.printString(Month,0,3);
amiraseman 4:783276521952 530 lcd.printString(Year,0,4);
amiraseman 4:783276521952 531 lcd.printString("Back Save",0,5);
amiraseman 4:783276521952 532 lcd.drawCircle(5,12,3,1); // x,y,radius,black fill
amiraseman 4:783276521952 533 if (button3Flag) {
amiraseman 4:783276521952 534 button3Flag= 0;
amiraseman 4:783276521952 535 min--;
amiraseman 4:783276521952 536 }
amiraseman 4:783276521952 537 if (button4Flag) {
amiraseman 4:783276521952 538 button4Flag= 0;
amiraseman 4:783276521952 539 min++;
amiraseman 4:783276521952 540 }
amiraseman 4:783276521952 541 break;
amiraseman 4:783276521952 542 case 3:
amiraseman 4:783276521952 543 lcd.clear();
amiraseman 4:783276521952 544 lcd.printString(Hour,0,0);
amiraseman 4:783276521952 545 lcd.printString(Min,0,1);
amiraseman 4:783276521952 546 lcd.printString(Day,10,2);
amiraseman 4:783276521952 547 lcd.printString(Month,0,3);
amiraseman 4:783276521952 548 lcd.printString(Year,0,4);
amiraseman 4:783276521952 549 lcd.printString("Back Save",0,5);
amiraseman 4:783276521952 550 lcd.drawCircle(5,20,3,1); // x,y,radius,black fill
amiraseman 4:783276521952 551 if (button3Flag) {
amiraseman 4:783276521952 552 button3Flag= 0;
amiraseman 4:783276521952 553 day--;
amiraseman 4:783276521952 554 }
amiraseman 4:783276521952 555 if (button4Flag) {
amiraseman 4:783276521952 556 button4Flag= 0;
amiraseman 4:783276521952 557 day++;
amiraseman 4:783276521952 558 }
amiraseman 4:783276521952 559 break;
amiraseman 4:783276521952 560 case 4:
amiraseman 4:783276521952 561 lcd.clear();
amiraseman 4:783276521952 562 lcd.printString(Hour,0,0);
amiraseman 4:783276521952 563 lcd.printString(Min,0,1);
amiraseman 4:783276521952 564 lcd.printString(Day,0,2);
amiraseman 4:783276521952 565 lcd.printString(Month,10,3);
amiraseman 4:783276521952 566 lcd.printString(Year,0,4);
amiraseman 4:783276521952 567 lcd.printString("Back Save",0,5);
amiraseman 4:783276521952 568 lcd.drawCircle(5,28,3,1); // x,y,radius,black fill
amiraseman 4:783276521952 569 if (button3Flag) {
amiraseman 4:783276521952 570 button3Flag= 0;
amiraseman 4:783276521952 571 month--;
amiraseman 4:783276521952 572 }
amiraseman 4:783276521952 573 if (button4Flag) {
amiraseman 4:783276521952 574 button4Flag= 0;
amiraseman 4:783276521952 575 month++;
amiraseman 4:783276521952 576 }
amiraseman 4:783276521952 577 break;
amiraseman 4:783276521952 578 case 5:
amiraseman 3:8a559b949470 579
amiraseman 4:783276521952 580 lcd.clear();
amiraseman 4:783276521952 581 lcd.printString(Hour,0,0);
amiraseman 4:783276521952 582 lcd.printString(Min,0,1);
amiraseman 4:783276521952 583 lcd.printString(Day,0,2);
amiraseman 4:783276521952 584 lcd.printString(Month,0,3);
amiraseman 4:783276521952 585 lcd.printString(Year,10,4);
amiraseman 4:783276521952 586 lcd.printString("Back Save",0,5);
amiraseman 4:783276521952 587 lcd.drawCircle(5,36,3,1); // x,y,radius,black fill
amiraseman 4:783276521952 588 if (button3Flag) {
amiraseman 4:783276521952 589 button3Flag= 0;
amiraseman 4:783276521952 590 year--;
amiraseman 4:783276521952 591 }
amiraseman 4:783276521952 592 if (button4Flag) {
amiraseman 4:783276521952 593 button4Flag= 0;
amiraseman 4:783276521952 594 year++;
amiraseman 4:783276521952 595 }
amiraseman 4:783276521952 596 break;
amiraseman 4:783276521952 597 case 6:
amiraseman 4:783276521952 598
amiraseman 4:783276521952 599 lcd.clear();
amiraseman 4:783276521952 600 lcd.printString(Hour,0,0);
amiraseman 4:783276521952 601 lcd.printString(Min,0,1);
amiraseman 4:783276521952 602 lcd.printString(Day,0,2);
amiraseman 4:783276521952 603 lcd.printString(Month,0,3);
amiraseman 4:783276521952 604 lcd.printString(Year,0,4);
amiraseman 4:783276521952 605 lcd.printString("Back Save",0,5);
amiraseman 4:783276521952 606 lcd.drawCircle(40,44,3,1); // x,y,radius,black fill
amiraseman 4:783276521952 607 if (button4Flag) {
amiraseman 4:783276521952 608 button4Flag=0;
amiraseman 4:783276521952 609 calculateUNIXTime();
amiraseman 4:783276521952 610 set_time(UNIXdate); // initialise time from the calculated UNIX time entered by the user
amiraseman 4:783276521952 611 serial.printf ("Until the given date, since 1970/01/01 %i seconds have passed.\n", UNIXdate);
amiraseman 4:783276521952 612 }
amiraseman 4:783276521952 613 if (button3Flag) {
amiraseman 4:783276521952 614 button3Flag=0;
amiraseman 4:783276521952 615 goto exit_loop;
amiraseman 4:783276521952 616 }
amiraseman 4:783276521952 617 break;
amiraseman 4:783276521952 618 default:
amiraseman 4:783276521952 619 break;
amiraseman 4:783276521952 620 }
amiraseman 5:6952998ab446 621 wait (0.1);
amiraseman 3:8a559b949470 622 }
amiraseman 4:783276521952 623 exit_loop:
amiraseman 4:783276521952 624 ;
amiraseman 3:8a559b949470 625 }
amiraseman 3:8a559b949470 626
amiraseman 3:8a559b949470 627
amiraseman 3:8a559b949470 628
amiraseman 2:1d7ef0f49b35 629
amiraseman 2:1d7ef0f49b35 630 void settingsMenu()
amiraseman 2:1d7ef0f49b35 631 {
amiraseman 2:1d7ef0f49b35 632
amiraseman 6:03f12eda070d 633 powerSaverCheck();
amiraseman 2:1d7ef0f49b35 634
amiraseman 2:1d7ef0f49b35 635 choice = 1 ;
amiraseman 2:1d7ef0f49b35 636 while(1) {
amiraseman 6:03f12eda070d 637
amiraseman 6:03f12eda070d 638
amiraseman 6:03f12eda070d 639 wakeUp();
amiraseman 4:783276521952 640 if (choice > 5) {
amiraseman 4:783276521952 641 choice = 1 ;
amiraseman 4:783276521952 642 }
amiraseman 4:783276521952 643 if (choice < 1) {
amiraseman 4:783276521952 644 choice = 5 ;
amiraseman 4:783276521952 645 }
amiraseman 3:8a559b949470 646 updateTime();
amiraseman 2:1d7ef0f49b35 647 switch (choice) {
amiraseman 2:1d7ef0f49b35 648 case 1:
amiraseman 2:1d7ef0f49b35 649
amiraseman 2:1d7ef0f49b35 650 lcd.clear();
amiraseman 2:1d7ef0f49b35 651 lcd.printString(bufferTime,48,0);
amiraseman 2:1d7ef0f49b35 652 lcd.printString("Time/Date",10,1);
amiraseman 2:1d7ef0f49b35 653 lcd.printString("Units",0,2);
amiraseman 2:1d7ef0f49b35 654 lcd.printString("Brightness",0,3);
amiraseman 2:1d7ef0f49b35 655 lcd.printString("Power Saver",0,4);
amiraseman 2:1d7ef0f49b35 656 lcd.printString("Log Interval",0,5);
amiraseman 2:1d7ef0f49b35 657 lcd.drawCircle(5,12,3,1); // x,y,radius,black fill
amiraseman 2:1d7ef0f49b35 658
amiraseman 4:783276521952 659 if (button4Flag) {
amiraseman 4:783276521952 660 button4Flag=0;
amiraseman 4:783276521952 661 timeDateSetting();
amiraseman 4:783276521952 662 }
amiraseman 4:783276521952 663
amiraseman 4:783276521952 664
amiraseman 2:1d7ef0f49b35 665 break;
amiraseman 2:1d7ef0f49b35 666 case 2:
amiraseman 2:1d7ef0f49b35 667 lcd.clear();
amiraseman 2:1d7ef0f49b35 668 lcd.printString(bufferTime,48,0);
amiraseman 2:1d7ef0f49b35 669 lcd.printString("Time/Date",0,1);
amiraseman 2:1d7ef0f49b35 670 lcd.printString("Units",10,2);
amiraseman 2:1d7ef0f49b35 671 lcd.printString("Brightness",0,3);
amiraseman 2:1d7ef0f49b35 672 lcd.printString("Power Saver",0,4);
amiraseman 2:1d7ef0f49b35 673 lcd.printString("Log Interval",0,5);
amiraseman 2:1d7ef0f49b35 674 lcd.drawCircle(5,20,3,1); // x,y,radius,black fill
amiraseman 5:6952998ab446 675
amiraseman 5:6952998ab446 676 if (button4Flag) {
amiraseman 5:6952998ab446 677 button4Flag=0;
amiraseman 5:6952998ab446 678 unitsSetting();
amiraseman 5:6952998ab446 679 }
amiraseman 5:6952998ab446 680
amiraseman 2:1d7ef0f49b35 681 break;
amiraseman 2:1d7ef0f49b35 682 case 3:
amiraseman 2:1d7ef0f49b35 683 lcd.clear();
amiraseman 2:1d7ef0f49b35 684 lcd.printString(bufferTime,48,0);
amiraseman 2:1d7ef0f49b35 685 lcd.printString("Time/Date",0,1);
amiraseman 2:1d7ef0f49b35 686 lcd.printString("Units",0,2);
amiraseman 2:1d7ef0f49b35 687 lcd.printString("Brightness",10,3);
amiraseman 2:1d7ef0f49b35 688 lcd.printString("Power Saver",0,4);
amiraseman 2:1d7ef0f49b35 689 lcd.printString("Log Interval",0,5);
amiraseman 2:1d7ef0f49b35 690 lcd.drawCircle(5,28,3,1); // x,y,radius,black fill
amiraseman 4:783276521952 691 if (button4Flag) {
amiraseman 4:783276521952 692 button4Flag = 0;
amiraseman 4:783276521952 693 brightnessSetting();
amiraseman 4:783276521952 694 }
amiraseman 2:1d7ef0f49b35 695 break;
amiraseman 2:1d7ef0f49b35 696 case 4:
amiraseman 2:1d7ef0f49b35 697 lcd.clear();
amiraseman 2:1d7ef0f49b35 698 lcd.printString(bufferTime,48,0);
amiraseman 2:1d7ef0f49b35 699 lcd.printString("Time/Date",0,1);
amiraseman 2:1d7ef0f49b35 700 lcd.printString("Units",0,2);
amiraseman 2:1d7ef0f49b35 701 lcd.printString("Brightness",0,3);
amiraseman 2:1d7ef0f49b35 702 lcd.printString("Power Saver",10,4);
amiraseman 2:1d7ef0f49b35 703 lcd.printString("Log Interval",0,5);
amiraseman 2:1d7ef0f49b35 704 lcd.drawCircle(5,36,3,1); // x,y,radius,black fill
amiraseman 6:03f12eda070d 705 if (button4Flag) {
amiraseman 6:03f12eda070d 706 button4Flag = 0;
amiraseman 6:03f12eda070d 707 powerSaverSetting();
amiraseman 6:03f12eda070d 708 }
amiraseman 2:1d7ef0f49b35 709 break;
amiraseman 2:1d7ef0f49b35 710 case 5:
amiraseman 2:1d7ef0f49b35 711
amiraseman 2:1d7ef0f49b35 712 lcd.clear();
amiraseman 2:1d7ef0f49b35 713
amiraseman 2:1d7ef0f49b35 714 lcd.printString(bufferTime,48,0);
amiraseman 2:1d7ef0f49b35 715 lcd.printString("Time/Date",0,1);
amiraseman 2:1d7ef0f49b35 716 lcd.printString("Units",0,2);
amiraseman 2:1d7ef0f49b35 717 lcd.printString("Brightness",0,3);
amiraseman 2:1d7ef0f49b35 718 lcd.printString("Power Saver",0,4);
amiraseman 2:1d7ef0f49b35 719 lcd.printString("Log Interval",10,5);
amiraseman 2:1d7ef0f49b35 720 lcd.drawCircle(5,44,3,1); // x,y,radius,black fill
amiraseman 2:1d7ef0f49b35 721 break;
amiraseman 4:783276521952 722 case 6:
amiraseman 4:783276521952 723
amiraseman 4:783276521952 724 lcd.clear();
amiraseman 4:783276521952 725 choice = 1;
amiraseman 4:783276521952 726 break;
amiraseman 2:1d7ef0f49b35 727 default:
amiraseman 2:1d7ef0f49b35 728 leds = 15;
amiraseman 2:1d7ef0f49b35 729 break;
amiraseman 2:1d7ef0f49b35 730 }
amiraseman 4:783276521952 731 if (button3Flag) {
amiraseman 2:1d7ef0f49b35 732 button3Flag=0;
amiraseman 2:1d7ef0f49b35 733 break;
amiraseman 4:783276521952 734 }
amiraseman 5:6952998ab446 735 wait (0.1);
amiraseman 2:1d7ef0f49b35 736 }
amiraseman 2:1d7ef0f49b35 737 }
amiraseman 2:1d7ef0f49b35 738
amiraseman 2:1d7ef0f49b35 739
amiraseman 5:6952998ab446 740 void startMenu() //The menu displayed at the beginning
amiraseman 1:e60b9f116d38 741 {
amiraseman 6:03f12eda070d 742 wakeUp();
amiraseman 1:e60b9f116d38 743 switch (choice) {
amiraseman 1:e60b9f116d38 744 case 1:
amiraseman 1:e60b9f116d38 745
amiraseman 1:e60b9f116d38 746 lcd.clear();
amiraseman 1:e60b9f116d38 747 lcd.printString(bufferTime,48,0);
amiraseman 1:e60b9f116d38 748 lcd.printString("Live Data",20,1);
amiraseman 1:e60b9f116d38 749 lcd.printString("Saved Data",0,2);
amiraseman 1:e60b9f116d38 750 lcd.printString("Forecast",0,3);
amiraseman 1:e60b9f116d38 751 lcd.printString("Alarms",0,4);
amiraseman 1:e60b9f116d38 752 lcd.printString("Settings",0,5);
amiraseman 1:e60b9f116d38 753 lcd.drawCircle(5,12,3,1); // x,y,radius,black fill
amiraseman 4:783276521952 754 if (button4Flag) {
amiraseman 4:783276521952 755 button4Flag=0;
amiraseman 4:783276521952 756 updateData();
amiraseman 4:783276521952 757 }
amiraseman 1:e60b9f116d38 758
amiraseman 1:e60b9f116d38 759 // rest of code here
amiraseman 1:e60b9f116d38 760 break;
amiraseman 1:e60b9f116d38 761 case 2:
amiraseman 1:e60b9f116d38 762 lcd.clear();
amiraseman 1:e60b9f116d38 763 lcd.printString(bufferTime,48,0);
amiraseman 1:e60b9f116d38 764 lcd.printString("Live Data",0,1);
amiraseman 1:e60b9f116d38 765 lcd.printString("Saved Data",20,2);
amiraseman 1:e60b9f116d38 766 lcd.printString("Forecast",0,3);
amiraseman 1:e60b9f116d38 767 lcd.printString("Alarms",0,4);
amiraseman 1:e60b9f116d38 768 lcd.printString("Settings",0,5);
amiraseman 1:e60b9f116d38 769 lcd.drawCircle(5,20,3,1); // x,y,radius,black fill
amiraseman 1:e60b9f116d38 770 // rest of code here
amiraseman 1:e60b9f116d38 771 break;
amiraseman 1:e60b9f116d38 772 case 3:
amiraseman 1:e60b9f116d38 773 lcd.clear();
amiraseman 1:e60b9f116d38 774 lcd.printString(bufferTime,48,0);
amiraseman 1:e60b9f116d38 775 lcd.printString("Live Data",0,1);
amiraseman 1:e60b9f116d38 776 lcd.printString("Saved Data",0,2);
amiraseman 1:e60b9f116d38 777 lcd.printString("Forecast",20,3);
amiraseman 1:e60b9f116d38 778 lcd.printString("Alarms",0,4);
amiraseman 1:e60b9f116d38 779 lcd.printString("Settings",0,5);
amiraseman 1:e60b9f116d38 780 lcd.drawCircle(5,28,3,1); // x,y,radius,black fill
amiraseman 1:e60b9f116d38 781 // rest of code here
amiraseman 1:e60b9f116d38 782 break;
amiraseman 1:e60b9f116d38 783 case 4:
amiraseman 1:e60b9f116d38 784 lcd.clear();
amiraseman 1:e60b9f116d38 785 lcd.printString(bufferTime,48,0);
amiraseman 1:e60b9f116d38 786 lcd.printString("Live Data",0,1);
amiraseman 1:e60b9f116d38 787 lcd.printString("Saved Data",0,2);
amiraseman 1:e60b9f116d38 788 lcd.printString("Forecast",0,3);
amiraseman 1:e60b9f116d38 789 lcd.printString("Alarms",20,4);
amiraseman 1:e60b9f116d38 790 lcd.printString("Settings",0,5);
amiraseman 1:e60b9f116d38 791 lcd.drawCircle(5,36,3,1); // x,y,radius,black fill
amiraseman 1:e60b9f116d38 792 break;
amiraseman 1:e60b9f116d38 793 case 5:
amiraseman 1:e60b9f116d38 794
amiraseman 1:e60b9f116d38 795 lcd.clear();
amiraseman 1:e60b9f116d38 796 lcd.printString(bufferTime,48,0);
amiraseman 1:e60b9f116d38 797 lcd.printString("Live Data",0,1);
amiraseman 1:e60b9f116d38 798 lcd.printString("Saved Data",0,2);
amiraseman 1:e60b9f116d38 799 lcd.printString("Forecast",0,3);
amiraseman 1:e60b9f116d38 800 lcd.printString("Alarms",0,4);
amiraseman 1:e60b9f116d38 801 lcd.printString("Settings",20,5);
amiraseman 1:e60b9f116d38 802 lcd.drawCircle(5,44,3,1); // x,y,radius,black fill
amiraseman 2:1d7ef0f49b35 803 if (button4Flag) {
amiraseman 2:1d7ef0f49b35 804 button4Flag=0;
amiraseman 2:1d7ef0f49b35 805 settingsMenu();
amiraseman 2:1d7ef0f49b35 806 }
amiraseman 1:e60b9f116d38 807 break;
amiraseman 4:783276521952 808 case 6:
amiraseman 4:783276521952 809
amiraseman 4:783276521952 810 lcd.clear();
amiraseman 4:783276521952 811 choice = 1;
amiraseman 4:783276521952 812 break;
amiraseman 1:e60b9f116d38 813 default:
amiraseman 1:e60b9f116d38 814 leds = 15;
amiraseman 1:e60b9f116d38 815 break;
amiraseman 1:e60b9f116d38 816 }
amiraseman 1:e60b9f116d38 817 }
amiraseman 1:e60b9f116d38 818
amiraseman 1:e60b9f116d38 819
amiraseman 1:e60b9f116d38 820
amiraseman 2:1d7ef0f49b35 821
amiraseman 2:1d7ef0f49b35 822
amiraseman 0:d78ac68077c6 823 int main()
amiraseman 0:d78ac68077c6 824 {
amiraseman 0:d78ac68077c6 825
amiraseman 0:d78ac68077c6 826 // initiliase barometer
amiraseman 0:d78ac68077c6 827 bmp180.init();
amiraseman 0:d78ac68077c6 828 lcd.init();
amiraseman 0:d78ac68077c6 829 timer.attach(&timerExpired,1.0);
amiraseman 3:8a559b949470 830 serial.attach(&serialISR);
amiraseman 1:e60b9f116d38 831 button1.rise(&button1Pressed); // call ISR on rising edge (button1pressed)
amiraseman 1:e60b9f116d38 832 button2.rise(&button2Pressed); // call ISR on rising edge (button2pressed)
amiraseman 2:1d7ef0f49b35 833 button3.rise(&button3Pressed);
amiraseman 2:1d7ef0f49b35 834 button4.rise(&button4Pressed);
amiraseman 1:e60b9f116d38 835
amiraseman 4:783276521952 836 set_time(UNIXdate); // initialise time from the calculated UNIX time entered by the user
amiraseman 0:d78ac68077c6 837
amiraseman 6:03f12eda070d 838
amiraseman 6:03f12eda070d 839 powerSaverCheck();
amiraseman 6:03f12eda070d 840
amiraseman 0:d78ac68077c6 841 while(1) {
amiraseman 4:783276521952 842
amiraseman 4:783276521952 843 if (choice > 5) {
amiraseman 4:783276521952 844 choice = 1 ;
amiraseman 4:783276521952 845 }
amiraseman 4:783276521952 846 if (choice < 1) {
amiraseman 4:783276521952 847 choice = 5 ;
amiraseman 4:783276521952 848 }
amiraseman 3:8a559b949470 849 updateTime();
amiraseman 1:e60b9f116d38 850 startMenu();
amiraseman 4:783276521952 851 wait (0.1);
amiraseman 0:d78ac68077c6 852 }
amiraseman 0:d78ac68077c6 853 }
amiraseman 0:d78ac68077c6 854
amiraseman 0:d78ac68077c6 855
amiraseman 0:d78ac68077c6 856