Amir Asemanpayeh / Mbed 2 deprecated WeatherStation

Dependencies:   BMP180 N5110 PowerControl mbed

Committer:
amiraseman
Date:
Thu Apr 09 22:09:09 2015 +0000
Revision:
3:8a559b949470
Parent:
2:1d7ef0f49b35
Child:
4:783276521952
RTC done.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
amiraseman 0:d78ac68077c6 1 #include "mbed.h"
amiraseman 0:d78ac68077c6 2 #include "N5110.h"
amiraseman 0:d78ac68077c6 3 #include "BMP180.h"
amiraseman 0:d78ac68077c6 4 #include "PowerControl/PowerControl.h"
amiraseman 0:d78ac68077c6 5 #include "PowerControl/EthernetPowerControl.h"
amiraseman 0:d78ac68077c6 6
amiraseman 0:d78ac68077c6 7 BMP180 bmp180(p28,p27); // SDA, SCL
amiraseman 0:d78ac68077c6 8 N5110 lcd(p7,p8,p9,p10,p11,p13,p26);
amiraseman 1:e60b9f116d38 9 BusOut leds(LED4,LED3,LED2,LED1);
amiraseman 0:d78ac68077c6 10 Serial serial(USBTX,USBRX);
amiraseman 1:e60b9f116d38 11 InterruptIn button1(p16);
amiraseman 1:e60b9f116d38 12 InterruptIn button2(p17);
amiraseman 2:1d7ef0f49b35 13 InterruptIn button3 (p15);
amiraseman 2:1d7ef0f49b35 14 InterruptIn button4 (p18);
amiraseman 1:e60b9f116d38 15
amiraseman 0:d78ac68077c6 16
amiraseman 0:d78ac68077c6 17 Ticker timer; //Create ticker object for temperature and pressure readings
amiraseman 0:d78ac68077c6 18
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 2:1d7ef0f49b35 26
amiraseman 2:1d7ef0f49b35 27
amiraseman 2:1d7ef0f49b35 28
amiraseman 1:e60b9f116d38 29 int choice=1 ;
amiraseman 0:d78ac68077c6 30 int length;
amiraseman 0:d78ac68077c6 31
amiraseman 3:8a559b949470 32 char rxString[16]; //buffer to store recieved string from serial
amiraseman 0:d78ac68077c6 33 char bufferTime[14]; // buffer to store time
amiraseman 0:d78ac68077c6 34 char bufferDate[14]; //buffer to store date
amiraseman 0:d78ac68077c6 35 char bufferT[14];
amiraseman 0:d78ac68077c6 36 char bufferP[14]; // each character is 6 pixels wide, screen is 84 pixels (84/6 = 14)
amiraseman 0:d78ac68077c6 37 // so can display a string of a maximum 14 characters in length
amiraseman 0:d78ac68077c6 38 // or create formatted strings - ensure they aren't more than 14 characters long
amiraseman 0:d78ac68077c6 39
amiraseman 0:d78ac68077c6 40
amiraseman 0:d78ac68077c6 41
amiraseman 3:8a559b949470 42
amiraseman 1:e60b9f116d38 43 void button1Pressed() //ISR to subtract 1 from the value of choice when the first button is pressed
amiraseman 1:e60b9f116d38 44 {
amiraseman 1:e60b9f116d38 45 choice --;
amiraseman 1:e60b9f116d38 46 if (choice == 0) {
amiraseman 1:e60b9f116d38 47 choice = 5 ;
amiraseman 1:e60b9f116d38 48 }
amiraseman 1:e60b9f116d38 49
amiraseman 1:e60b9f116d38 50 }
amiraseman 1:e60b9f116d38 51
amiraseman 1:e60b9f116d38 52
amiraseman 1:e60b9f116d38 53
amiraseman 1:e60b9f116d38 54 void button2Pressed() //ISR to add 1 to the value of the choice when the second button is pressed
amiraseman 1:e60b9f116d38 55 {
amiraseman 1:e60b9f116d38 56 choice ++;
amiraseman 1:e60b9f116d38 57 if (choice == 6) {
amiraseman 1:e60b9f116d38 58 choice = 1 ;
amiraseman 1:e60b9f116d38 59 }
amiraseman 1:e60b9f116d38 60
amiraseman 1:e60b9f116d38 61 }
amiraseman 0:d78ac68077c6 62
amiraseman 0:d78ac68077c6 63
amiraseman 2:1d7ef0f49b35 64
amiraseman 2:1d7ef0f49b35 65 void button3Pressed()
amiraseman 2:1d7ef0f49b35 66 {
amiraseman 2:1d7ef0f49b35 67 button3Flag=1;
amiraseman 2:1d7ef0f49b35 68 }
amiraseman 2:1d7ef0f49b35 69
amiraseman 2:1d7ef0f49b35 70
amiraseman 2:1d7ef0f49b35 71
amiraseman 2:1d7ef0f49b35 72 void button4Pressed()
amiraseman 2:1d7ef0f49b35 73 {
amiraseman 2:1d7ef0f49b35 74 button4Flag = 1 ;
amiraseman 2:1d7ef0f49b35 75 }
amiraseman 2:1d7ef0f49b35 76
amiraseman 2:1d7ef0f49b35 77
amiraseman 2:1d7ef0f49b35 78
amiraseman 2:1d7ef0f49b35 79
amiraseman 2:1d7ef0f49b35 80
amiraseman 3:8a559b949470 81 void serialISR()
amiraseman 0:d78ac68077c6 82 {
amiraseman 3:8a559b949470 83 //reads rx string into buffer when a serial interrupt occurs
amiraseman 3:8a559b949470 84 serial.gets(rxString,16);
amiraseman 3:8a559b949470 85 //set flag
amiraseman 3:8a559b949470 86 setTimeFlag=1;
amiraseman 3:8a559b949470 87 }
amiraseman 3:8a559b949470 88
amiraseman 3:8a559b949470 89
amiraseman 3:8a559b949470 90
amiraseman 3:8a559b949470 91 void setTime() // sets the time every second
amiraseman 3:8a559b949470 92 {
amiraseman 3:8a559b949470 93 //print time for debugging
amiraseman 3:8a559b949470 94 serial.printf("set_time -%s ",rxString);
amiraseman 3:8a559b949470 95 //atoi() converts a string to an integer
amiraseman 3:8a559b949470 96 int time = atoi(rxString);
amiraseman 3:8a559b949470 97 //update the time
amiraseman 3:8a559b949470 98 set_time(time);
amiraseman 0:d78ac68077c6 99 }
amiraseman 0:d78ac68077c6 100
amiraseman 0:d78ac68077c6 101
amiraseman 0:d78ac68077c6 102
amiraseman 3:8a559b949470 103 void updateTime()
amiraseman 0:d78ac68077c6 104 {
amiraseman 3:8a559b949470 105 time_t seconds = time(NULL); // get current time
amiraseman 0:d78ac68077c6 106 // format time into a string (time and date)
amiraseman 1:e60b9f116d38 107 strftime(bufferTime, 14 , "%I:%M", localtime(&seconds));
amiraseman 0:d78ac68077c6 108 strftime(bufferDate, 14 , "%d/%m/%y", localtime(&seconds));
amiraseman 3:8a559b949470 109
amiraseman 3:8a559b949470 110 if (setTimeFlag) {
amiraseman 3:8a559b949470 111 setTimeFlag=0;
amiraseman 0:d78ac68077c6 112 }
amiraseman 0:d78ac68077c6 113 }
amiraseman 0:d78ac68077c6 114
amiraseman 0:d78ac68077c6 115
amiraseman 1:e60b9f116d38 116 void timerExpired() // ISR which sets the timer flag (flag used to display the buffers on LCD)
amiraseman 0:d78ac68077c6 117 {
amiraseman 0:d78ac68077c6 118 timerFlag=1;
amiraseman 0:d78ac68077c6 119 }
amiraseman 0:d78ac68077c6 120
amiraseman 0:d78ac68077c6 121
amiraseman 0:d78ac68077c6 122
amiraseman 1:e60b9f116d38 123 void readData() //Imports the data and saves them to the bufferss
amiraseman 0:d78ac68077c6 124 {
amiraseman 0:d78ac68077c6 125
amiraseman 0:d78ac68077c6 126 Measurement measurement; // measurement structure declared in BMP180 class
amiraseman 0:d78ac68077c6 127
amiraseman 0:d78ac68077c6 128 // read values (T in Celsius and P in mb) and print over serial port
amiraseman 0:d78ac68077c6 129 measurement = bmp180.readValues();
amiraseman 0:d78ac68077c6 130 // serial.printf("T = %.2f C P = %.2f mb\n",measurement.temperature,measurement.pressure);
amiraseman 0:d78ac68077c6 131
amiraseman 0:d78ac68077c6 132 int temperature = measurement.temperature;
amiraseman 0:d78ac68077c6 133 length = sprintf(bufferT,"T = %0.1d C",temperature); // print formatted data to buffer
amiraseman 0:d78ac68077c6 134 // it is important the format specifier ensures the length will fit in the buffer
amiraseman 0:d78ac68077c6 135
amiraseman 0:d78ac68077c6 136 float pressure = measurement.pressure; // same idea with floats
amiraseman 0:d78ac68077c6 137 length = sprintf(bufferP,"P = %.2f mb",pressure);
amiraseman 0:d78ac68077c6 138
amiraseman 0:d78ac68077c6 139
amiraseman 0:d78ac68077c6 140 }
amiraseman 0:d78ac68077c6 141
amiraseman 0:d78ac68077c6 142
amiraseman 1:e60b9f116d38 143
amiraseman 1:e60b9f116d38 144
amiraseman 1:e60b9f116d38 145 void displayData() //Prints the buffers on the LCD
amiraseman 0:d78ac68077c6 146 {
amiraseman 0:d78ac68077c6 147 if (length <= 14) { // if string will fit on display
amiraseman 0:d78ac68077c6 148 lcd.printString(bufferT,0,1); // display on screen
amiraseman 0:d78ac68077c6 149 lcd.printString(bufferP,0,2);
amiraseman 0:d78ac68077c6 150 lcd.printString(bufferTime,0,3);
amiraseman 0:d78ac68077c6 151 lcd.printString(bufferDate,0,4);
amiraseman 0:d78ac68077c6 152 }
amiraseman 0:d78ac68077c6 153 }
amiraseman 0:d78ac68077c6 154
amiraseman 0:d78ac68077c6 155
amiraseman 1:e60b9f116d38 156
amiraseman 1:e60b9f116d38 157
amiraseman 1:e60b9f116d38 158 void updateData() //
amiraseman 0:d78ac68077c6 159 {
amiraseman 0:d78ac68077c6 160 if (timerFlag) {
amiraseman 0:d78ac68077c6 161 timerFlag=0;
amiraseman 0:d78ac68077c6 162 readData();
amiraseman 0:d78ac68077c6 163 displayData();
amiraseman 0:d78ac68077c6 164 }
amiraseman 0:d78ac68077c6 165 Sleep();
amiraseman 0:d78ac68077c6 166 }
amiraseman 0:d78ac68077c6 167
amiraseman 0:d78ac68077c6 168
amiraseman 2:1d7ef0f49b35 169
amiraseman 3:8a559b949470 170 void timeDate()
amiraseman 3:8a559b949470 171 {
amiraseman 3:8a559b949470 172
amiraseman 3:8a559b949470 173
amiraseman 3:8a559b949470 174 choice = 1 ;
amiraseman 3:8a559b949470 175 while (1){
amiraseman 3:8a559b949470 176
amiraseman 3:8a559b949470 177 switch (choice) {
amiraseman 3:8a559b949470 178 case 1:
amiraseman 3:8a559b949470 179
amiraseman 3:8a559b949470 180 lcd.clear();
amiraseman 3:8a559b949470 181 lcd.printString("Minute :",20,0);
amiraseman 3:8a559b949470 182 lcd.printString("Hour :",0,1);
amiraseman 3:8a559b949470 183 lcd.printString("Day :",0,2);
amiraseman 3:8a559b949470 184 lcd.printString("Month :",0,3);
amiraseman 3:8a559b949470 185 lcd.printString("Year :",0,4);
amiraseman 3:8a559b949470 186 lcd.drawCircle(5,12,3,1); // x,y,radius,black fill
amiraseman 3:8a559b949470 187
amiraseman 3:8a559b949470 188 // rest of code here
amiraseman 3:8a559b949470 189 break;
amiraseman 3:8a559b949470 190 case 2:
amiraseman 3:8a559b949470 191 lcd.clear();
amiraseman 3:8a559b949470 192 lcd.printString(bufferTime,48,0);
amiraseman 3:8a559b949470 193 lcd.printString("Live Data",0,1);
amiraseman 3:8a559b949470 194 lcd.printString("Saved Data",20,2);
amiraseman 3:8a559b949470 195 lcd.printString("Forecast",0,3);
amiraseman 3:8a559b949470 196 lcd.printString("Alarms",0,4);
amiraseman 3:8a559b949470 197 lcd.printString("Settings",0,5);
amiraseman 3:8a559b949470 198 lcd.drawCircle(5,20,3,1); // x,y,radius,black fill
amiraseman 3:8a559b949470 199 // rest of code here
amiraseman 3:8a559b949470 200 break;
amiraseman 3:8a559b949470 201 case 3:
amiraseman 3:8a559b949470 202 lcd.clear();
amiraseman 3:8a559b949470 203 lcd.printString(bufferTime,48,0);
amiraseman 3:8a559b949470 204 lcd.printString("Live Data",0,1);
amiraseman 3:8a559b949470 205 lcd.printString("Saved Data",0,2);
amiraseman 3:8a559b949470 206 lcd.printString("Forecast",20,3);
amiraseman 3:8a559b949470 207 lcd.printString("Alarms",0,4);
amiraseman 3:8a559b949470 208 lcd.printString("Settings",0,5);
amiraseman 3:8a559b949470 209 lcd.drawCircle(5,28,3,1); // x,y,radius,black fill
amiraseman 3:8a559b949470 210 // rest of code here
amiraseman 3:8a559b949470 211 break;
amiraseman 3:8a559b949470 212 case 4:
amiraseman 3:8a559b949470 213 lcd.clear();
amiraseman 3:8a559b949470 214 lcd.printString(bufferTime,48,0);
amiraseman 3:8a559b949470 215 lcd.printString("Live Data",0,1);
amiraseman 3:8a559b949470 216 lcd.printString("Saved Data",0,2);
amiraseman 3:8a559b949470 217 lcd.printString("Forecast",0,3);
amiraseman 3:8a559b949470 218 lcd.printString("Alarms",20,4);
amiraseman 3:8a559b949470 219 lcd.printString("Settings",0,5);
amiraseman 3:8a559b949470 220 lcd.drawCircle(5,36,3,1); // x,y,radius,black fill
amiraseman 3:8a559b949470 221 break;
amiraseman 3:8a559b949470 222 case 5:
amiraseman 3:8a559b949470 223
amiraseman 3:8a559b949470 224 lcd.clear();
amiraseman 3:8a559b949470 225 lcd.printString(bufferTime,48,0);
amiraseman 3:8a559b949470 226 lcd.printString("Live Data",0,1);
amiraseman 3:8a559b949470 227 lcd.printString("Saved Data",0,2);
amiraseman 3:8a559b949470 228 lcd.printString("Forecast",0,3);
amiraseman 3:8a559b949470 229 lcd.printString("Alarms",0,4);
amiraseman 3:8a559b949470 230 lcd.printString("Settings",20,5);
amiraseman 3:8a559b949470 231 lcd.drawCircle(5,44,3,1); // x,y,radius,black fill
amiraseman 3:8a559b949470 232 if (button4Flag) {
amiraseman 3:8a559b949470 233 button4Flag=0;
amiraseman 3:8a559b949470 234 }
amiraseman 3:8a559b949470 235 break;
amiraseman 3:8a559b949470 236 default:
amiraseman 3:8a559b949470 237 leds = 15;
amiraseman 3:8a559b949470 238 break;
amiraseman 3:8a559b949470 239 }
amiraseman 3:8a559b949470 240
amiraseman 3:8a559b949470 241 }
amiraseman 3:8a559b949470 242 }
amiraseman 3:8a559b949470 243
amiraseman 3:8a559b949470 244
amiraseman 3:8a559b949470 245
amiraseman 2:1d7ef0f49b35 246
amiraseman 2:1d7ef0f49b35 247 void settingsMenu()
amiraseman 2:1d7ef0f49b35 248 {
amiraseman 2:1d7ef0f49b35 249
amiraseman 2:1d7ef0f49b35 250
amiraseman 2:1d7ef0f49b35 251 choice = 1 ;
amiraseman 2:1d7ef0f49b35 252 while(1) {
amiraseman 3:8a559b949470 253 updateTime();
amiraseman 2:1d7ef0f49b35 254 switch (choice) {
amiraseman 2:1d7ef0f49b35 255 case 1:
amiraseman 2:1d7ef0f49b35 256
amiraseman 2:1d7ef0f49b35 257 lcd.clear();
amiraseman 2:1d7ef0f49b35 258 lcd.printString(bufferTime,48,0);
amiraseman 2:1d7ef0f49b35 259 lcd.printString("Time/Date",10,1);
amiraseman 2:1d7ef0f49b35 260 lcd.printString("Units",0,2);
amiraseman 2:1d7ef0f49b35 261 lcd.printString("Brightness",0,3);
amiraseman 2:1d7ef0f49b35 262 lcd.printString("Power Saver",0,4);
amiraseman 2:1d7ef0f49b35 263 lcd.printString("Log Interval",0,5);
amiraseman 2:1d7ef0f49b35 264 lcd.drawCircle(5,12,3,1); // x,y,radius,black fill
amiraseman 2:1d7ef0f49b35 265
amiraseman 2:1d7ef0f49b35 266 // rest of code here
amiraseman 2:1d7ef0f49b35 267 break;
amiraseman 2:1d7ef0f49b35 268 case 2:
amiraseman 2:1d7ef0f49b35 269 lcd.clear();
amiraseman 2:1d7ef0f49b35 270 lcd.printString(bufferTime,48,0);
amiraseman 2:1d7ef0f49b35 271 lcd.printString("Time/Date",0,1);
amiraseman 2:1d7ef0f49b35 272 lcd.printString("Units",10,2);
amiraseman 2:1d7ef0f49b35 273 lcd.printString("Brightness",0,3);
amiraseman 2:1d7ef0f49b35 274 lcd.printString("Power Saver",0,4);
amiraseman 2:1d7ef0f49b35 275 lcd.printString("Log Interval",0,5);
amiraseman 2:1d7ef0f49b35 276 lcd.drawCircle(5,20,3,1); // x,y,radius,black fill
amiraseman 2:1d7ef0f49b35 277 // rest of code here
amiraseman 2:1d7ef0f49b35 278 break;
amiraseman 2:1d7ef0f49b35 279 case 3:
amiraseman 2:1d7ef0f49b35 280 lcd.clear();
amiraseman 2:1d7ef0f49b35 281 lcd.printString(bufferTime,48,0);
amiraseman 2:1d7ef0f49b35 282 lcd.printString("Time/Date",0,1);
amiraseman 2:1d7ef0f49b35 283 lcd.printString("Units",0,2);
amiraseman 2:1d7ef0f49b35 284 lcd.printString("Brightness",10,3);
amiraseman 2:1d7ef0f49b35 285 lcd.printString("Power Saver",0,4);
amiraseman 2:1d7ef0f49b35 286 lcd.printString("Log Interval",0,5);
amiraseman 2:1d7ef0f49b35 287 lcd.drawCircle(5,28,3,1); // x,y,radius,black fill
amiraseman 2:1d7ef0f49b35 288 // rest of code here
amiraseman 2:1d7ef0f49b35 289 break;
amiraseman 2:1d7ef0f49b35 290 case 4:
amiraseman 2:1d7ef0f49b35 291 lcd.clear();
amiraseman 2:1d7ef0f49b35 292 lcd.printString(bufferTime,48,0);
amiraseman 2:1d7ef0f49b35 293 lcd.printString("Time/Date",0,1);
amiraseman 2:1d7ef0f49b35 294 lcd.printString("Units",0,2);
amiraseman 2:1d7ef0f49b35 295 lcd.printString("Brightness",0,3);
amiraseman 2:1d7ef0f49b35 296 lcd.printString("Power Saver",10,4);
amiraseman 2:1d7ef0f49b35 297 lcd.printString("Log Interval",0,5);
amiraseman 2:1d7ef0f49b35 298 lcd.drawCircle(5,36,3,1); // x,y,radius,black fill
amiraseman 2:1d7ef0f49b35 299 break;
amiraseman 2:1d7ef0f49b35 300 case 5:
amiraseman 2:1d7ef0f49b35 301
amiraseman 2:1d7ef0f49b35 302 lcd.clear();
amiraseman 2:1d7ef0f49b35 303
amiraseman 2:1d7ef0f49b35 304 lcd.printString(bufferTime,48,0);
amiraseman 2:1d7ef0f49b35 305 lcd.printString("Time/Date",0,1);
amiraseman 2:1d7ef0f49b35 306 lcd.printString("Units",0,2);
amiraseman 2:1d7ef0f49b35 307 lcd.printString("Brightness",0,3);
amiraseman 2:1d7ef0f49b35 308 lcd.printString("Power Saver",0,4);
amiraseman 2:1d7ef0f49b35 309 lcd.printString("Log Interval",10,5);
amiraseman 2:1d7ef0f49b35 310 lcd.drawCircle(5,44,3,1); // x,y,radius,black fill
amiraseman 2:1d7ef0f49b35 311 break;
amiraseman 2:1d7ef0f49b35 312 default:
amiraseman 2:1d7ef0f49b35 313 leds = 15;
amiraseman 2:1d7ef0f49b35 314 break;
amiraseman 2:1d7ef0f49b35 315 }
amiraseman 2:1d7ef0f49b35 316 wait (0.5);
amiraseman 2:1d7ef0f49b35 317 if (button3Flag){
amiraseman 2:1d7ef0f49b35 318 button3Flag=0;
amiraseman 2:1d7ef0f49b35 319 break;
amiraseman 2:1d7ef0f49b35 320 }
amiraseman 2:1d7ef0f49b35 321 }
amiraseman 2:1d7ef0f49b35 322 }
amiraseman 2:1d7ef0f49b35 323
amiraseman 2:1d7ef0f49b35 324
amiraseman 1:e60b9f116d38 325 void startMenu() //The menu displayed at the beginning
amiraseman 1:e60b9f116d38 326 {
amiraseman 1:e60b9f116d38 327
amiraseman 1:e60b9f116d38 328 switch (choice) {
amiraseman 1:e60b9f116d38 329 case 1:
amiraseman 1:e60b9f116d38 330
amiraseman 1:e60b9f116d38 331 lcd.clear();
amiraseman 1:e60b9f116d38 332 lcd.printString(bufferTime,48,0);
amiraseman 1:e60b9f116d38 333 lcd.printString("Live Data",20,1);
amiraseman 1:e60b9f116d38 334 lcd.printString("Saved Data",0,2);
amiraseman 1:e60b9f116d38 335 lcd.printString("Forecast",0,3);
amiraseman 1:e60b9f116d38 336 lcd.printString("Alarms",0,4);
amiraseman 1:e60b9f116d38 337 lcd.printString("Settings",0,5);
amiraseman 1:e60b9f116d38 338 lcd.drawCircle(5,12,3,1); // x,y,radius,black fill
amiraseman 1:e60b9f116d38 339
amiraseman 1:e60b9f116d38 340 // rest of code here
amiraseman 1:e60b9f116d38 341 break;
amiraseman 1:e60b9f116d38 342 case 2:
amiraseman 1:e60b9f116d38 343 lcd.clear();
amiraseman 1:e60b9f116d38 344 lcd.printString(bufferTime,48,0);
amiraseman 1:e60b9f116d38 345 lcd.printString("Live Data",0,1);
amiraseman 1:e60b9f116d38 346 lcd.printString("Saved Data",20,2);
amiraseman 1:e60b9f116d38 347 lcd.printString("Forecast",0,3);
amiraseman 1:e60b9f116d38 348 lcd.printString("Alarms",0,4);
amiraseman 1:e60b9f116d38 349 lcd.printString("Settings",0,5);
amiraseman 1:e60b9f116d38 350 lcd.drawCircle(5,20,3,1); // x,y,radius,black fill
amiraseman 1:e60b9f116d38 351 // rest of code here
amiraseman 1:e60b9f116d38 352 break;
amiraseman 1:e60b9f116d38 353 case 3:
amiraseman 1:e60b9f116d38 354 lcd.clear();
amiraseman 1:e60b9f116d38 355 lcd.printString(bufferTime,48,0);
amiraseman 1:e60b9f116d38 356 lcd.printString("Live Data",0,1);
amiraseman 1:e60b9f116d38 357 lcd.printString("Saved Data",0,2);
amiraseman 1:e60b9f116d38 358 lcd.printString("Forecast",20,3);
amiraseman 1:e60b9f116d38 359 lcd.printString("Alarms",0,4);
amiraseman 1:e60b9f116d38 360 lcd.printString("Settings",0,5);
amiraseman 1:e60b9f116d38 361 lcd.drawCircle(5,28,3,1); // x,y,radius,black fill
amiraseman 1:e60b9f116d38 362 // rest of code here
amiraseman 1:e60b9f116d38 363 break;
amiraseman 1:e60b9f116d38 364 case 4:
amiraseman 1:e60b9f116d38 365 lcd.clear();
amiraseman 1:e60b9f116d38 366 lcd.printString(bufferTime,48,0);
amiraseman 1:e60b9f116d38 367 lcd.printString("Live Data",0,1);
amiraseman 1:e60b9f116d38 368 lcd.printString("Saved Data",0,2);
amiraseman 1:e60b9f116d38 369 lcd.printString("Forecast",0,3);
amiraseman 1:e60b9f116d38 370 lcd.printString("Alarms",20,4);
amiraseman 1:e60b9f116d38 371 lcd.printString("Settings",0,5);
amiraseman 1:e60b9f116d38 372 lcd.drawCircle(5,36,3,1); // x,y,radius,black fill
amiraseman 1:e60b9f116d38 373 break;
amiraseman 1:e60b9f116d38 374 case 5:
amiraseman 1:e60b9f116d38 375
amiraseman 1:e60b9f116d38 376 lcd.clear();
amiraseman 1:e60b9f116d38 377 lcd.printString(bufferTime,48,0);
amiraseman 1:e60b9f116d38 378 lcd.printString("Live Data",0,1);
amiraseman 1:e60b9f116d38 379 lcd.printString("Saved Data",0,2);
amiraseman 1:e60b9f116d38 380 lcd.printString("Forecast",0,3);
amiraseman 1:e60b9f116d38 381 lcd.printString("Alarms",0,4);
amiraseman 1:e60b9f116d38 382 lcd.printString("Settings",20,5);
amiraseman 1:e60b9f116d38 383 lcd.drawCircle(5,44,3,1); // x,y,radius,black fill
amiraseman 2:1d7ef0f49b35 384 if (button4Flag) {
amiraseman 2:1d7ef0f49b35 385 button4Flag=0;
amiraseman 2:1d7ef0f49b35 386 settingsMenu();
amiraseman 2:1d7ef0f49b35 387 }
amiraseman 1:e60b9f116d38 388 break;
amiraseman 1:e60b9f116d38 389 default:
amiraseman 1:e60b9f116d38 390 leds = 15;
amiraseman 1:e60b9f116d38 391 break;
amiraseman 1:e60b9f116d38 392 }
amiraseman 1:e60b9f116d38 393 }
amiraseman 1:e60b9f116d38 394
amiraseman 1:e60b9f116d38 395
amiraseman 1:e60b9f116d38 396
amiraseman 2:1d7ef0f49b35 397
amiraseman 2:1d7ef0f49b35 398
amiraseman 0:d78ac68077c6 399 int main()
amiraseman 0:d78ac68077c6 400 {
amiraseman 0:d78ac68077c6 401
amiraseman 0:d78ac68077c6 402 // initiliase barometer
amiraseman 0:d78ac68077c6 403 bmp180.init();
amiraseman 0:d78ac68077c6 404 lcd.init();
amiraseman 0:d78ac68077c6 405 timer.attach(&timerExpired,1.0);
amiraseman 3:8a559b949470 406 serial.attach(&serialISR);
amiraseman 1:e60b9f116d38 407 button1.rise(&button1Pressed); // call ISR on rising edge (button1pressed)
amiraseman 1:e60b9f116d38 408 button2.rise(&button2Pressed); // call ISR on rising edge (button2pressed)
amiraseman 2:1d7ef0f49b35 409 button3.rise(&button3Pressed);
amiraseman 2:1d7ef0f49b35 410 button4.rise(&button4Pressed);
amiraseman 1:e60b9f116d38 411
amiraseman 0:d78ac68077c6 412 set_time(0); // initialise time to 1st January 1970///// This is where we should set our time
amiraseman 0:d78ac68077c6 413
amiraseman 0:d78ac68077c6 414 while(1) {
amiraseman 3:8a559b949470 415 updateTime();
amiraseman 1:e60b9f116d38 416 //updateData();
amiraseman 1:e60b9f116d38 417 startMenu();
amiraseman 2:1d7ef0f49b35 418 wait (0.5);
amiraseman 0:d78ac68077c6 419 }
amiraseman 0:d78ac68077c6 420 }
amiraseman 0:d78ac68077c6 421
amiraseman 0:d78ac68077c6 422
amiraseman 0:d78ac68077c6 423