ultrasonic distance sensor - time headerfile

Dependencies:   N5110 PowerControl SRF02 beep mbed

Fork of Ultrasonicdistancesensor by I Adam

Committer:
probrania7
Date:
Thu May 07 16:43:32 2015 +0000
Revision:
2:184524f95eb1
Parent:
1:920749af1300
Child:
3:bbfabbbc4291
screen not refreshing

Who changed what in which revision?

UserRevisionLine numberNew contents of line
probrania7 0:7a82ad48df33 1 #include "mbed.h"
probrania7 0:7a82ad48df33 2 #include "N5110.h"
probrania7 0:7a82ad48df33 3 #include "beep.h"
probrania7 0:7a82ad48df33 4 #include "SRF02.h"
probrania7 0:7a82ad48df33 5 #include "timeMgr.h"
probrania7 2:184524f95eb1 6 #include "datafile.h"
probrania7 0:7a82ad48df33 7
probrania7 0:7a82ad48df33 8
probrania7 0:7a82ad48df33 9 // VCC,SCE,RST,D/C,MOSI,SCLK,LED
probrania7 0:7a82ad48df33 10 N5110 lcd(p7,p8,p9,p10,p11,p13,p26);
probrania7 0:7a82ad48df33 11 // Can also power (VCC) directly from VOUT (3.3 V) -
probrania7 0:7a82ad48df33 12 // Can give better performance due to current limitation from GPIO pin
probrania7 0:7a82ad48df33 13
probrania7 2:184524f95eb1 14 // SDA, SCL
probrania7 0:7a82ad48df33 15 SRF02 sensor(p28,p27);
probrania7 0:7a82ad48df33 16
probrania7 0:7a82ad48df33 17 Beep beep1(p21);
probrania7 0:7a82ad48df33 18 AnalogIn potIn (p20);
probrania7 0:7a82ad48df33 19
probrania7 2:184524f95eb1 20 DigitalOut Led1 (p24);
probrania7 2:184524f95eb1 21 DigitalOut Led2 (p14);
probrania7 2:184524f95eb1 22 DigitalOut Led3 (p25);
probrania7 2:184524f95eb1 23 DigitalOut Led4 (p23);
probrania7 0:7a82ad48df33 24 //=========================
probrania7 0:7a82ad48df33 25 InterruptIn button1 (p17);
probrania7 0:7a82ad48df33 26 InterruptIn button2 (p29);
probrania7 0:7a82ad48df33 27 InterruptIn button3 (p30);
probrania7 0:7a82ad48df33 28 //===============================
probrania7 0:7a82ad48df33 29 int button1Flag = 0;
probrania7 0:7a82ad48df33 30 int button2Flag = 0;
probrania7 2:184524f95eb1 31 int button3Flag = 0;
probrania7 0:7a82ad48df33 32 int msgFlag = 1;
probrania7 0:7a82ad48df33 33
probrania7 0:7a82ad48df33 34 //function declarations
probrania7 0:7a82ad48df33 35 //=========================
probrania7 0:7a82ad48df33 36 void introMessage();
probrania7 0:7a82ad48df33 37 void errorHandler();
probrania7 0:7a82ad48df33 38 void menu();
probrania7 0:7a82ad48df33 39 void demo();
probrania7 0:7a82ad48df33 40 void cursorSelect(int, int, int, int);
probrania7 0:7a82ad48df33 41 void beeper(float, float);
probrania7 0:7a82ad48df33 42 void menuLevel(float);
probrania7 0:7a82ad48df33 43 void startMessage();
probrania7 0:7a82ad48df33 44 void displayClock();
probrania7 0:7a82ad48df33 45 //====================================
probrania7 0:7a82ad48df33 46 void distMeasure();
probrania7 0:7a82ad48df33 47 void saveData();
probrania7 0:7a82ad48df33 48 void adjustBrightness(float);
probrania7 2:184524f95eb1 49 void sysClock();
probrania7 2:184524f95eb1 50 void startClockMsg();
probrania7 2:184524f95eb1 51 void clearRow();
probrania7 2:184524f95eb1 52 void snapShot();
probrania7 0:7a82ad48df33 53 //------------------------
probrania7 0:7a82ad48df33 54 void button1Pressed();
probrania7 0:7a82ad48df33 55 void button2Pressed();
probrania7 0:7a82ad48df33 56 void button3Pressed();
probrania7 2:184524f95eb1 57
probrania7 0:7a82ad48df33 58
probrania7 0:7a82ad48df33 59 int menuLevelFlag = 0;
probrania7 0:7a82ad48df33 60 int brightFlag = 0;
probrania7 0:7a82ad48df33 61 int distFlag = 0;
probrania7 0:7a82ad48df33 62 int clockFlag = 0;
probrania7 2:184524f95eb1 63
probrania7 0:7a82ad48df33 64
probrania7 1:920749af1300 65 Ticker distTimer;
probrania7 1:920749af1300 66 int dstFlg = 0;
probrania7 1:920749af1300 67 void distChk()
probrania7 1:920749af1300 68 {
probrania7 2:184524f95eb1 69 dstFlg = 1;
probrania7 2:184524f95eb1 70 }
probrania7 1:920749af1300 71
probrania7 1:920749af1300 72
probrania7 1:920749af1300 73 Ticker clkTimer;
probrania7 1:920749af1300 74 int clkFlg = 0;
probrania7 1:920749af1300 75 void clkChk()
probrania7 1:920749af1300 76 {
probrania7 2:184524f95eb1 77 clkFlg = 1;
probrania7 2:184524f95eb1 78 }
probrania7 2:184524f95eb1 79
probrania7 2:184524f95eb1 80 void buzzerRange();
probrania7 1:920749af1300 81
probrania7 2:184524f95eb1 82 int distance;
probrania7 2:184524f95eb1 83 //--------------------
probrania7 2:184524f95eb1 84
probrania7 2:184524f95eb1 85 int speedTime;
probrania7 2:184524f95eb1 86 int soundDist;
probrania7 2:184524f95eb1 87 int soundSpeed;
probrania7 2:184524f95eb1 88 int Mspeed;
probrania7 2:184524f95eb1 89
probrania7 2:184524f95eb1 90 //--------------------
probrania7 1:920749af1300 91
probrania7 0:7a82ad48df33 92
probrania7 0:7a82ad48df33 93 int main()
probrania7 0:7a82ad48df33 94 {
probrania7 0:7a82ad48df33 95 // first need to initialise display
probrania7 0:7a82ad48df33 96 lcd.init();
probrania7 2:184524f95eb1 97
probrania7 2:184524f95eb1 98 // beeper(1000, 0.5);
probrania7 2:184524f95eb1 99
probrania7 0:7a82ad48df33 100 serial.attach(&serialISR); // attach serial ISR
probrania7 1:920749af1300 101 timer2.attach(&timer2Expired,1.0);
probrania7 2:184524f95eb1 102
probrania7 0:7a82ad48df33 103 set_time(1424535031); // initialise time to 1st January 1970
probrania7 2:184524f95eb1 104 //1424535031
probrania7 2:184524f95eb1 105
probrania7 0:7a82ad48df33 106 introMessage();
probrania7 2:184524f95eb1 107
probrania7 2:184524f95eb1 108 button1.rise(&button1Pressed);
probrania7 0:7a82ad48df33 109 button3.rise(&button3Pressed);
probrania7 0:7a82ad48df33 110 //-----------------------------------------------------
probrania7 2:184524f95eb1 111
probrania7 0:7a82ad48df33 112 //-----------------------------------------------------
probrania7 1:920749af1300 113 distTimer.attach(&distChk, 1.0); //call ISR every 5 sec
probrania7 1:920749af1300 114 clkTimer.attach(&clkChk, 1.0); //call ISR every 5 sec
probrania7 0:7a82ad48df33 115 while(1)
probrania7 2:184524f95eb1 116 {
probrania7 2:184524f95eb1 117 if (msgFlag)
probrania7 0:7a82ad48df33 118 {
probrania7 2:184524f95eb1 119 startMessage();
probrania7 2:184524f95eb1 120 }
probrania7 0:7a82ad48df33 121
probrania7 2:184524f95eb1 122 if (button1Flag)
probrania7 2:184524f95eb1 123 {
probrania7 0:7a82ad48df33 124 msgFlag=0;
probrania7 2:184524f95eb1 125 menu();
probrania7 2:184524f95eb1 126 menuLevelFlag = 1;
probrania7 2:184524f95eb1 127 }
probrania7 2:184524f95eb1 128
probrania7 2:184524f95eb1 129 if (menuLevelFlag)
probrania7 0:7a82ad48df33 130 {
probrania7 0:7a82ad48df33 131 button1Flag =0;
probrania7 2:184524f95eb1 132 menuLevel(potIn);
probrania7 0:7a82ad48df33 133 }
probrania7 2:184524f95eb1 134
probrania7 2:184524f95eb1 135 if (distFlag)
probrania7 0:7a82ad48df33 136 {
probrania7 0:7a82ad48df33 137 menuLevelFlag = 0;
probrania7 2:184524f95eb1 138 if (dstFlg)
probrania7 0:7a82ad48df33 139 {
probrania7 1:920749af1300 140 dstFlg = 0;
probrania7 1:920749af1300 141 distMeasure();
probrania7 2:184524f95eb1 142
probrania7 2:184524f95eb1 143 if(button1)
probrania7 1:920749af1300 144 {
probrania7 2:184524f95eb1 145 distFlag = 0;
probrania7 1:920749af1300 146 }
probrania7 2:184524f95eb1 147 }
probrania7 0:7a82ad48df33 148 }
probrania7 2:184524f95eb1 149
probrania7 2:184524f95eb1 150 if (brightFlag)
probrania7 0:7a82ad48df33 151 {
probrania7 0:7a82ad48df33 152 menuLevelFlag = 0;
probrania7 2:184524f95eb1 153 adjustBrightness(potIn);
probrania7 2:184524f95eb1 154 if (button1)
probrania7 2:184524f95eb1 155 {
probrania7 2:184524f95eb1 156 brightFlag = 0;
probrania7 2:184524f95eb1 157 }
probrania7 2:184524f95eb1 158
probrania7 2:184524f95eb1 159 }
probrania7 2:184524f95eb1 160 if (clockFlag)
probrania7 2:184524f95eb1 161 {
probrania7 2:184524f95eb1 162 menuLevelFlag = 0;
probrania7 2:184524f95eb1 163 if (clkFlg)
probrania7 0:7a82ad48df33 164 {
probrania7 1:920749af1300 165 clkFlg = 0;
probrania7 1:920749af1300 166 displayClock();
probrania7 2:184524f95eb1 167 if (button1)
probrania7 1:920749af1300 168 {
probrania7 2:184524f95eb1 169 clockFlag = 0;
probrania7 1:920749af1300 170 }
probrania7 2:184524f95eb1 171 }
probrania7 2:184524f95eb1 172 }
probrania7 2:184524f95eb1 173
probrania7 2:184524f95eb1 174 sleep();
probrania7 2:184524f95eb1 175 }
probrania7 0:7a82ad48df33 176 }
probrania7 0:7a82ad48df33 177
probrania7 0:7a82ad48df33 178 void introMessage()
probrania7 2:184524f95eb1 179 {
probrania7 2:184524f95eb1 180 //introducto text a
probrania7 2:184524f95eb1 181 lcd.drawLine(4, 0, 79, 0, 1);
probrania7 2:184524f95eb1 182 lcd.printString("Ultrasonic",13,1);
probrania7 2:184524f95eb1 183 lcd.printString("Distance",18,2);
probrania7 2:184524f95eb1 184 lcd.printString("Sensor",23,3);
probrania7 2:184524f95eb1 185 lcd.drawLine(4, 45, 79, 45, 1);
probrania7 2:184524f95eb1 186
probrania7 2:184524f95eb1 187 wait(1.3);
probrania7 2:184524f95eb1 188 lcd.clear();
probrania7 2:184524f95eb1 189
probrania7 2:184524f95eb1 190 //introductory text b
probrania7 2:184524f95eb1 191 lcd.drawLine(4, 0, 79, 0, 1);
probrania7 2:184524f95eb1 192 lcd.printString("University",13,1);
probrania7 2:184524f95eb1 193 lcd.printString("Of",35,2);
probrania7 2:184524f95eb1 194 lcd.printString("Leeds",26,3);
probrania7 2:184524f95eb1 195 lcd.drawLine(4, 45, 79, 45, 1);
probrania7 2:184524f95eb1 196
probrania7 2:184524f95eb1 197 wait(1.3);
probrania7 2:184524f95eb1 198 lcd.clear();
probrania7 2:184524f95eb1 199
probrania7 2:184524f95eb1 200 //introductory text c
probrania7 2:184524f95eb1 201 lcd.drawLine(4, 0, 79, 0, 1);
probrania7 2:184524f95eb1 202 lcd.printString("Ibrahim Adam",5,1);
probrania7 2:184524f95eb1 203 lcd.printString("200789110",10,2);
probrania7 2:184524f95eb1 204 lcd.printString("Yr2 - 2015",8,3);
probrania7 2:184524f95eb1 205 lcd.drawLine(4, 45, 79, 45, 1);
probrania7 2:184524f95eb1 206
probrania7 2:184524f95eb1 207 wait(1.3);
probrania7 2:184524f95eb1 208 lcd.clear();
probrania7 2:184524f95eb1 209
probrania7 2:184524f95eb1 210 //introductory text c
probrania7 2:184524f95eb1 211 lcd.drawLine(4, 0, 79, 0, 1);
probrania7 2:184524f95eb1 212 lcd.printString("Elec 2645",15,1);
probrania7 2:184524f95eb1 213 lcd.printString("Embedded SYS",8,2);
probrania7 2:184524f95eb1 214 lcd.printString("Project",21,3);
probrania7 2:184524f95eb1 215 lcd.drawLine(4, 45, 79, 45, 1);
probrania7 2:184524f95eb1 216
probrania7 2:184524f95eb1 217 msgFlag = 1;
probrania7 2:184524f95eb1 218
probrania7 2:184524f95eb1 219 wait(1.3);
probrania7 2:184524f95eb1 220 lcd.clear();
probrania7 2:184524f95eb1 221
probrania7 2:184524f95eb1 222 startClockMsg();
probrania7 2:184524f95eb1 223 }
probrania7 0:7a82ad48df33 224
probrania7 2:184524f95eb1 225 void errorHandler()
probrania7 2:184524f95eb1 226 {
probrania7 2:184524f95eb1 227 //end text
probrania7 2:184524f95eb1 228 lcd.drawLine(4, 0, 79, 0, 1);
probrania7 2:184524f95eb1 229 lcd.printString("Error Help",12,1);
probrania7 2:184524f95eb1 230
probrania7 2:184524f95eb1 231
probrania7 2:184524f95eb1 232 wait(0.2);
probrania7 2:184524f95eb1 233 lcd.clear();
probrania7 2:184524f95eb1 234 }
probrania7 2:184524f95eb1 235
probrania7 2:184524f95eb1 236 void adjustBrightness(float x)
probrania7 2:184524f95eb1 237 {
probrania7 2:184524f95eb1 238 if ((x >= 0) && (x < 0.2)) {
probrania7 2:184524f95eb1 239
probrania7 2:184524f95eb1 240 lcd.setBrightness(0);
probrania7 2:184524f95eb1 241 lcd.printString("Light 0%",13,1);
probrania7 2:184524f95eb1 242 }
probrania7 2:184524f95eb1 243
probrania7 2:184524f95eb1 244 if ((x >= 0.2) && (x < 0.4)) {
probrania7 2:184524f95eb1 245
probrania7 2:184524f95eb1 246 lcd.setBrightness(0.25);
probrania7 2:184524f95eb1 247 lcd.printString("Light 25%",13,1);
probrania7 2:184524f95eb1 248 }
probrania7 2:184524f95eb1 249
probrania7 2:184524f95eb1 250 if ((x >= 0.4) && (x < 0.6)) {
probrania7 2:184524f95eb1 251
probrania7 2:184524f95eb1 252 lcd.setBrightness(0.5);
probrania7 2:184524f95eb1 253 lcd.printString("Light 50%",13,1);
probrania7 2:184524f95eb1 254 }
probrania7 2:184524f95eb1 255
probrania7 2:184524f95eb1 256 if ((x >= 0.6) && (x < 0.8)) {
probrania7 2:184524f95eb1 257
probrania7 2:184524f95eb1 258 lcd.setBrightness(0.75);
probrania7 2:184524f95eb1 259 lcd.printString("Light 75%",13,1);
probrania7 2:184524f95eb1 260
probrania7 2:184524f95eb1 261 }
probrania7 2:184524f95eb1 262 if (x >= 0.8) {
probrania7 2:184524f95eb1 263
probrania7 2:184524f95eb1 264 lcd.setBrightness(1);
probrania7 2:184524f95eb1 265 lcd.printString("Light 100%",13,1);
probrania7 2:184524f95eb1 266 }
probrania7 2:184524f95eb1 267 lcd.clear();
probrania7 0:7a82ad48df33 268
probrania7 2:184524f95eb1 269 }
probrania7 2:184524f95eb1 270
probrania7 0:7a82ad48df33 271 void menu()
probrania7 2:184524f95eb1 272 {
probrania7 2:184524f95eb1 273 lcd.clear();
probrania7 0:7a82ad48df33 274 lcd.printString("-MAIN MENU-",9,0);
probrania7 0:7a82ad48df33 275 lcd.drawLine(4, 7, 79, 7, 1);
probrania7 0:7a82ad48df33 276 lcd.printString("Dist read",15,1);
probrania7 2:184524f95eb1 277 lcd.printString("Data",15,2);
probrania7 0:7a82ad48df33 278 lcd.printString("brightness",15,3);
probrania7 2:184524f95eb1 279 lcd.printString("SYS Clock",15,4);
probrania7 2:184524f95eb1 280 }
probrania7 0:7a82ad48df33 281
probrania7 0:7a82ad48df33 282 void cursorSelect(int xDimm, int xLimm, int yDimm, int yLimm)
probrania7 0:7a82ad48df33 283 {
probrania7 0:7a82ad48df33 284 int i,j;
probrania7 2:184524f95eb1 285
probrania7 0:7a82ad48df33 286 //clear selecton column
probrania7 2:184524f95eb1 287 for (i = 1; i < 6; i++)
probrania7 0:7a82ad48df33 288 {
probrania7 2:184524f95eb1 289 for(j = 1; j < 46; j++)
probrania7 0:7a82ad48df33 290 {
probrania7 0:7a82ad48df33 291 lcd.clearPixel(i,j);
probrania7 2:184524f95eb1 292 }
probrania7 2:184524f95eb1 293 }
probrania7 2:184524f95eb1 294
probrania7 0:7a82ad48df33 295 //particular selection
probrania7 2:184524f95eb1 296 for (i = xDimm; i < xLimm; i++)
probrania7 0:7a82ad48df33 297 {
probrania7 2:184524f95eb1 298 for(j = yDimm; j < yLimm; j++)
probrania7 0:7a82ad48df33 299 {
probrania7 2:184524f95eb1 300 lcd.setPixel(i,j);
probrania7 2:184524f95eb1 301 }
probrania7 2:184524f95eb1 302 }
probrania7 2:184524f95eb1 303 lcd.refresh();
probrania7 2:184524f95eb1 304 }
probrania7 0:7a82ad48df33 305
probrania7 0:7a82ad48df33 306 void demo()
probrania7 0:7a82ad48df33 307 {
probrania7 0:7a82ad48df33 308 // these are default settings so not strictly needed
probrania7 0:7a82ad48df33 309 lcd.normalMode(); // normal colour mode
probrania7 2:184524f95eb1 310 lcd.setBrightness(0.5); // put LED backlight on 50%
probrania7 0:7a82ad48df33 311
probrania7 2:184524f95eb1 312 // can directly print strings at specified co-ordinates
probrania7 2:184524f95eb1 313 lcd.printString("Hello, World!",0,0);
probrania7 0:7a82ad48df33 314
probrania7 2:184524f95eb1 315 char buffer[14]; // each character is 6 pixels wide, screen is 84 pixels (84/6 = 14)
probrania7 2:184524f95eb1 316 // so can display a string of a maximum 14 characters in length
probrania7 2:184524f95eb1 317 // or create formatted strings - ensure they aren't more than 14 characters long
probrania7 2:184524f95eb1 318 int temperature = 27;
probrania7 2:184524f95eb1 319 int length = sprintf(buffer,"T = %2d C",temperature); // print formatted data to buffer
probrania7 2:184524f95eb1 320 // it is important the format specifier ensures the length will fit in the buffer
probrania7 2:184524f95eb1 321 if (length <= 14) // if string will fit on display
probrania7 2:184524f95eb1 322 lcd.printString(buffer,0,1); // display on screen
probrania7 0:7a82ad48df33 323
probrania7 2:184524f95eb1 324 float pressure = 1012.3; // same idea with floats
probrania7 2:184524f95eb1 325 length = sprintf(buffer,"P = %.2f mb",pressure);
probrania7 2:184524f95eb1 326 if (length <= 14)
probrania7 2:184524f95eb1 327 lcd.printString(buffer,0,2);
probrania7 0:7a82ad48df33 328
probrania7 2:184524f95eb1 329 // can also print individual characters at specified place
probrania7 2:184524f95eb1 330 lcd.printChar('X',5,3);
probrania7 0:7a82ad48df33 331
probrania7 2:184524f95eb1 332 // draw a line across the display at y = 40 pixels (origin top-left)
probrania7 2:184524f95eb1 333 for (int i = 0; i < WIDTH; i++)
probrania7 2:184524f95eb1 334 {
probrania7 2:184524f95eb1 335 lcd.setPixel(i,40);
probrania7 2:184524f95eb1 336 }
probrania7 2:184524f95eb1 337 // need to refresh display after setting pixels
probrania7 2:184524f95eb1 338 lcd.refresh();
probrania7 0:7a82ad48df33 339
probrania7 2:184524f95eb1 340 // can also check status of pixels using getPixel(x,y)
probrania7 0:7a82ad48df33 341
probrania7 2:184524f95eb1 342 wait(5.0);
probrania7 2:184524f95eb1 343 lcd.clear(); // clear display
probrania7 2:184524f95eb1 344 lcd.inverseMode(); // invert colours
probrania7 2:184524f95eb1 345 lcd.setBrightness(1.0); // put LED backlight on full
probrania7 0:7a82ad48df33 346
probrania7 2:184524f95eb1 347 float array[84];
probrania7 0:7a82ad48df33 348
probrania7 2:184524f95eb1 349 for (int i = 0; i < 84; i++)
probrania7 2:184524f95eb1 350 {
probrania7 2:184524f95eb1 351 array[i] = 0.5 + 0.5*sin(i*2*3.14/84);
probrania7 2:184524f95eb1 352 }
probrania7 0:7a82ad48df33 353
probrania7 2:184524f95eb1 354 // can also plot graphs - 84 elements only
probrania7 2:184524f95eb1 355 // values must be in range 0.0 - 1.0
probrania7 2:184524f95eb1 356 lcd.plotArray(array);
probrania7 2:184524f95eb1 357 wait(5.0);
probrania7 2:184524f95eb1 358 lcd.clear();
probrania7 2:184524f95eb1 359 lcd.normalMode(); // normal colour mode back
probrania7 2:184524f95eb1 360 lcd.setBrightness(0.5); // put LED backlight on 50%
probrania7 0:7a82ad48df33 361
probrania7 2:184524f95eb1 362 // example of drawing lines
probrania7 2:184524f95eb1 363 for (int x = 0; x < WIDTH ; x+=10)
probrania7 2:184524f95eb1 364 {
probrania7 2:184524f95eb1 365 // x0,y0,x1,y1,type 0-white,1-black,2-dotted
probrania7 2:184524f95eb1 366 lcd.drawLine(0,0,x,HEIGHT,2);
probrania7 2:184524f95eb1 367 }
probrania7 0:7a82ad48df33 368
probrania7 2:184524f95eb1 369 wait(5.0);
probrania7 2:184524f95eb1 370 lcd.clear();
probrania7 0:7a82ad48df33 371
probrania7 2:184524f95eb1 372 // example of how to draw circles
probrania7 2:184524f95eb1 373 lcd.drawCircle(WIDTH/2,HEIGHT/2,20,1); // x,y,radius,black fill
probrania7 2:184524f95eb1 374 lcd.drawCircle(WIDTH/2,HEIGHT/2,10,2); // x,y,radius,white fill
probrania7 2:184524f95eb1 375 lcd.drawCircle(WIDTH/2,HEIGHT/2,30,0); // x,y,radius,transparent with outline
probrania7 0:7a82ad48df33 376
probrania7 2:184524f95eb1 377 wait(5.0);
probrania7 2:184524f95eb1 378 lcd.clear();
probrania7 0:7a82ad48df33 379
probrania7 2:184524f95eb1 380 // example of how to draw rectangles
probrania7 2:184524f95eb1 381 // origin x,y,width,height,type
probrania7 2:184524f95eb1 382 lcd.drawRect(10,10,50,30,1); // filled black rectangle
probrania7 2:184524f95eb1 383 lcd.drawRect(15,15,20,10,2); // filled white rectange (no outline)
probrania7 2:184524f95eb1 384 lcd.drawRect(2,2,70,40,0); // transparent, just outline
probrania7 0:7a82ad48df33 385
probrania7 2:184524f95eb1 386 wait(5.0);
probrania7 2:184524f95eb1 387 lcd.clear();
probrania7 2:184524f95eb1 388 }
probrania7 0:7a82ad48df33 389
probrania7 0:7a82ad48df33 390 //Interrupt service routines
probrania7 0:7a82ad48df33 391 //===========================
probrania7 0:7a82ad48df33 392 void button1Pressed()
probrania7 0:7a82ad48df33 393 {
probrania7 0:7a82ad48df33 394 button1Flag = 1;
probrania7 2:184524f95eb1 395 }
probrania7 0:7a82ad48df33 396 void button2Pressed()
probrania7 0:7a82ad48df33 397 {
probrania7 2:184524f95eb1 398 button2Flag = 1;
probrania7 2:184524f95eb1 399 }
probrania7 0:7a82ad48df33 400 void button3Pressed()
probrania7 0:7a82ad48df33 401 {
probrania7 2:184524f95eb1 402 button3Flag = 1;
probrania7 2:184524f95eb1 403 }
probrania7 0:7a82ad48df33 404
probrania7 2:184524f95eb1 405 //beep sound based on beeper frequency and beeper time
probrania7 0:7a82ad48df33 406 //entered respectively
probrania7 0:7a82ad48df33 407 void beeper(float beeperFreq, float beeperTime)
probrania7 0:7a82ad48df33 408 {
probrania7 2:184524f95eb1 409 beep1.beep(beeperFreq,beeperTime);
probrania7 2:184524f95eb1 410 }
probrania7 2:184524f95eb1 411
probrania7 0:7a82ad48df33 412 void menuLevel(float lvl)
probrania7 0:7a82ad48df33 413 {
probrania7 2:184524f95eb1 414 if ((lvl >= 0) && (lvl < 0.25))
probrania7 2:184524f95eb1 415 {
probrania7 0:7a82ad48df33 416 cursorSelect(1, 6, 9, 14);
probrania7 2:184524f95eb1 417 if (button2)
probrania7 2:184524f95eb1 418 {
probrania7 0:7a82ad48df33 419 distFlag = 1;
probrania7 2:184524f95eb1 420 brightFlag = 0;
probrania7 0:7a82ad48df33 421 clockFlag = 0;
probrania7 2:184524f95eb1 422 }
probrania7 2:184524f95eb1 423
probrania7 0:7a82ad48df33 424 }
probrania7 0:7a82ad48df33 425 if ((lvl >= 0.25) && (lvl < 0.5))
probrania7 0:7a82ad48df33 426 {
probrania7 0:7a82ad48df33 427 cursorSelect(1, 6, 17, 22);
probrania7 0:7a82ad48df33 428 }
probrania7 2:184524f95eb1 429
probrania7 2:184524f95eb1 430 if ((lvl >= 0.5) && (lvl < 0.75))
probrania7 0:7a82ad48df33 431 {
probrania7 2:184524f95eb1 432 cursorSelect(1, 6, 25, 30);
probrania7 2:184524f95eb1 433 if (button2)
probrania7 0:7a82ad48df33 434 {
probrania7 0:7a82ad48df33 435 brightFlag = 1;
probrania7 2:184524f95eb1 436 distFlag =0;
probrania7 0:7a82ad48df33 437 clockFlag = 0;
probrania7 2:184524f95eb1 438 }
probrania7 2:184524f95eb1 439
probrania7 0:7a82ad48df33 440 }
probrania7 2:184524f95eb1 441 if ((lvl >= 0.75) && (lvl <= 1))
probrania7 0:7a82ad48df33 442 {
probrania7 0:7a82ad48df33 443 cursorSelect(1, 6, 33, 38);
probrania7 2:184524f95eb1 444 if (button2)
probrania7 0:7a82ad48df33 445 {
probrania7 0:7a82ad48df33 446 clockFlag = 1;
probrania7 0:7a82ad48df33 447 distFlag = 0;
probrania7 2:184524f95eb1 448 brightFlag = 0;
probrania7 2:184524f95eb1 449 }
probrania7 0:7a82ad48df33 450 }
probrania7 2:184524f95eb1 451
probrania7 2:184524f95eb1 452
probrania7 2:184524f95eb1 453 }
probrania7 2:184524f95eb1 454
probrania7 0:7a82ad48df33 455 void distMeasure()
probrania7 0:7a82ad48df33 456 {
probrania7 0:7a82ad48df33 457 lcd.clear();
probrania7 0:7a82ad48df33 458 lcd.printString("Measure",15,0);
probrania7 2:184524f95eb1 459
probrania7 2:184524f95eb1 460
probrania7 0:7a82ad48df33 461 // read sensor distance in cm and print over serial port
probrania7 0:7a82ad48df33 462 char buffer[14]; // each character is 6 pixels wide, screen is 84 pixels (84/6 = 14)
probrania7 2:184524f95eb1 463 // so can display a string of a maximum 14 characters in length
probrania7 2:184524f95eb1 464 // or create formatted strings - ensure they aren't more than 14 characters long
probrania7 2:184524f95eb1 465
probrania7 2:184524f95eb1 466
probrania7 2:184524f95eb1 467 distance = sensor.getDistanceCm();
probrania7 2:184524f95eb1 468 soundDist = distance * 2;
probrania7 2:184524f95eb1 469
probrania7 2:184524f95eb1 470 soundSpeed = 34029;
probrania7 2:184524f95eb1 471 speedTime = soundDist/soundSpeed;
probrania7 2:184524f95eb1 472 Mspeed = distance/speedTime;
probrania7 2:184524f95eb1 473
probrania7 2:184524f95eb1 474 //====================================================================================
probrania7 2:184524f95eb1 475 /*
probrania7 2:184524f95eb1 476 float Avg;
probrania7 2:184524f95eb1 477 float k;
probrania7 2:184524f95eb1 478 float array[10];
probrania7 2:184524f95eb1 479 for (int a = 0;a<10;a++)
probrania7 2:184524f95eb1 480 {
probrania7 2:184524f95eb1 481 array[a] = ;
probrania7 2:184524f95eb1 482 k = k + array[a];
probrania7 2:184524f95eb1 483 }
probrania7 2:184524f95eb1 484 Avg = k/10;
probrania7 2:184524f95eb1 485
probrania7 2:184524f95eb1 486 */
probrania7 2:184524f95eb1 487 //====================================================================================
probrania7 2:184524f95eb1 488
probrania7 0:7a82ad48df33 489 int length = sprintf(buffer,"Dist = %2d cm",distance); // print formatted data to buffer
probrania7 2:184524f95eb1 490 // it is important the format specifier ensures the length will fit in the buffer
probrania7 2:184524f95eb1 491
probrania7 2:184524f95eb1 492
probrania7 2:184524f95eb1 493
probrania7 2:184524f95eb1 494 if (length <= 14) { // if string will fit on display
probrania7 0:7a82ad48df33 495 lcd.printString(buffer,0,1); // display on screen
probrania7 0:7a82ad48df33 496 }
probrania7 2:184524f95eb1 497
probrania7 0:7a82ad48df33 498
probrania7 2:184524f95eb1 499
probrania7 2:184524f95eb1 500 serial.printf("Distance = %d cm\n",distance);
probrania7 1:920749af1300 501 serial.printf("\n\n\r %s, %0.2f \n",buffer, length);
probrania7 2:184524f95eb1 502
probrania7 2:184524f95eb1 503
probrania7 2:184524f95eb1 504
probrania7 2:184524f95eb1 505 }
probrania7 2:184524f95eb1 506
probrania7 0:7a82ad48df33 507 void saveData()
probrania7 0:7a82ad48df33 508 {
probrania7 0:7a82ad48df33 509 lcd.printString("Save data",36,0);
probrania7 2:184524f95eb1 510 }
probrania7 2:184524f95eb1 511 void sysClock()
probrania7 0:7a82ad48df33 512 {
probrania7 0:7a82ad48df33 513 lcd.printString("System test",30,0);
probrania7 2:184524f95eb1 514 }
probrania7 0:7a82ad48df33 515 void startMessage()
probrania7 0:7a82ad48df33 516 {
probrania7 0:7a82ad48df33 517 lcd.printString("Press",25,2);
probrania7 2:184524f95eb1 518 lcd.printString("Start Button",8,3);
probrania7 0:7a82ad48df33 519 //displayClock();
probrania7 2:184524f95eb1 520
probrania7 2:184524f95eb1 521 }
probrania7 0:7a82ad48df33 522 void displayClock()
probrania7 0:7a82ad48df33 523 {
probrania7 1:920749af1300 524 //timer2.attach(&timer2Expired,1.0);
probrania7 1:920749af1300 525 //serial.attach(&serialISR); // attach serial ISR
probrania7 0:7a82ad48df33 526 lcd.clear();
probrania7 2:184524f95eb1 527
probrania7 0:7a82ad48df33 528 lcd.printString("-SYS CLOCK-",9,0);
probrania7 2:184524f95eb1 529
probrania7 2:184524f95eb1 530 if (timer2Flag) {
probrania7 2:184524f95eb1 531 getCurrentTime();
probrania7 2:184524f95eb1 532 }
probrania7 2:184524f95eb1 533
probrania7 2:184524f95eb1 534 if (setTimeFlag) {
probrania7 2:184524f95eb1 535 chkUpdateTime();
probrania7 2:184524f95eb1 536 }
probrania7 2:184524f95eb1 537
probrania7 2:184524f95eb1 538 lcd.printString(buffer2,4,2); // display on screen
probrania7 2:184524f95eb1 539 }
probrania7 2:184524f95eb1 540
probrania7 2:184524f95eb1 541 void buzzerRange()
probrania7 2:184524f95eb1 542 {
probrania7 2:184524f95eb1 543
probrania7 0:7a82ad48df33 544 {
probrania7 2:184524f95eb1 545 beeper(400,distance);
probrania7 2:184524f95eb1 546 }
probrania7 2:184524f95eb1 547 }
probrania7 2:184524f95eb1 548
probrania7 2:184524f95eb1 549
probrania7 2:184524f95eb1 550 void startClockMsg()
probrania7 2:184524f95eb1 551 {
probrania7 2:184524f95eb1 552 if(time(NULL)) {
probrania7 2:184524f95eb1 553 displayClock();
probrania7 2:184524f95eb1 554 lcd.printString("Set Clock",15,0);
probrania7 2:184524f95eb1 555 wait(0.1);
probrania7 2:184524f95eb1 556 clearRow();
probrania7 2:184524f95eb1 557 wait(0.1);
probrania7 2:184524f95eb1 558 lcd.printString("Set Clock",15,0);
probrania7 2:184524f95eb1 559 wait(0.1);
probrania7 2:184524f95eb1 560 clearRow();
probrania7 2:184524f95eb1 561 wait(0.1);
probrania7 2:184524f95eb1 562 lcd.printString("Set Clock",15,0);
probrania7 2:184524f95eb1 563 wait(0.1);
probrania7 2:184524f95eb1 564 clearRow();
probrania7 2:184524f95eb1 565 wait(0.3);
probrania7 2:184524f95eb1 566 lcd.printString("Set Clock",15,0);
probrania7 2:184524f95eb1 567 wait(0.1);
probrania7 2:184524f95eb1 568 clearRow();
probrania7 2:184524f95eb1 569 wait(0.1);
probrania7 2:184524f95eb1 570 lcd.printString("Set Clock",15,0);
probrania7 2:184524f95eb1 571 wait(1);
probrania7 2:184524f95eb1 572 lcd.clear();
probrania7 2:184524f95eb1 573 } else {
probrania7 2:184524f95eb1 574 displayClock();
probrania7 2:184524f95eb1 575 lcd.printString("Clock Set",15,0);
probrania7 2:184524f95eb1 576 wait(1.3);
probrania7 2:184524f95eb1 577 }
probrania7 2:184524f95eb1 578 }
probrania7 2:184524f95eb1 579
probrania7 2:184524f95eb1 580 void clearRow()
probrania7 2:184524f95eb1 581 {
probrania7 2:184524f95eb1 582 int i,j;
probrania7 2:184524f95eb1 583 //clear selecton column
probrania7 2:184524f95eb1 584 for(j = 0; j < 7; j++)
probrania7 2:184524f95eb1 585
probrania7 0:7a82ad48df33 586 {
probrania7 2:184524f95eb1 587
probrania7 2:184524f95eb1 588 for (i = 0; i < 83; i++)
probrania7 2:184524f95eb1 589 {
probrania7 2:184524f95eb1 590 lcd.clearPixel(i,j);
probrania7 2:184524f95eb1 591 }
probrania7 2:184524f95eb1 592 }
probrania7 2:184524f95eb1 593 lcd.refresh();
probrania7 2:184524f95eb1 594 wait(0.2);
probrania7 2:184524f95eb1 595 }
probrania7 2:184524f95eb1 596
probrania7 2:184524f95eb1 597 void snapShot()
probrania7 2:184524f95eb1 598 {
probrania7 2:184524f95eb1 599 Timer A;
probrania7 2:184524f95eb1 600 A.start();
probrania7 2:184524f95eb1 601 if (A.read_ms()==3000)
probrania7 2:184524f95eb1 602 {
probrania7 2:184524f95eb1 603 beeper(1000, 0.1);
probrania7 2:184524f95eb1 604 beeper(1000, 0.1);
probrania7 2:184524f95eb1 605 beeper(1000, 0.1);
probrania7 2:184524f95eb1 606 beeper(1000, 0.5);
probrania7 2:184524f95eb1 607
probrania7 2:184524f95eb1 608 if (button3)
probrania7 2:184524f95eb1 609 {
probrania7 2:184524f95eb1 610 beeper(1000,0.5);
probrania7 2:184524f95eb1 611
probrania7 2:184524f95eb1 612 }
probrania7 2:184524f95eb1 613 }
probrania7 2:184524f95eb1 614
probrania7 2:184524f95eb1 615 }
probrania7 2:184524f95eb1 616