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