Amir Asemanpayeh / Mbed 2 deprecated WeatherStation

Dependencies:   BMP180 N5110 PowerControl mbed

Committer:
amiraseman
Date:
Sun Apr 12 13:24:23 2015 +0000
Revision:
7:328dc986484f
Parent:
6:03f12eda070d
Child:
8:8b810c29eb7b
Data Logger setting completed

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