Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: BMP180 N5110 PowerControl mbed
main.cpp@7:328dc986484f, 2015-04-12 (annotated)
- 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?
| User | Revision | Line number | New 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 |