Amir Asemanpayeh / Mbed 2 deprecated WeatherStation

Dependencies:   BMP180 N5110 PowerControl mbed

Committer:
amiraseman
Date:
Mon Apr 20 13:16:26 2015 +0000
Revision:
8:8b810c29eb7b
Parent:
7:328dc986484f
Child:
9:d1691d971f63
just the initial commit of the day before making any changes;

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