Temperature and Pressure logger.

Dependencies:   BMP180 N5110 PowerControl beep mbed

Committer:
takis94
Date:
Mon May 11 14:10:17 2015 +0000
Revision:
2:6f7b97e42fce
Parent:
1:d320c79324fe
Final Code.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
takis94 0:ec64ecaac130 1 /**
takis94 0:ec64ecaac130 2 @file main.cpp
takis94 0:ec64ecaac130 3
takis94 0:ec64ecaac130 4 @brief Program implementation
takis94 0:ec64ecaac130 5
takis94 0:ec64ecaac130 6 */
takis94 0:ec64ecaac130 7 #include "main.h"
takis94 0:ec64ecaac130 8
takis94 0:ec64ecaac130 9 void update()
takis94 0:ec64ecaac130 10 {
takis94 1:d320c79324fe 11 if (temperature <= -20.0) { // for temperatures -20 and below
takis94 0:ec64ecaac130 12
takis94 1:d320c79324fe 13 lcd.drawCircle(WIDTH/1.1,HEIGHT/1.2,5,0); // x,y,radius,no fill
takis94 1:d320c79324fe 14 //origin x,y,width,height,type
takis94 1:d320c79324fe 15 lcd.drawRect(74,5,4,30,0); // transparent, just outline
takis94 0:ec64ecaac130 16 }
takis94 1:d320c79324fe 17 else if (temperature >-20.0 && temperature <= -10.0) { // for temperatures between -20 and -10
takis94 0:ec64ecaac130 18
takis94 1:d320c79324fe 19 lcd.drawCircle(WIDTH/1.1,HEIGHT/1.2,5,1); // x,y,radius,black fill
takis94 1:d320c79324fe 20 //origin x,y,width,height,type
takis94 1:d320c79324fe 21 lcd.drawRect(74,5,4,30,0); // transparent, just outline
takis94 0:ec64ecaac130 22 }
takis94 1:d320c79324fe 23 else if (temperature >-10.0 && temperature <= 0.0) { // for temperatures between -10 and 0
takis94 0:ec64ecaac130 24
takis94 1:d320c79324fe 25 lcd.drawCircle(WIDTH/1.1,HEIGHT/1.2,5,1); // x,y,radius,black fill
takis94 1:d320c79324fe 26 //origin x,y,width,height,type
takis94 1:d320c79324fe 27 lcd.drawRect(74,5,4,30,0); // transparent, just outline
takis94 0:ec64ecaac130 28 lcd.setPixel(75,34);
takis94 0:ec64ecaac130 29 lcd.setPixel(76,34);
takis94 0:ec64ecaac130 30 lcd.setPixel(77,34);
takis94 0:ec64ecaac130 31 lcd.setPixel(75,33);
takis94 0:ec64ecaac130 32 lcd.setPixel(76,33);
takis94 0:ec64ecaac130 33 lcd.setPixel(77,33);
takis94 0:ec64ecaac130 34 }
takis94 1:d320c79324fe 35 else if (temperature >0.0 && temperature <= 5.0) { // for temperatures between 0 and 5
takis94 0:ec64ecaac130 36
takis94 1:d320c79324fe 37 lcd.drawCircle(WIDTH/1.1,HEIGHT/1.2,5,1); // x,y,radius,black fill
takis94 1:d320c79324fe 38 //origin x,y,width,height,type
takis94 1:d320c79324fe 39 lcd.drawRect(74,5,4,30,0); // transparent, just outline
takis94 0:ec64ecaac130 40 lcd.setPixel(75,34);
takis94 0:ec64ecaac130 41 lcd.setPixel(76,34);
takis94 0:ec64ecaac130 42 lcd.setPixel(77,34);
takis94 0:ec64ecaac130 43 lcd.setPixel(75,33);
takis94 0:ec64ecaac130 44 lcd.setPixel(76,33);
takis94 0:ec64ecaac130 45 lcd.setPixel(77,33);
takis94 0:ec64ecaac130 46 lcd.setPixel(75,32);
takis94 0:ec64ecaac130 47 lcd.setPixel(76,32);
takis94 0:ec64ecaac130 48 lcd.setPixel(77,32);
takis94 0:ec64ecaac130 49 lcd.setPixel(75,31);
takis94 0:ec64ecaac130 50 lcd.setPixel(76,31);
takis94 0:ec64ecaac130 51 lcd.setPixel(77,31);
takis94 0:ec64ecaac130 52 }
takis94 1:d320c79324fe 53 else if (temperature >5.0 && temperature <= 10.0) { // for temperatures between 5 and 10
takis94 0:ec64ecaac130 54
takis94 1:d320c79324fe 55 lcd.drawCircle(WIDTH/1.1,HEIGHT/1.2,5,1); // x,y,radius,black fill
takis94 1:d320c79324fe 56 //origin x,y,width,height,type
takis94 1:d320c79324fe 57 lcd.drawRect(74,5,4,30,0); // transparent, just outline
takis94 0:ec64ecaac130 58 lcd.setPixel(75,34);
takis94 0:ec64ecaac130 59 lcd.setPixel(76,34);
takis94 0:ec64ecaac130 60 lcd.setPixel(77,34);
takis94 0:ec64ecaac130 61 lcd.setPixel(75,33);
takis94 0:ec64ecaac130 62 lcd.setPixel(76,33);
takis94 0:ec64ecaac130 63 lcd.setPixel(77,33);
takis94 0:ec64ecaac130 64 lcd.setPixel(75,32);
takis94 0:ec64ecaac130 65 lcd.setPixel(76,32);
takis94 0:ec64ecaac130 66 lcd.setPixel(77,32);
takis94 0:ec64ecaac130 67 lcd.setPixel(75,31);
takis94 0:ec64ecaac130 68 lcd.setPixel(76,31);
takis94 0:ec64ecaac130 69 lcd.setPixel(77,31);
takis94 0:ec64ecaac130 70 lcd.setPixel(75,30);
takis94 0:ec64ecaac130 71 lcd.setPixel(76,30);
takis94 0:ec64ecaac130 72 lcd.setPixel(77,30);
takis94 0:ec64ecaac130 73 lcd.setPixel(75,29);
takis94 0:ec64ecaac130 74 lcd.setPixel(76,29);
takis94 0:ec64ecaac130 75 lcd.setPixel(77,29);
takis94 0:ec64ecaac130 76 }
takis94 1:d320c79324fe 77 else if (temperature >10.0 && temperature <= 15.0) { // for temperatures between 10 and 15
takis94 0:ec64ecaac130 78
takis94 1:d320c79324fe 79 lcd.drawCircle(WIDTH/1.1,HEIGHT/1.2,5,1); // x,y,radius,black fill
takis94 1:d320c79324fe 80 //origin x,y,width,height,type
takis94 1:d320c79324fe 81 lcd.drawRect(74,5,4,30,0); //transparent, just outline
takis94 0:ec64ecaac130 82 lcd.setPixel(75,34);
takis94 0:ec64ecaac130 83 lcd.setPixel(76,34);
takis94 0:ec64ecaac130 84 lcd.setPixel(77,34);
takis94 0:ec64ecaac130 85 lcd.setPixel(75,33);
takis94 0:ec64ecaac130 86 lcd.setPixel(76,33);
takis94 0:ec64ecaac130 87 lcd.setPixel(77,33);
takis94 0:ec64ecaac130 88 lcd.setPixel(75,32);
takis94 0:ec64ecaac130 89 lcd.setPixel(76,32);
takis94 0:ec64ecaac130 90 lcd.setPixel(77,32);
takis94 0:ec64ecaac130 91 lcd.setPixel(75,31);
takis94 0:ec64ecaac130 92 lcd.setPixel(76,31);
takis94 0:ec64ecaac130 93 lcd.setPixel(77,31);
takis94 0:ec64ecaac130 94 lcd.setPixel(75,30);
takis94 0:ec64ecaac130 95 lcd.setPixel(76,30);
takis94 0:ec64ecaac130 96 lcd.setPixel(77,30);
takis94 0:ec64ecaac130 97 lcd.setPixel(75,29);
takis94 0:ec64ecaac130 98 lcd.setPixel(76,29);
takis94 0:ec64ecaac130 99 lcd.setPixel(77,29);
takis94 0:ec64ecaac130 100 lcd.setPixel(75,28);
takis94 0:ec64ecaac130 101 lcd.setPixel(76,28);
takis94 0:ec64ecaac130 102 lcd.setPixel(77,28);
takis94 0:ec64ecaac130 103 lcd.setPixel(75,27);
takis94 0:ec64ecaac130 104 lcd.setPixel(76,27);
takis94 0:ec64ecaac130 105 lcd.setPixel(77,27);
takis94 0:ec64ecaac130 106 }
takis94 1:d320c79324fe 107 else if (temperature >15.0 && temperature <= 20.0) { // for temperatures between 15 and 20
takis94 0:ec64ecaac130 108
takis94 1:d320c79324fe 109 lcd.drawCircle(WIDTH/1.1,HEIGHT/1.2,5,1); // x,y,radius,black fill
takis94 1:d320c79324fe 110 //origin x,y,width,height,type
takis94 1:d320c79324fe 111 lcd.drawRect(74,5,4,30,0); // transparent, just outline
takis94 0:ec64ecaac130 112 lcd.setPixel(75,34);
takis94 0:ec64ecaac130 113 lcd.setPixel(76,34);
takis94 0:ec64ecaac130 114 lcd.setPixel(77,34);
takis94 0:ec64ecaac130 115 lcd.setPixel(75,33);
takis94 0:ec64ecaac130 116 lcd.setPixel(76,33);
takis94 0:ec64ecaac130 117 lcd.setPixel(77,33);
takis94 0:ec64ecaac130 118 lcd.setPixel(75,32);
takis94 0:ec64ecaac130 119 lcd.setPixel(76,32);
takis94 0:ec64ecaac130 120 lcd.setPixel(77,32);
takis94 0:ec64ecaac130 121 lcd.setPixel(75,31);
takis94 0:ec64ecaac130 122 lcd.setPixel(76,31);
takis94 0:ec64ecaac130 123 lcd.setPixel(77,31);
takis94 0:ec64ecaac130 124 lcd.setPixel(75,30);
takis94 0:ec64ecaac130 125 lcd.setPixel(76,30);
takis94 0:ec64ecaac130 126 lcd.setPixel(77,30);
takis94 0:ec64ecaac130 127 lcd.setPixel(75,29);
takis94 0:ec64ecaac130 128 lcd.setPixel(76,29);
takis94 0:ec64ecaac130 129 lcd.setPixel(77,29);
takis94 0:ec64ecaac130 130 lcd.setPixel(75,28);
takis94 0:ec64ecaac130 131 lcd.setPixel(76,28);
takis94 0:ec64ecaac130 132 lcd.setPixel(77,28);
takis94 0:ec64ecaac130 133 lcd.setPixel(75,27);
takis94 0:ec64ecaac130 134 lcd.setPixel(76,27);
takis94 0:ec64ecaac130 135 lcd.setPixel(77,27);
takis94 0:ec64ecaac130 136 lcd.setPixel(75,26);
takis94 0:ec64ecaac130 137 lcd.setPixel(76,26);
takis94 0:ec64ecaac130 138 lcd.setPixel(77,26);
takis94 0:ec64ecaac130 139 lcd.setPixel(75,25);
takis94 0:ec64ecaac130 140 lcd.setPixel(76,25);
takis94 0:ec64ecaac130 141 lcd.setPixel(77,25);
takis94 0:ec64ecaac130 142 }
takis94 1:d320c79324fe 143 else if (temperature >20.0 && temperature <= 25.0) { // for temperatures between 20 and 25
takis94 0:ec64ecaac130 144
takis94 1:d320c79324fe 145 lcd.drawCircle(WIDTH/1.1,HEIGHT/1.2,5,1); // x,y,radius,black fill
takis94 1:d320c79324fe 146 //origin x,y,width,height,type
takis94 1:d320c79324fe 147 lcd.drawRect(74,5,4,30,0); // transparent, just outline
takis94 0:ec64ecaac130 148 lcd.setPixel(75,34);
takis94 0:ec64ecaac130 149 lcd.setPixel(76,34);
takis94 0:ec64ecaac130 150 lcd.setPixel(77,34);
takis94 0:ec64ecaac130 151 lcd.setPixel(75,33);
takis94 0:ec64ecaac130 152 lcd.setPixel(76,33);
takis94 0:ec64ecaac130 153 lcd.setPixel(77,33);
takis94 0:ec64ecaac130 154 lcd.setPixel(75,32);
takis94 0:ec64ecaac130 155 lcd.setPixel(76,32);
takis94 0:ec64ecaac130 156 lcd.setPixel(77,32);
takis94 0:ec64ecaac130 157 lcd.setPixel(75,31);
takis94 0:ec64ecaac130 158 lcd.setPixel(76,31);
takis94 0:ec64ecaac130 159 lcd.setPixel(77,31);
takis94 0:ec64ecaac130 160 lcd.setPixel(75,30);
takis94 0:ec64ecaac130 161 lcd.setPixel(76,30);
takis94 0:ec64ecaac130 162 lcd.setPixel(77,30);
takis94 0:ec64ecaac130 163 lcd.setPixel(75,29);
takis94 0:ec64ecaac130 164 lcd.setPixel(76,29);
takis94 0:ec64ecaac130 165 lcd.setPixel(77,29);
takis94 0:ec64ecaac130 166 lcd.setPixel(75,28);
takis94 0:ec64ecaac130 167 lcd.setPixel(76,28);
takis94 0:ec64ecaac130 168 lcd.setPixel(77,28);
takis94 0:ec64ecaac130 169 lcd.setPixel(75,27);
takis94 0:ec64ecaac130 170 lcd.setPixel(76,27);
takis94 0:ec64ecaac130 171 lcd.setPixel(77,27);
takis94 0:ec64ecaac130 172 lcd.setPixel(75,26);
takis94 0:ec64ecaac130 173 lcd.setPixel(76,26);
takis94 0:ec64ecaac130 174 lcd.setPixel(77,26);
takis94 0:ec64ecaac130 175 lcd.setPixel(75,25);
takis94 0:ec64ecaac130 176 lcd.setPixel(76,25);
takis94 0:ec64ecaac130 177 lcd.setPixel(77,25);
takis94 0:ec64ecaac130 178 }
takis94 1:d320c79324fe 179 else if (temperature >25.0 && temperature <= 30.0) { // for temperatures between 25 and 30
takis94 0:ec64ecaac130 180
takis94 1:d320c79324fe 181 lcd.drawCircle(WIDTH/1.1,HEIGHT/1.2,5,1); // x,y,radius,black fill
takis94 1:d320c79324fe 182 //origin x,y,width,height,type
takis94 1:d320c79324fe 183 lcd.drawRect(74,5,4,30,0); // transparent, just outline
takis94 0:ec64ecaac130 184 lcd.setPixel(75,34);
takis94 0:ec64ecaac130 185 lcd.setPixel(76,34);
takis94 0:ec64ecaac130 186 lcd.setPixel(77,34);
takis94 0:ec64ecaac130 187 lcd.setPixel(75,33);
takis94 0:ec64ecaac130 188 lcd.setPixel(76,33);
takis94 0:ec64ecaac130 189 lcd.setPixel(77,33);
takis94 0:ec64ecaac130 190 lcd.setPixel(75,32);
takis94 0:ec64ecaac130 191 lcd.setPixel(76,32);
takis94 0:ec64ecaac130 192 lcd.setPixel(77,32);
takis94 0:ec64ecaac130 193 lcd.setPixel(75,31);
takis94 0:ec64ecaac130 194 lcd.setPixel(76,31);
takis94 0:ec64ecaac130 195 lcd.setPixel(77,31);
takis94 0:ec64ecaac130 196 lcd.setPixel(75,30);
takis94 0:ec64ecaac130 197 lcd.setPixel(76,30);
takis94 0:ec64ecaac130 198 lcd.setPixel(77,30);
takis94 0:ec64ecaac130 199 lcd.setPixel(75,29);
takis94 0:ec64ecaac130 200 lcd.setPixel(76,29);
takis94 0:ec64ecaac130 201 lcd.setPixel(77,29);
takis94 0:ec64ecaac130 202 lcd.setPixel(75,28);
takis94 0:ec64ecaac130 203 lcd.setPixel(76,28);
takis94 0:ec64ecaac130 204 lcd.setPixel(77,28);
takis94 0:ec64ecaac130 205 lcd.setPixel(75,27);
takis94 0:ec64ecaac130 206 lcd.setPixel(76,27);
takis94 0:ec64ecaac130 207 lcd.setPixel(77,27);
takis94 0:ec64ecaac130 208 lcd.setPixel(75,26);
takis94 0:ec64ecaac130 209 lcd.setPixel(76,26);
takis94 0:ec64ecaac130 210 lcd.setPixel(77,26);
takis94 0:ec64ecaac130 211 lcd.setPixel(75,25);
takis94 0:ec64ecaac130 212 lcd.setPixel(76,25);
takis94 0:ec64ecaac130 213 lcd.setPixel(77,25);
takis94 0:ec64ecaac130 214 lcd.setPixel(75,24);
takis94 0:ec64ecaac130 215 lcd.setPixel(76,24);
takis94 0:ec64ecaac130 216 lcd.setPixel(77,24);
takis94 0:ec64ecaac130 217 lcd.setPixel(75,23);
takis94 0:ec64ecaac130 218 lcd.setPixel(76,23);
takis94 0:ec64ecaac130 219 lcd.setPixel(77,23);
takis94 0:ec64ecaac130 220 }
takis94 1:d320c79324fe 221 else if (temperature >30.0 && temperature <= 35.0) { // for temperatures between 30 and 35
takis94 0:ec64ecaac130 222
takis94 1:d320c79324fe 223 lcd.drawCircle(WIDTH/1.1,HEIGHT/1.2,5,1); // x,y,radius,black fill
takis94 1:d320c79324fe 224 //origin x,y,width,height,type
takis94 1:d320c79324fe 225 lcd.drawRect(74,5,4,30,0); // transparent, just outline
takis94 0:ec64ecaac130 226 lcd.setPixel(75,34);
takis94 0:ec64ecaac130 227 lcd.setPixel(76,34);
takis94 0:ec64ecaac130 228 lcd.setPixel(77,34);
takis94 0:ec64ecaac130 229 lcd.setPixel(75,33);
takis94 0:ec64ecaac130 230 lcd.setPixel(76,33);
takis94 0:ec64ecaac130 231 lcd.setPixel(77,33);
takis94 0:ec64ecaac130 232 lcd.setPixel(75,32);
takis94 0:ec64ecaac130 233 lcd.setPixel(76,32);
takis94 0:ec64ecaac130 234 lcd.setPixel(77,32);
takis94 0:ec64ecaac130 235 lcd.setPixel(75,31);
takis94 0:ec64ecaac130 236 lcd.setPixel(76,31);
takis94 0:ec64ecaac130 237 lcd.setPixel(77,31);
takis94 0:ec64ecaac130 238 lcd.setPixel(75,30);
takis94 0:ec64ecaac130 239 lcd.setPixel(76,30);
takis94 0:ec64ecaac130 240 lcd.setPixel(77,30);
takis94 0:ec64ecaac130 241 lcd.setPixel(75,29);
takis94 0:ec64ecaac130 242 lcd.setPixel(76,29);
takis94 0:ec64ecaac130 243 lcd.setPixel(77,29);
takis94 0:ec64ecaac130 244 lcd.setPixel(75,28);
takis94 0:ec64ecaac130 245 lcd.setPixel(76,28);
takis94 0:ec64ecaac130 246 lcd.setPixel(77,28);
takis94 0:ec64ecaac130 247 lcd.setPixel(75,27);
takis94 0:ec64ecaac130 248 lcd.setPixel(76,27);
takis94 0:ec64ecaac130 249 lcd.setPixel(77,27);
takis94 0:ec64ecaac130 250 lcd.setPixel(75,26);
takis94 0:ec64ecaac130 251 lcd.setPixel(76,26);
takis94 0:ec64ecaac130 252 lcd.setPixel(77,26);
takis94 0:ec64ecaac130 253 lcd.setPixel(75,25);
takis94 0:ec64ecaac130 254 lcd.setPixel(76,25);
takis94 0:ec64ecaac130 255 lcd.setPixel(77,25);
takis94 0:ec64ecaac130 256 lcd.setPixel(75,24);
takis94 0:ec64ecaac130 257 lcd.setPixel(76,24);
takis94 0:ec64ecaac130 258 lcd.setPixel(77,24);
takis94 0:ec64ecaac130 259 lcd.setPixel(75,23);
takis94 0:ec64ecaac130 260 lcd.setPixel(76,23);
takis94 0:ec64ecaac130 261 lcd.setPixel(77,23);
takis94 0:ec64ecaac130 262 lcd.setPixel(75,22);
takis94 0:ec64ecaac130 263 lcd.setPixel(76,22);
takis94 0:ec64ecaac130 264 lcd.setPixel(77,22);
takis94 0:ec64ecaac130 265 lcd.setPixel(75,21);
takis94 0:ec64ecaac130 266 lcd.setPixel(76,21);
takis94 0:ec64ecaac130 267 lcd.setPixel(77,21);
takis94 0:ec64ecaac130 268 }
takis94 1:d320c79324fe 269 else if (temperature >35.0 && temperature <= 40.0) { // for temperatures between 35 and 40
takis94 0:ec64ecaac130 270
takis94 1:d320c79324fe 271 lcd.drawCircle(WIDTH/1.1,HEIGHT/1.2,5,1); // x,y,radius,black fill
takis94 1:d320c79324fe 272 //origin x,y,width,height,type
takis94 1:d320c79324fe 273 lcd.drawRect(74,5,4,30,0); // transparent, just outline
takis94 0:ec64ecaac130 274 lcd.setPixel(75,34);
takis94 0:ec64ecaac130 275 lcd.setPixel(76,34);
takis94 0:ec64ecaac130 276 lcd.setPixel(77,34);
takis94 0:ec64ecaac130 277 lcd.setPixel(75,33);
takis94 0:ec64ecaac130 278 lcd.setPixel(76,33);
takis94 0:ec64ecaac130 279 lcd.setPixel(77,33);
takis94 0:ec64ecaac130 280 lcd.setPixel(75,32);
takis94 0:ec64ecaac130 281 lcd.setPixel(76,32);
takis94 0:ec64ecaac130 282 lcd.setPixel(77,32);
takis94 0:ec64ecaac130 283 lcd.setPixel(75,31);
takis94 0:ec64ecaac130 284 lcd.setPixel(76,31);
takis94 0:ec64ecaac130 285 lcd.setPixel(77,31);
takis94 0:ec64ecaac130 286 lcd.setPixel(75,30);
takis94 0:ec64ecaac130 287 lcd.setPixel(76,30);
takis94 0:ec64ecaac130 288 lcd.setPixel(77,30);
takis94 0:ec64ecaac130 289 lcd.setPixel(75,29);
takis94 0:ec64ecaac130 290 lcd.setPixel(76,29);
takis94 0:ec64ecaac130 291 lcd.setPixel(77,29);
takis94 0:ec64ecaac130 292 lcd.setPixel(75,28);
takis94 0:ec64ecaac130 293 lcd.setPixel(76,28);
takis94 0:ec64ecaac130 294 lcd.setPixel(77,28);
takis94 0:ec64ecaac130 295 lcd.setPixel(75,27);
takis94 0:ec64ecaac130 296 lcd.setPixel(76,27);
takis94 0:ec64ecaac130 297 lcd.setPixel(77,27);
takis94 0:ec64ecaac130 298 lcd.setPixel(75,26);
takis94 0:ec64ecaac130 299 lcd.setPixel(76,26);
takis94 0:ec64ecaac130 300 lcd.setPixel(77,26);
takis94 0:ec64ecaac130 301 lcd.setPixel(75,25);
takis94 0:ec64ecaac130 302 lcd.setPixel(76,25);
takis94 0:ec64ecaac130 303 lcd.setPixel(77,25);
takis94 0:ec64ecaac130 304 lcd.setPixel(75,24);
takis94 0:ec64ecaac130 305 lcd.setPixel(76,24);
takis94 0:ec64ecaac130 306 lcd.setPixel(77,24);
takis94 0:ec64ecaac130 307 lcd.setPixel(75,23);
takis94 0:ec64ecaac130 308 lcd.setPixel(76,23);
takis94 0:ec64ecaac130 309 lcd.setPixel(77,23);
takis94 0:ec64ecaac130 310 lcd.setPixel(75,22);
takis94 0:ec64ecaac130 311 lcd.setPixel(76,22);
takis94 0:ec64ecaac130 312 lcd.setPixel(77,22);
takis94 0:ec64ecaac130 313 lcd.setPixel(75,21);
takis94 0:ec64ecaac130 314 lcd.setPixel(76,21);
takis94 0:ec64ecaac130 315 lcd.setPixel(77,21);
takis94 0:ec64ecaac130 316 lcd.setPixel(75,20);
takis94 0:ec64ecaac130 317 lcd.setPixel(76,20);
takis94 0:ec64ecaac130 318 lcd.setPixel(77,20);
takis94 0:ec64ecaac130 319 lcd.setPixel(75,19);
takis94 0:ec64ecaac130 320 lcd.setPixel(76,19);
takis94 0:ec64ecaac130 321 lcd.setPixel(77,19);
takis94 0:ec64ecaac130 322 }
takis94 1:d320c79324fe 323 else if (temperature >40.0 && temperature <= 50.0) { // for temperatures between 40 and 50
takis94 0:ec64ecaac130 324
takis94 1:d320c79324fe 325 lcd.drawCircle(WIDTH/1.1,HEIGHT/1.2,5,1); // x,y,radius,black fill
takis94 1:d320c79324fe 326 //origin x,y,width,height,type
takis94 1:d320c79324fe 327 lcd.drawRect(74,5,4,30,0); // transparent, just outline
takis94 0:ec64ecaac130 328 lcd.setPixel(75,34);
takis94 0:ec64ecaac130 329 lcd.setPixel(76,34);
takis94 0:ec64ecaac130 330 lcd.setPixel(77,34);
takis94 0:ec64ecaac130 331 lcd.setPixel(75,33);
takis94 0:ec64ecaac130 332 lcd.setPixel(76,33);
takis94 0:ec64ecaac130 333 lcd.setPixel(77,33);
takis94 0:ec64ecaac130 334 lcd.setPixel(75,32);
takis94 0:ec64ecaac130 335 lcd.setPixel(76,32);
takis94 0:ec64ecaac130 336 lcd.setPixel(77,32);
takis94 0:ec64ecaac130 337 lcd.setPixel(75,31);
takis94 0:ec64ecaac130 338 lcd.setPixel(76,31);
takis94 0:ec64ecaac130 339 lcd.setPixel(77,31);
takis94 0:ec64ecaac130 340 lcd.setPixel(75,30);
takis94 0:ec64ecaac130 341 lcd.setPixel(76,30);
takis94 0:ec64ecaac130 342 lcd.setPixel(77,30);
takis94 0:ec64ecaac130 343 lcd.setPixel(75,29);
takis94 0:ec64ecaac130 344 lcd.setPixel(76,29);
takis94 0:ec64ecaac130 345 lcd.setPixel(77,29);
takis94 0:ec64ecaac130 346 lcd.setPixel(75,28);
takis94 0:ec64ecaac130 347 lcd.setPixel(76,28);
takis94 0:ec64ecaac130 348 lcd.setPixel(77,28);
takis94 0:ec64ecaac130 349 lcd.setPixel(75,27);
takis94 0:ec64ecaac130 350 lcd.setPixel(76,27);
takis94 0:ec64ecaac130 351 lcd.setPixel(77,27);
takis94 0:ec64ecaac130 352 lcd.setPixel(75,26);
takis94 0:ec64ecaac130 353 lcd.setPixel(76,26);
takis94 0:ec64ecaac130 354 lcd.setPixel(77,26);
takis94 0:ec64ecaac130 355 lcd.setPixel(75,25);
takis94 0:ec64ecaac130 356 lcd.setPixel(76,25);
takis94 0:ec64ecaac130 357 lcd.setPixel(77,25);
takis94 0:ec64ecaac130 358 lcd.setPixel(75,24);
takis94 0:ec64ecaac130 359 lcd.setPixel(76,24);
takis94 0:ec64ecaac130 360 lcd.setPixel(77,24);
takis94 0:ec64ecaac130 361 lcd.setPixel(75,23);
takis94 0:ec64ecaac130 362 lcd.setPixel(76,23);
takis94 0:ec64ecaac130 363 lcd.setPixel(77,23);
takis94 0:ec64ecaac130 364 lcd.setPixel(75,22);
takis94 0:ec64ecaac130 365 lcd.setPixel(76,22);
takis94 0:ec64ecaac130 366 lcd.setPixel(77,22);
takis94 0:ec64ecaac130 367 lcd.setPixel(75,21);
takis94 0:ec64ecaac130 368 lcd.setPixel(76,21);
takis94 0:ec64ecaac130 369 lcd.setPixel(77,21);
takis94 0:ec64ecaac130 370 lcd.setPixel(75,20);
takis94 0:ec64ecaac130 371 lcd.setPixel(76,20);
takis94 0:ec64ecaac130 372 lcd.setPixel(77,20);
takis94 0:ec64ecaac130 373 lcd.setPixel(75,19);
takis94 0:ec64ecaac130 374 lcd.setPixel(76,19);
takis94 0:ec64ecaac130 375 lcd.setPixel(77,19);
takis94 0:ec64ecaac130 376 lcd.setPixel(75,18);
takis94 0:ec64ecaac130 377 lcd.setPixel(76,18);
takis94 0:ec64ecaac130 378 lcd.setPixel(77,18);
takis94 0:ec64ecaac130 379 lcd.setPixel(75,17);
takis94 0:ec64ecaac130 380 lcd.setPixel(76,17);
takis94 0:ec64ecaac130 381 lcd.setPixel(77,17);
takis94 0:ec64ecaac130 382 }
takis94 1:d320c79324fe 383 else if (temperature >50.0 && temperature <= 65.0) { // for temperatures between 50 and 65
takis94 1:d320c79324fe 384
takis94 1:d320c79324fe 385 lcd.drawCircle(WIDTH/1.1,HEIGHT/1.2,5,1); // x,y,radius,black fill
takis94 1:d320c79324fe 386 //origin x,y,width,height,type
takis94 1:d320c79324fe 387 lcd.drawRect(74,5,4,30,0); // transparent, just outline
takis94 0:ec64ecaac130 388 lcd.setPixel(75,34);
takis94 0:ec64ecaac130 389 lcd.setPixel(76,34);
takis94 0:ec64ecaac130 390 lcd.setPixel(77,34);
takis94 0:ec64ecaac130 391 lcd.setPixel(75,33);
takis94 0:ec64ecaac130 392 lcd.setPixel(76,33);
takis94 0:ec64ecaac130 393 lcd.setPixel(77,33);
takis94 0:ec64ecaac130 394 lcd.setPixel(75,32);
takis94 0:ec64ecaac130 395 lcd.setPixel(76,32);
takis94 0:ec64ecaac130 396 lcd.setPixel(77,32);
takis94 0:ec64ecaac130 397 lcd.setPixel(75,31);
takis94 0:ec64ecaac130 398 lcd.setPixel(76,31);
takis94 0:ec64ecaac130 399 lcd.setPixel(77,31);
takis94 0:ec64ecaac130 400 lcd.setPixel(75,30);
takis94 0:ec64ecaac130 401 lcd.setPixel(76,30);
takis94 0:ec64ecaac130 402 lcd.setPixel(77,30);
takis94 0:ec64ecaac130 403 lcd.setPixel(75,29);
takis94 0:ec64ecaac130 404 lcd.setPixel(76,29);
takis94 0:ec64ecaac130 405 lcd.setPixel(77,29);
takis94 0:ec64ecaac130 406 lcd.setPixel(75,28);
takis94 0:ec64ecaac130 407 lcd.setPixel(76,28);
takis94 0:ec64ecaac130 408 lcd.setPixel(77,28);
takis94 0:ec64ecaac130 409 lcd.setPixel(75,27);
takis94 0:ec64ecaac130 410 lcd.setPixel(76,27);
takis94 0:ec64ecaac130 411 lcd.setPixel(77,27);
takis94 0:ec64ecaac130 412 lcd.setPixel(75,26);
takis94 0:ec64ecaac130 413 lcd.setPixel(76,26);
takis94 0:ec64ecaac130 414 lcd.setPixel(77,26);
takis94 0:ec64ecaac130 415 lcd.setPixel(75,25);
takis94 0:ec64ecaac130 416 lcd.setPixel(76,25);
takis94 0:ec64ecaac130 417 lcd.setPixel(77,25);
takis94 0:ec64ecaac130 418 lcd.setPixel(75,24);
takis94 0:ec64ecaac130 419 lcd.setPixel(76,24);
takis94 0:ec64ecaac130 420 lcd.setPixel(77,24);
takis94 0:ec64ecaac130 421 lcd.setPixel(75,23);
takis94 0:ec64ecaac130 422 lcd.setPixel(76,23);
takis94 0:ec64ecaac130 423 lcd.setPixel(77,23);
takis94 0:ec64ecaac130 424 lcd.setPixel(75,22);
takis94 0:ec64ecaac130 425 lcd.setPixel(76,22);
takis94 0:ec64ecaac130 426 lcd.setPixel(77,22);
takis94 0:ec64ecaac130 427 lcd.setPixel(75,21);
takis94 0:ec64ecaac130 428 lcd.setPixel(76,21);
takis94 0:ec64ecaac130 429 lcd.setPixel(77,21);
takis94 0:ec64ecaac130 430 lcd.setPixel(75,20);
takis94 0:ec64ecaac130 431 lcd.setPixel(76,20);
takis94 0:ec64ecaac130 432 lcd.setPixel(77,20);
takis94 0:ec64ecaac130 433 lcd.setPixel(75,19);
takis94 0:ec64ecaac130 434 lcd.setPixel(76,19);
takis94 0:ec64ecaac130 435 lcd.setPixel(77,19);
takis94 0:ec64ecaac130 436 lcd.setPixel(75,18);
takis94 0:ec64ecaac130 437 lcd.setPixel(76,18);
takis94 0:ec64ecaac130 438 lcd.setPixel(77,18);
takis94 0:ec64ecaac130 439 lcd.setPixel(75,17);
takis94 0:ec64ecaac130 440 lcd.setPixel(76,17);
takis94 0:ec64ecaac130 441 lcd.setPixel(77,17);
takis94 0:ec64ecaac130 442 lcd.setPixel(75,16);
takis94 0:ec64ecaac130 443 lcd.setPixel(76,16);
takis94 0:ec64ecaac130 444 lcd.setPixel(77,16);
takis94 0:ec64ecaac130 445 lcd.setPixel(75,15);
takis94 0:ec64ecaac130 446 lcd.setPixel(76,15);
takis94 0:ec64ecaac130 447 lcd.setPixel(77,15);
takis94 0:ec64ecaac130 448 }
takis94 0:ec64ecaac130 449 }
takis94 0:ec64ecaac130 450
takis94 0:ec64ecaac130 451 void print()
takis94 0:ec64ecaac130 452 {
takis94 1:d320c79324fe 453 if(graphTempFlag == 0 && graphPresFlag == 0 && unitsFlag == 0) { //no button is pressed or button 4 is pressed
takis94 0:ec64ecaac130 454
takis94 1:d320c79324fe 455 char buffer2[14]; // each character is 6 pixels wide, screen is 84 pixels (84/6 = 14)
takis94 1:d320c79324fe 456 // so can display a string of a maximum 14 characters in length
takis94 1:d320c79324fe 457 // or create formatted strings - ensure they aren't more than 14 characters long
takis94 1:d320c79324fe 458 float length = sprintf(buffer2,"T= %.2f C",temperature); // print formatted data to buffer
takis94 1:d320c79324fe 459 // it is important the format specifier ensures the length will fit in the buffer
takis94 1:d320c79324fe 460 if (length <= 14) // if string will fit on display
takis94 1:d320c79324fe 461 lcd.printString(buffer2,0,1); // display on screen
takis94 0:ec64ecaac130 462
takis94 1:d320c79324fe 463 length = sprintf(buffer2,"P= %.2fmb",pressure); //print formatted data to buffer
takis94 1:d320c79324fe 464 if (length <= 14){ // if string will fit on display
takis94 1:d320c79324fe 465 lcd.printString(buffer2,0,2); // display on screen
takis94 1:d320c79324fe 466 lcd.printString(bufferT,0,4); // display on screen
takis94 1:d320c79324fe 467 lcd.printString(bufferD,0,5); // display on screen
takis94 0:ec64ecaac130 468 }
takis94 0:ec64ecaac130 469 lcd.drawLine(0,30,48,30,2);
takis94 0:ec64ecaac130 470 lcd.drawLine(48,30,48,48,2);
takis94 0:ec64ecaac130 471
takis94 1:d320c79324fe 472 update(); //update thermometer
takis94 1:d320c79324fe 473
takis94 1:d320c79324fe 474 //set 0 degrees indicator
takis94 0:ec64ecaac130 475 lcd.setPixel(72,33);
takis94 0:ec64ecaac130 476 lcd.setPixel(71,33);
takis94 0:ec64ecaac130 477 lcd.setPixel(70,33);
takis94 0:ec64ecaac130 478 lcd.setPixel(69,33);
takis94 0:ec64ecaac130 479 lcd.printChar('0',58,34);
takis94 0:ec64ecaac130 480
takis94 1:d320c79324fe 481 //set 65 degrees indicator
takis94 0:ec64ecaac130 482 lcd.setPixel(72,5);
takis94 0:ec64ecaac130 483 lcd.setPixel(71,5);
takis94 0:ec64ecaac130 484 lcd.setPixel(70,5);
takis94 0:ec64ecaac130 485 lcd.setPixel(69,5);
takis94 0:ec64ecaac130 486 lcd.printChar('5',62,6);
takis94 0:ec64ecaac130 487 lcd.printChar('6',56,6);
takis94 0:ec64ecaac130 488
takis94 0:ec64ecaac130 489
takis94 1:d320c79324fe 490 if(temperature >15 && temperature <= 35){ //good weather
takis94 1:d320c79324fe 491 //draw a sun on screen
takis94 1:d320c79324fe 492 lcd.drawCircle(WIDTH/1.5,HEIGHT/1.2,2,1); // x,y,radius,black fill
takis94 0:ec64ecaac130 493 lcd.drawLine(53,40,59,40,1);
takis94 0:ec64ecaac130 494 lcd.drawLine(56,37,56,43,1);
takis94 0:ec64ecaac130 495 lcd.drawLine(53,37,59,43,1);
takis94 0:ec64ecaac130 496 lcd.drawLine(59,37,53,43,1);
takis94 0:ec64ecaac130 497 }
takis94 1:d320c79324fe 498 else if (temperature <= 15) { //cold weather
takis94 1:d320c79324fe 499 //draw a rainy cloud on screen
takis94 0:ec64ecaac130 500 lcd.setPixel(57,37);
takis94 0:ec64ecaac130 501 lcd.setPixel(56,37);
takis94 0:ec64ecaac130 502 lcd.setPixel(56,36);
takis94 0:ec64ecaac130 503 lcd.setPixel(55,37);
takis94 0:ec64ecaac130 504 lcd.setPixel(58,42);
takis94 0:ec64ecaac130 505 lcd.setPixel(58,38);
takis94 0:ec64ecaac130 506 lcd.setPixel(58,37);
takis94 0:ec64ecaac130 507 lcd.setPixel(54,44);
takis94 0:ec64ecaac130 508 lcd.setPixel(59,44);
takis94 0:ec64ecaac130 509 lcd.setPixel(60,47);
takis94 0:ec64ecaac130 510 lcd.setPixel(56,45);
takis94 0:ec64ecaac130 511 lcd.setPixel(61,45);
takis94 1:d320c79324fe 512 lcd.drawCircle(WIDTH/1.5,HEIGHT/1.2,2,1); // x,y,radius,black fill
takis94 1:d320c79324fe 513 lcd.drawCircle(WIDTH/1.4,HEIGHT/1.2,2,1); // x,y,radius,black fill
takis94 0:ec64ecaac130 514 }
takis94 1:d320c79324fe 515 else { //hot weather
takis94 1:d320c79324fe 516 //draw a bigger sun on screen
takis94 1:d320c79324fe 517 lcd.drawCircle(WIDTH/1.5,HEIGHT/1.2,2,1); // x,y,radius,black fill
takis94 0:ec64ecaac130 518 lcd.drawLine(52,40,60,40,1);
takis94 0:ec64ecaac130 519 lcd.drawLine(56,36,56,44,1);
takis94 0:ec64ecaac130 520 lcd.drawLine(53,37,59,43,1);
takis94 0:ec64ecaac130 521 lcd.drawLine(59,37,53,43,1);
takis94 0:ec64ecaac130 522 }
takis94 0:ec64ecaac130 523
takis94 0:ec64ecaac130 524
takis94 1:d320c79324fe 525 } else if(graphTempFlag == 0 && graphPresFlag == 0 && unitsFlag) { //button3 pressed
takis94 0:ec64ecaac130 526
takis94 1:d320c79324fe 527 char buffer2[14]; // each character is 6 pixels wide, screen is 84 pixels (84/6 = 14)
takis94 1:d320c79324fe 528 // so can display a string of a maximum 14 characters in length
takis94 1:d320c79324fe 529 // or create formatted strings - ensure they aren't more than 14 characters long
takis94 1:d320c79324fe 530 float length = sprintf(buffer2,"T= %.2f K",temperature+273.15); // print formatted data to buffer
takis94 1:d320c79324fe 531 // it is important the format specifier ensures the length will fit in the buffer
takis94 1:d320c79324fe 532 if (length <= 14){ // if string will fit on display
takis94 1:d320c79324fe 533 lcd.printString(buffer2,0,1); // display on screen
takis94 0:ec64ecaac130 534 }
takis94 1:d320c79324fe 535 length = sprintf(buffer2,"P= %.2f b",pressure/1000); // print formatted data to buffer
takis94 1:d320c79324fe 536 if (length <= 14){ // if string will fit on display
takis94 0:ec64ecaac130 537
takis94 1:d320c79324fe 538 lcd.printString(buffer2,0,2); // display on screen
takis94 1:d320c79324fe 539 lcd.printString(bufferT,0,4); // display on screen
takis94 1:d320c79324fe 540 lcd.printString(bufferD,0,5); // display on screen
takis94 0:ec64ecaac130 541 }
takis94 0:ec64ecaac130 542 lcd.drawLine(0,30,48,30,2);
takis94 0:ec64ecaac130 543 lcd.drawLine(48,30,48,48,2);
takis94 1:d320c79324fe 544
takis94 1:d320c79324fe 545 update(); //update thermometer
takis94 0:ec64ecaac130 546
takis94 1:d320c79324fe 547 //set 273.15K indicator
takis94 0:ec64ecaac130 548 lcd.setPixel(72,33);
takis94 0:ec64ecaac130 549 lcd.setPixel(71,33);
takis94 0:ec64ecaac130 550 lcd.setPixel(70,33);
takis94 0:ec64ecaac130 551 lcd.setPixel(69,33);
takis94 0:ec64ecaac130 552 lcd.printString("273",46,34);
takis94 0:ec64ecaac130 553
takis94 1:d320c79324fe 554 //set 338.15K indicator
takis94 0:ec64ecaac130 555 lcd.setPixel(72,5);
takis94 0:ec64ecaac130 556 lcd.setPixel(71,5);
takis94 0:ec64ecaac130 557 lcd.setPixel(70,5);
takis94 0:ec64ecaac130 558 lcd.setPixel(69,5);
takis94 0:ec64ecaac130 559 lcd.printString("338",50,6);
takis94 0:ec64ecaac130 560
takis94 1:d320c79324fe 561 } else if(graphTempFlag && graphPresFlag == 0 && unitsFlag == 0) { //if button is pressed
takis94 0:ec64ecaac130 562
takis94 1:d320c79324fe 563 char buffer3[14]; // each character is 6 pixels wide, screen is 84 pixels (84/6 = 14)
takis94 1:d320c79324fe 564 // so can display a string of a maximum 14 characters in length
takis94 1:d320c79324fe 565 // or create formatted strings - ensure they aren't more than 14 characters long
takis94 1:d320c79324fe 566 float tave; //store average temperature
takis94 1:d320c79324fe 567 float t_sum=0; //store sum of temperatures
takis94 1:d320c79324fe 568 float t_count=0; //store position in the array
takis94 0:ec64ecaac130 569
takis94 0:ec64ecaac130 570 for (int ind = 0; ind<84; ind++) {
takis94 0:ec64ecaac130 571 if (array[ind] > 0) {
takis94 0:ec64ecaac130 572 t_sum = t_sum + array[ind]*65;
takis94 0:ec64ecaac130 573 t_count++;
takis94 0:ec64ecaac130 574 }
takis94 0:ec64ecaac130 575 }
takis94 0:ec64ecaac130 576 tave = t_sum/t_count;
takis94 1:d320c79324fe 577 float length3 = sprintf(buffer3,"Tave = %.2f C",tave); // print formatted data to buffer
takis94 1:d320c79324fe 578 // it is important the format specifier ensures the length will fit in the buffer
takis94 1:d320c79324fe 579 if (length3 <= 14){ // if string will fit on display
takis94 1:d320c79324fe 580 lcd.printString(buffer3,0,1); // display on screen
takis94 0:ec64ecaac130 581 }
takis94 0:ec64ecaac130 582 if(temperature >15 && temperature <= 35){
takis94 1:d320c79324fe 583 lcd.printString(" Good Weather",0,2); //print string
takis94 0:ec64ecaac130 584 }
takis94 0:ec64ecaac130 585 else if (temperature <= 15)
takis94 1:d320c79324fe 586 lcd.printString(" Cold Weather",0,2); //print string
takis94 0:ec64ecaac130 587 else {
takis94 1:d320c79324fe 588 lcd.printString(" Hot Weather",0,2); //print string
takis94 0:ec64ecaac130 589 }
takis94 0:ec64ecaac130 590
takis94 1:d320c79324fe 591 } else if(graphTempFlag == 0 && graphPresFlag && unitsFlag == 0) { //button2 pressed
takis94 0:ec64ecaac130 592
takis94 1:d320c79324fe 593 char buffer4[14]; // each character is 6 pixels wide, screen is 84 pixels (84/6 = 14)
takis94 1:d320c79324fe 594 // so can display a string of a maximum 14 characters in length
takis94 1:d320c79324fe 595 // or create formatted strings - ensure they aren't more than 14 characters long
takis94 1:d320c79324fe 596 float pave; //store average pressure
takis94 1:d320c79324fe 597 float p_sum=0; //store sum of presuures
takis94 1:d320c79324fe 598 float p_count=0; //store position in the array2
takis94 0:ec64ecaac130 599
takis94 0:ec64ecaac130 600 for (int ind = 0; ind<84; ind++) {
takis94 0:ec64ecaac130 601 if (array2[ind] > 0) {
takis94 0:ec64ecaac130 602 p_sum = p_sum + array2[ind]*1100;
takis94 0:ec64ecaac130 603 p_count++;
takis94 0:ec64ecaac130 604 }
takis94 0:ec64ecaac130 605 }
takis94 0:ec64ecaac130 606 pave = p_sum/p_count;
takis94 1:d320c79324fe 607 float length4 = sprintf(buffer4,"Pave=%.2fmb",pave); // print formatted data to buffer
takis94 1:d320c79324fe 608 // it is important the format specifier ensures the length will fit in the buffer
takis94 1:d320c79324fe 609 if (length4 <= 14) { // if string will fit on display
takis94 1:d320c79324fe 610 lcd.printString(buffer4,0,1); // display on screen
takis94 0:ec64ecaac130 611 }
takis94 0:ec64ecaac130 612 if(pressure >999){
takis94 1:d320c79324fe 613 lcd.printString("Clear Weather",0,2); //print string
takis94 0:ec64ecaac130 614 }
takis94 0:ec64ecaac130 615 else if(pressure <= 999 && pressure >700){
takis94 1:d320c79324fe 616 lcd.printString(" Windy/Cloudy",0,2); //print string
takis94 0:ec64ecaac130 617 }
takis94 0:ec64ecaac130 618 else
takis94 1:d320c79324fe 619 lcd.printString("Rainy Weather",0,2); //print string
takis94 0:ec64ecaac130 620 }
takis94 0:ec64ecaac130 621 }
takis94 0:ec64ecaac130 622
takis94 0:ec64ecaac130 623 //ISR
takis94 0:ec64ecaac130 624 void timerExpiredReading()
takis94 0:ec64ecaac130 625 {
takis94 1:d320c79324fe 626 readingFlag = 1; //set flag to 1
takis94 0:ec64ecaac130 627 }
takis94 0:ec64ecaac130 628 void timerExpiredTime()
takis94 0:ec64ecaac130 629 {
takis94 1:d320c79324fe 630 timerFlag = 1; //set flag to 1
takis94 0:ec64ecaac130 631 }
takis94 0:ec64ecaac130 632 void timeExpiredFiles()
takis94 0:ec64ecaac130 633 {
takis94 1:d320c79324fe 634 timerFilesFlag = 1; //set flag to 1
takis94 0:ec64ecaac130 635 }
takis94 0:ec64ecaac130 636 void buttonTempPressed()
takis94 0:ec64ecaac130 637 {
takis94 1:d320c79324fe 638 graphTempFlag = !graphTempFlag; //toggle flag
takis94 0:ec64ecaac130 639 }
takis94 0:ec64ecaac130 640 void buttonPresPressed()
takis94 0:ec64ecaac130 641 {
takis94 1:d320c79324fe 642 graphPresFlag = !graphPresFlag; //toggle flag
takis94 0:ec64ecaac130 643 }
takis94 0:ec64ecaac130 644 void buttonUnitsPressed()
takis94 0:ec64ecaac130 645 {
takis94 1:d320c79324fe 646 unitsFlag = !unitsFlag; //toggle flag
takis94 0:ec64ecaac130 647 }
takis94 0:ec64ecaac130 648 void timerExpiredClear()
takis94 0:ec64ecaac130 649 {
takis94 1:d320c79324fe 650 clearFlag = 1; //set flag to 1
takis94 0:ec64ecaac130 651 }
takis94 0:ec64ecaac130 652 int main()
takis94 0:ec64ecaac130 653 {
takis94 1:d320c79324fe 654 pc.baud(9600); //set baud rate
takis94 1:d320c79324fe 655 // first need to initialise display
takis94 0:ec64ecaac130 656 lcd.init();
takis94 1:d320c79324fe 657 // initiliase barometer
takis94 0:ec64ecaac130 658 bmp180.init();
takis94 1:d320c79324fe 659 serial.attach(&serialISR); // attach serial ISR
takis94 1:d320c79324fe 660 Measurement measurement; // measurement structure declared in BMP180 class
takis94 1:d320c79324fe 661 PHY_PowerDown(); //power down the Ethernet
takis94 1:d320c79324fe 662 timerClearScreen.attach(&timerExpiredClear,0.2); //call ISR every 0.2 sec
takis94 1:d320c79324fe 663 timerReading.attach(&timerExpiredReading,10.0); //call ISR every 10 sec
takis94 1:d320c79324fe 664 timerFiles.attach(&timeExpiredFiles,10.0); //write data to file every 10 sec
takis94 1:d320c79324fe 665 //set_time(1431012720); // initialise time to 1st January 1970
takis94 1:d320c79324fe 666 timer.attach(&timerExpiredTime,1.0); //attach timer
takis94 0:ec64ecaac130 667
takis94 1:d320c79324fe 668 green = 0; //set LED initially to 0
takis94 1:d320c79324fe 669 red = 0; //set LED initially to 0
takis94 1:d320c79324fe 670 lcd.setBrightness(ain/3.2); //set brightness according to the pot voltage
takis94 1:d320c79324fe 671
takis94 1:d320c79324fe 672 button.rise(&buttonTempPressed); //change the button state
takis94 1:d320c79324fe 673 button2.rise(&buttonPresPressed); //change the button state
takis94 1:d320c79324fe 674 button3.rise(&buttonUnitsPressed); //change the button state
takis94 0:ec64ecaac130 675
takis94 1:d320c79324fe 676 lcd.clear(); //clear display
takis94 1:d320c79324fe 677 lcd.refresh(); //refresh display
takis94 2:6f7b97e42fce 678 buzzer.beep(1000,0.5); //beep the buzzer
takis94 1:d320c79324fe 679 lcd.printString("WeatherStation",1,1); //print string
takis94 1:d320c79324fe 680 lcd.printString(" by",1,2); //print string
takis94 1:d320c79324fe 681 lcd.printString(" Panagiotis",1,3); //print string
takis94 1:d320c79324fe 682 lcd.printString(" Rodosthenous",1,4); //print string
takis94 1:d320c79324fe 683 lcd.printString("* * * * * * *",1,0); //print string
takis94 1:d320c79324fe 684 lcd.printString("* * * * * * *",1,5); //print string
takis94 1:d320c79324fe 685 //Display to lcd the above details
takis94 1:d320c79324fe 686 wait(3); //3 sec delay
takis94 1:d320c79324fe 687 lcd.clear(); //clear display
takis94 1:d320c79324fe 688 lcd.refresh(); //refresh display
takis94 2:6f7b97e42fce 689 buzzer.beep(1000,0.5); //beep the buzzer
takis94 1:d320c79324fe 690 lcd.printString(" University",1,1); //print string
takis94 1:d320c79324fe 691 lcd.printString(" of",1,2); //print string
takis94 1:d320c79324fe 692 lcd.printString(" Leeds",1,3); //print string
takis94 1:d320c79324fe 693 lcd.drawCircle(WIDTH/2,HEIGHT/1.2,4,1); // x,y,radius,black fill
takis94 1:d320c79324fe 694 //draw sun
takis94 1:d320c79324fe 695 lcd.setPixel(46,36);
takis94 1:d320c79324fe 696 lcd.setPixel(47,35);
takis94 1:d320c79324fe 697 lcd.setPixel(37,45);
takis94 1:d320c79324fe 698 lcd.setPixel(38,44);
takis94 1:d320c79324fe 699 lcd.setPixel(46,44);
takis94 1:d320c79324fe 700 lcd.setPixel(47,45);
takis94 1:d320c79324fe 701 lcd.setPixel(37,35);
takis94 1:d320c79324fe 702 lcd.setPixel(38,36);
takis94 1:d320c79324fe 703 //origin x,y,width,height,type
takis94 1:d320c79324fe 704 lcd.drawRect(1,1,81,45,0); // transparent, just outline
takis94 1:d320c79324fe 705 lcd.drawLine(35,40,49,40,1);
takis94 1:d320c79324fe 706 lcd.drawLine(42,33,42,47,1);
takis94 1:d320c79324fe 707 lcd.inverseMode(); //inverse mode ON
takis94 1:d320c79324fe 708 wait(3); //3 sec delay
takis94 1:d320c79324fe 709 lcd.clear(); //clear display
takis94 1:d320c79324fe 710 lcd.refresh(); //refresh display
takis94 1:d320c79324fe 711 lcd.normalMode(); //normal mode ON
takis94 1:d320c79324fe 712
takis94 1:d320c79324fe 713 buzzer.beep(1000,0.5); //beep the buzzer
takis94 0:ec64ecaac130 714
takis94 0:ec64ecaac130 715 while(1) {
takis94 0:ec64ecaac130 716
takis94 0:ec64ecaac130 717 if(clearFlag){
takis94 1:d320c79324fe 718 clearFlag = 0; //set flag to 0
takis94 1:d320c79324fe 719 lcd.clear(); //clear display
takis94 1:d320c79324fe 720 lcd.refresh(); //refresh display
takis94 0:ec64ecaac130 721 }
takis94 0:ec64ecaac130 722 if(readingFlag) {
takis94 0:ec64ecaac130 723 readingFlag = 0;
takis94 1:d320c79324fe 724 // read values (T in Celsius and P in mb) and print over serial port
takis94 0:ec64ecaac130 725 measurement = bmp180.readValues();
takis94 0:ec64ecaac130 726 temperature = measurement.temperature;
takis94 0:ec64ecaac130 727 pressure = measurement.pressure;
takis94 0:ec64ecaac130 728 serial.printf("T = %.2f C\nP = %.2f mb\n",measurement.temperature,measurement.pressure); //print measurements to serial
takis94 0:ec64ecaac130 729
takis94 0:ec64ecaac130 730 if(i == 84) {
takis94 0:ec64ecaac130 731 for(int n = 0; n <= 82; n++) {
takis94 0:ec64ecaac130 732 array[n] = array[n+1];
takis94 0:ec64ecaac130 733 }
takis94 0:ec64ecaac130 734 for(int z = 0; z <= 82; z++) {
takis94 0:ec64ecaac130 735 array2[z] = array2[z+1];
takis94 0:ec64ecaac130 736 }
takis94 0:ec64ecaac130 737 i = 83;
takis94 0:ec64ecaac130 738 }
takis94 1:d320c79324fe 739 array[i] = temperature/65; //store temperature to array
takis94 1:d320c79324fe 740 array2[i] = pressure/1100; //store pressure to array
takis94 0:ec64ecaac130 741 i++;
takis94 0:ec64ecaac130 742 }
takis94 0:ec64ecaac130 743 if(timerFlag) {
takis94 1:d320c79324fe 744 timerFlag = 0; //set flag to 0
takis94 1:d320c79324fe 745 time_t seconds = time(NULL); // get current time
takis94 1:d320c79324fe 746 // format time into a string (time and date)
takis94 0:ec64ecaac130 747 strftime(bufferT, 14 , "%T", localtime(&seconds));
takis94 0:ec64ecaac130 748 strftime(bufferD, 14 , "%D", localtime(&seconds));
takis94 1:d320c79324fe 749 // print over serial
takis94 1:d320c79324fe 750 serial.printf("Time = %s\n",bufferT); //print to pc
takis94 0:ec64ecaac130 751 }
takis94 1:d320c79324fe 752 if (setTimeFlag) { // if updated time has been sent
takis94 1:d320c79324fe 753 setTimeFlag = 0; // clear flag
takis94 1:d320c79324fe 754 setTime(); // update time
takis94 0:ec64ecaac130 755 }
takis94 0:ec64ecaac130 756 if(graphTempFlag) {
takis94 1:d320c79324fe 757 // values must be in range 0.0 - 1.0
takis94 0:ec64ecaac130 758 lcd.plotArray(array);
takis94 1:d320c79324fe 759 lcd.normalMode(); // normal colour mode back
takis94 1:d320c79324fe 760 button2.rise(NULL); //disable interrupt
takis94 0:ec64ecaac130 761 } else
takis94 1:d320c79324fe 762 button2.rise(&buttonPresPressed); //enable interrupt
takis94 0:ec64ecaac130 763
takis94 0:ec64ecaac130 764 if(graphPresFlag) {
takis94 1:d320c79324fe 765 // values must be in range 0.0 - 1.0
takis94 0:ec64ecaac130 766 lcd.plotArray(array2);
takis94 1:d320c79324fe 767 lcd.normalMode(); // normal colour mode back
takis94 1:d320c79324fe 768 button.rise(NULL); //disable interrupt
takis94 0:ec64ecaac130 769 } else
takis94 1:d320c79324fe 770 button.rise(&buttonTempPressed); //enable interrupt
takis94 0:ec64ecaac130 771
takis94 0:ec64ecaac130 772 if(temperature >= 35) {
takis94 1:d320c79324fe 773 buzzer.beep(1000,0.5); //beep the buzzer if the temp is higher than a predetermined value
takis94 0:ec64ecaac130 774 }
takis94 0:ec64ecaac130 775 if(temperature >= 22 && temperature < 30) {
takis94 1:d320c79324fe 776 green = 1; //light the LED if the temp is in the specific range
takis94 0:ec64ecaac130 777 } else
takis94 1:d320c79324fe 778 green = 0; //turn off the LED
takis94 0:ec64ecaac130 779
takis94 0:ec64ecaac130 780 if(button4 == 1) {
takis94 1:d320c79324fe 781 graphTempFlag = 0; //set flag to 0
takis94 1:d320c79324fe 782 graphPresFlag = 0; //set flag to 0
takis94 1:d320c79324fe 783 unitsFlag = 0; //set flag to 0
takis94 0:ec64ecaac130 784 }
takis94 1:d320c79324fe 785 if(switch_logging == 1) { //if switch is high
takis94 0:ec64ecaac130 786
takis94 0:ec64ecaac130 787 if(timerFilesFlag) {
takis94 1:d320c79324fe 788 timerFilesFlag = 0; //set flag to 0
takis94 0:ec64ecaac130 789 writeDataToFile(temperature,bufferT,pressure); //call function to write data to file
takis94 1:d320c79324fe 790 red = 1; //light the red LED
takis94 0:ec64ecaac130 791 }
takis94 1:d320c79324fe 792 } else red = 0; //turn off the LED
takis94 0:ec64ecaac130 793
takis94 0:ec64ecaac130 794 // Set Brightness
takis94 2:6f7b97e42fce 795 lcd.setBrightness(ain/3.3); //set brightness according to the pot voltage
takis94 0:ec64ecaac130 796
takis94 1:d320c79324fe 797 print(); //call print function
takis94 0:ec64ecaac130 798
takis94 1:d320c79324fe 799 Sleep(); //put the processor on sleep mode
takis94 0:ec64ecaac130 800 }
takis94 0:ec64ecaac130 801 }
takis94 0:ec64ecaac130 802 void setTime()
takis94 0:ec64ecaac130 803 {
takis94 1:d320c79324fe 804 // print time for debugging
takis94 0:ec64ecaac130 805 serial.printf("set_time - %s",rxString);
takis94 1:d320c79324fe 806 // atoi() converts a string to an integer
takis94 0:ec64ecaac130 807 int time = atoi(rxString);
takis94 1:d320c79324fe 808 // update the time
takis94 0:ec64ecaac130 809 set_time(time);
takis94 0:ec64ecaac130 810 }
takis94 0:ec64ecaac130 811 void serialISR()
takis94 0:ec64ecaac130 812 {
takis94 1:d320c79324fe 813 // when a serial interrupt occurs, read rx string into buffer
takis94 0:ec64ecaac130 814 serial.gets(rxString,16);
takis94 1:d320c79324fe 815 // set flag
takis94 0:ec64ecaac130 816 setTimeFlag = 1;
takis94 0:ec64ecaac130 817 }
takis94 0:ec64ecaac130 818 void writeDataToFile(float tempereture,char* time,float pressure)
takis94 0:ec64ecaac130 819 {
takis94 1:d320c79324fe 820 leds = 15; // turn on LEDs for feedback
takis94 1:d320c79324fe 821 FILE *fp = fopen("/local/log.csv", "a"); // open 'log.csv' for appending
takis94 1:d320c79324fe 822 // if the file doesn't exist it is created, if it exists, data is appended to the end
takis94 1:d320c79324fe 823 fprintf(fp,"%s , %.2f, %.2f\n",time,tempereture,pressure); // print string to file
takis94 1:d320c79324fe 824 fclose(fp); // close file
takis94 1:d320c79324fe 825 leds = 0; // turn off LEDs to signify file access has finished
takis94 0:ec64ecaac130 826 }