First Draft, serial print change based on distance

Committer:
liam94
Date:
Thu Feb 03 21:58:22 2022 +0000
Revision:
14:837945ccd8c0
Parent:
13:cc99df342c7f
Child:
15:d8ff594535fc
added in new library titled "beep" to interface with the buzzer, used this library to make the buzzer sound for 0.5 seconds to indicate to the user when a reading has been taken

Who changed what in which revision?

UserRevisionLine numberNew contents of line
liam94 0:506531d0531c 1 #include "mbed.h"
liam94 0:506531d0531c 2 #include "ultrasonic.h"
liam94 0:506531d0531c 3 #include "N5110.h"
liam94 5:98845ccaaacd 4 #include "Joystick.h"
liam94 14:837945ccd8c0 5 #include "beep.h"
liam94 5:98845ccaaacd 6 #include "main.h"
liam94 4:77500a7f951d 7
liam94 8:7e48229d678c 8 /***************************************************************************//**
liam94 8:7e48229d678c 9 *
liam94 8:7e48229d678c 10 * the main code below sets all the interrupts to pull down and also for the start
liam94 8:7e48229d678c 11 * and back buttons it is sent to the specific start and back functions which sets
liam94 8:7e48229d678c 12 * the flags which are then used in other functions.
liam94 8:7e48229d678c 13 *
liam94 8:7e48229d678c 14 * the mu.startUpdates() is where the ultrasonic sensor is told to start measuring
liam94 8:7e48229d678c 15 * the distances.
liam94 8:7e48229d678c 16 * the joystick and lcd are then initialised and the man menu function is then
liam94 8:7e48229d678c 17 * called.
liam94 8:7e48229d678c 18 *
liam94 8:7e48229d678c 19 *******************************************************************************/
liam94 2:3ace5b4ae9a7 20
liam94 2:3ace5b4ae9a7 21 int main()
liam94 1:a1795335ef8c 22 {
liam94 5:98845ccaaacd 23
liam94 3:0b0fbddb6f51 24 R.mode(PullDown);
liam94 5:98845ccaaacd 25 Start.mode(PullDown);
liam94 5:98845ccaaacd 26 Start.rise(Start_isr);
liam94 5:98845ccaaacd 27 Back.mode(PullDown);
liam94 5:98845ccaaacd 28 Back.rise(Back_isr);
liam94 8:7e48229d678c 29 // printf("set buttons");
liam94 8:7e48229d678c 30
liam94 8:7e48229d678c 31 mu.startUpdates();
liam94 8:7e48229d678c 32 // printf ("Ultrasonic Updates started");
liam94 5:98845ccaaacd 33
liam94 5:98845ccaaacd 34 joystick.init();
liam94 8:7e48229d678c 35 // printf("initialise joystick")
liam94 5:98845ccaaacd 36 init_display();
liam94 8:7e48229d678c 37
liam94 5:98845ccaaacd 38 main_menu();
liam94 5:98845ccaaacd 39
liam94 5:98845ccaaacd 40 }
liam94 5:98845ccaaacd 41
liam94 8:7e48229d678c 42 /***************************************************************************//**
liam94 8:7e48229d678c 43 *
liam94 8:7e48229d678c 44 * added function which initalise the display and sets the contrast, this is
liam94 8:7e48229d678c 45 * called from the int main and so the LCD boots up on startup.
liam94 8:7e48229d678c 46 *
liam94 8:7e48229d678c 47 *******************************************************************************/
liam94 8:7e48229d678c 48
liam94 5:98845ccaaacd 49 void init_display(){
liam94 8:7e48229d678c 50
liam94 8:7e48229d678c 51 // printf("initialise display");
liam94 4:77500a7f951d 52 lcd.init();
liam94 4:77500a7f951d 53 lcd.setContrast(0.4);
liam94 8:7e48229d678c 54 lcd.clear();
liam94 5:98845ccaaacd 55
liam94 5:98845ccaaacd 56 }
liam94 8:7e48229d678c 57
liam94 8:7e48229d678c 58 /***************************************************************************//**
liam94 8:7e48229d678c 59 *
liam94 8:7e48229d678c 60 * this function is the main menu for the program, it is called at the start and
liam94 8:7e48229d678c 61 * depending on what string is selected, clicking the start uton will send the
liam94 8:7e48229d678c 62 * user to the specified function.
liam94 8:7e48229d678c 63 *
liam94 8:7e48229d678c 64 *******************************************************************************/
liam94 5:98845ccaaacd 65
liam94 5:98845ccaaacd 66 void main_menu(){
liam94 5:98845ccaaacd 67
liam94 8:7e48229d678c 68 // printf("main menu");
liam94 8:7e48229d678c 69
liam94 5:98845ccaaacd 70 lcd.clear();
liam94 5:98845ccaaacd 71 Start_flag = 0;
liam94 5:98845ccaaacd 72 int select = 0;
liam94 13:cc99df342c7f 73 LEDS = 63; // 63 on the bus output sets all LEDs to off
liam94 5:98845ccaaacd 74
liam94 5:98845ccaaacd 75 while (1) {
liam94 5:98845ccaaacd 76
liam94 5:98845ccaaacd 77 Direction d = joystick.get_direction();
liam94 8:7e48229d678c 78 // printf("Direction = %i\n",d);
liam94 5:98845ccaaacd 79
liam94 5:98845ccaaacd 80 switch(select) {
liam94 5:98845ccaaacd 81 case 0:
liam94 5:98845ccaaacd 82 switch(d) {
liam94 8:7e48229d678c 83 case N:
liam94 5:98845ccaaacd 84 select = 1;
liam94 8:7e48229d678c 85 // printf("UP");
liam94 5:98845ccaaacd 86 break;
liam94 8:7e48229d678c 87 case S:
liam94 5:98845ccaaacd 88 select = 1;
liam94 8:7e48229d678c 89 // printf("Down");
liam94 5:98845ccaaacd 90 break;
liam94 5:98845ccaaacd 91 }
liam94 5:98845ccaaacd 92 break;
liam94 5:98845ccaaacd 93 case 1:
liam94 5:98845ccaaacd 94 switch(d) {
liam94 8:7e48229d678c 95 case N:
liam94 5:98845ccaaacd 96 select = 0;
liam94 8:7e48229d678c 97 // printf("UP");
liam94 5:98845ccaaacd 98 break;
liam94 8:7e48229d678c 99 case S:
liam94 5:98845ccaaacd 100 select = 0;
liam94 8:7e48229d678c 101 // printf("Down");
liam94 5:98845ccaaacd 102 break;
liam94 5:98845ccaaacd 103 }
liam94 5:98845ccaaacd 104 break;
liam94 5:98845ccaaacd 105
liam94 5:98845ccaaacd 106 }
liam94 5:98845ccaaacd 107 wait(0.1);
liam94 5:98845ccaaacd 108 if (select == 0) {
liam94 8:7e48229d678c 109 // printf("main menu - sense object");
liam94 5:98845ccaaacd 110 lcd.clear();
liam94 5:98845ccaaacd 111 lcd.printString("Detect",27,0);
liam94 5:98845ccaaacd 112 lcd.printString("Sense Object",7,2);
liam94 5:98845ccaaacd 113 lcd.printString("Calibration",7,3);
liam94 5:98845ccaaacd 114 lcd.drawCircle(3,19,2,FILL_TRANSPARENT);
liam94 5:98845ccaaacd 115 lcd.refresh();
liam94 5:98845ccaaacd 116 wait(0.15);
liam94 5:98845ccaaacd 117 if (Start_flag == 1) {
liam94 5:98845ccaaacd 118 Start_flag = 0;
liam94 5:98845ccaaacd 119 sense_object();
liam94 5:98845ccaaacd 120 }
liam94 5:98845ccaaacd 121 } else if (select == 1) {
liam94 8:7e48229d678c 122 // printf("main menu - calibration");
liam94 5:98845ccaaacd 123 lcd.clear();
liam94 5:98845ccaaacd 124 lcd.printString("Detect",27,0);
liam94 5:98845ccaaacd 125 lcd.printString("Sense Object", 7,2);
liam94 5:98845ccaaacd 126 lcd.printString("Calibration",7,3);
liam94 5:98845ccaaacd 127 lcd.drawCircle(3,27,2,FILL_TRANSPARENT);
liam94 5:98845ccaaacd 128 lcd.refresh();
liam94 5:98845ccaaacd 129 wait(0.15);
liam94 5:98845ccaaacd 130 if (Start_flag == 1) {
liam94 5:98845ccaaacd 131 Start_flag = 0;
liam94 6:18a4dd77057e 132 calibrate_object();
liam94 5:98845ccaaacd 133 }
liam94 5:98845ccaaacd 134 }
liam94 5:98845ccaaacd 135 }
liam94 5:98845ccaaacd 136 }
liam94 5:98845ccaaacd 137
liam94 8:7e48229d678c 138 /***************************************************************************//**
liam94 8:7e48229d678c 139 *
liam94 8:7e48229d678c 140 * this function is for sensing the object
liam94 8:7e48229d678c 141 *
liam94 8:7e48229d678c 142 *******************************************************************************/
liam94 8:7e48229d678c 143
liam94 5:98845ccaaacd 144 void sense_object(){
liam94 8:7e48229d678c 145
liam94 8:7e48229d678c 146 // printf("sense object");
liam94 5:98845ccaaacd 147
liam94 5:98845ccaaacd 148 // set inital state
liam94 5:98845ccaaacd 149 int state = 0;
liam94 5:98845ccaaacd 150
liam94 2:3ace5b4ae9a7 151 while(1)
liam94 2:3ace5b4ae9a7 152 {
liam94 13:cc99df342c7f 153 LEDS = fsm[state]; // output current state
liam94 10:be53044119d1 154 printf("state = %d\r\n",state);
liam94 8:7e48229d678c 155
liam94 8:7e48229d678c 156 // check which state we are in and see which the next state should be
liam94 4:77500a7f951d 157 switch(state) {
liam94 9:ada61082bbaa 158 case 0:{
liam94 4:77500a7f951d 159 lcd.clear();
liam94 4:77500a7f951d 160 lcd.printString(" object at 0'",0,0);
liam94 4:77500a7f951d 161 lcd.printString(" R + 60'",0,2);
liam94 13:cc99df342c7f 162 lcd.printString("Start to take",0,4);
liam94 13:cc99df342c7f 163 lcd.printString(" Reading ",0,5);
liam94 4:77500a7f951d 164 lcd.refresh();
liam94 3:0b0fbddb6f51 165 if (R == 1){
liam94 3:0b0fbddb6f51 166 state = 1;}
liam94 3:0b0fbddb6f51 167 else state = 0;
liam94 9:ada61082bbaa 168
liam94 9:ada61082bbaa 169 if (Start_flag == 1) {
liam94 9:ada61082bbaa 170 Start_flag = 0;
liam94 9:ada61082bbaa 171 object_sense1();
liam94 9:ada61082bbaa 172 }
liam94 9:ada61082bbaa 173
liam94 9:ada61082bbaa 174 break;}
liam94 10:be53044119d1 175
liam94 9:ada61082bbaa 176 case 1:{
liam94 4:77500a7f951d 177 lcd.clear();
liam94 4:77500a7f951d 178 lcd.printString(" object at 60'",0,0);
liam94 4:77500a7f951d 179 lcd.printString(" R + 60'",0,2);
liam94 13:cc99df342c7f 180 lcd.printString("Start to take",0,4);
liam94 13:cc99df342c7f 181 lcd.printString(" Reading ",0,5);
liam94 4:77500a7f951d 182 lcd.refresh();
liam94 3:0b0fbddb6f51 183 if (R == 1){
liam94 3:0b0fbddb6f51 184 state = 2;}
liam94 3:0b0fbddb6f51 185 else state = 1;
liam94 9:ada61082bbaa 186
liam94 9:ada61082bbaa 187 if (Start_flag == 1) {
liam94 9:ada61082bbaa 188 Start_flag = 0;
liam94 9:ada61082bbaa 189 object_sense2();
liam94 9:ada61082bbaa 190 }
liam94 10:be53044119d1 191
liam94 10:be53044119d1 192 break;}
liam94 9:ada61082bbaa 193 case 2:{
liam94 4:77500a7f951d 194 lcd.clear();
liam94 4:77500a7f951d 195 lcd.printString(" object at 120'",0,0);
liam94 4:77500a7f951d 196 lcd.printString(" R + 60'",0,2);
liam94 13:cc99df342c7f 197 lcd.printString("Start to take",0,4);
liam94 13:cc99df342c7f 198 lcd.printString(" Reading ",0,5);
liam94 4:77500a7f951d 199 lcd.refresh();
liam94 3:0b0fbddb6f51 200 if (R == 1){
liam94 3:0b0fbddb6f51 201 state = 3;}
liam94 3:0b0fbddb6f51 202 else state = 2;
liam94 9:ada61082bbaa 203
liam94 9:ada61082bbaa 204 if (Start_flag == 1) {
liam94 9:ada61082bbaa 205 Start_flag = 0;
liam94 9:ada61082bbaa 206 object_sense3();
liam94 9:ada61082bbaa 207 }
liam94 10:be53044119d1 208
liam94 10:be53044119d1 209 break;}
liam94 10:be53044119d1 210
liam94 9:ada61082bbaa 211 case 3:{
liam94 4:77500a7f951d 212 lcd.clear();
liam94 4:77500a7f951d 213 lcd.printString(" object at 180'",0,0);
liam94 4:77500a7f951d 214 lcd.printString(" R + 60'",0,2);
liam94 13:cc99df342c7f 215 lcd.printString("Start to take",0,4);
liam94 13:cc99df342c7f 216 lcd.printString(" Reading ",0,5);
liam94 4:77500a7f951d 217 lcd.refresh();
liam94 3:0b0fbddb6f51 218 if (R == 1){
liam94 3:0b0fbddb6f51 219 state = 4;}
liam94 3:0b0fbddb6f51 220 else state = 3;
liam94 9:ada61082bbaa 221
liam94 9:ada61082bbaa 222 if (Start_flag == 1) {
liam94 9:ada61082bbaa 223 Start_flag = 0;
liam94 9:ada61082bbaa 224 object_sense4();
liam94 9:ada61082bbaa 225 }
liam94 10:be53044119d1 226
liam94 10:be53044119d1 227 break;}
liam94 10:be53044119d1 228
liam94 9:ada61082bbaa 229 case 4:{
liam94 4:77500a7f951d 230 lcd.clear();
liam94 4:77500a7f951d 231 lcd.printString(" object at 240'",0,0);
liam94 4:77500a7f951d 232 lcd.printString(" R + 60'",0,2);
liam94 13:cc99df342c7f 233 lcd.printString("Start to take",0,4);
liam94 13:cc99df342c7f 234 lcd.printString(" Reading ",0,5);
liam94 4:77500a7f951d 235 lcd.refresh();
liam94 3:0b0fbddb6f51 236 if (R == 1){
liam94 3:0b0fbddb6f51 237 state = 5;}
liam94 3:0b0fbddb6f51 238 else state = 4;
liam94 9:ada61082bbaa 239
liam94 9:ada61082bbaa 240 if (Start_flag == 1) {
liam94 9:ada61082bbaa 241 Start_flag = 0;
liam94 9:ada61082bbaa 242 object_sense5();
liam94 9:ada61082bbaa 243 }
liam94 10:be53044119d1 244
liam94 10:be53044119d1 245 break;}
liam94 10:be53044119d1 246
liam94 9:ada61082bbaa 247 case 5:{
liam94 4:77500a7f951d 248 lcd.clear();
liam94 4:77500a7f951d 249 lcd.printString(" object at 300'",0,0);
liam94 4:77500a7f951d 250 lcd.printString(" R + 60'",0,2);
liam94 13:cc99df342c7f 251 lcd.printString("Start to take",0,4);
liam94 13:cc99df342c7f 252 lcd.printString(" Reading ",0,5);
liam94 4:77500a7f951d 253 lcd.refresh();
liam94 3:0b0fbddb6f51 254 if (R == 1){
liam94 10:be53044119d1 255 object_detection();}
liam94 3:0b0fbddb6f51 256 else state = 5;
liam94 10:be53044119d1 257
liam94 9:ada61082bbaa 258 if (Start_flag == 1) {
liam94 9:ada61082bbaa 259 Start_flag = 0;
liam94 9:ada61082bbaa 260 object_sense6();
liam94 9:ada61082bbaa 261 }
liam94 10:be53044119d1 262
liam94 10:be53044119d1 263 break;}
liam94 9:ada61082bbaa 264
liam94 9:ada61082bbaa 265 default:{
liam94 2:3ace5b4ae9a7 266 error("Invalid state"); //invalid state - call error routine
liam94 2:3ace5b4ae9a7 267 // or could jump to starting state i.e. state = 0
liam94 9:ada61082bbaa 268 break;}
liam94 2:3ace5b4ae9a7 269 }
liam94 6:18a4dd77057e 270 if (Back_flag == 1) {
liam94 6:18a4dd77057e 271 Back_flag = 0;
liam94 6:18a4dd77057e 272 main_menu();}
liam94 6:18a4dd77057e 273
liam94 5:98845ccaaacd 274 ThisThread::sleep_for(200);
liam94 5:98845ccaaacd 275 }
liam94 5:98845ccaaacd 276 }
liam94 8:7e48229d678c 277
liam94 8:7e48229d678c 278 /***************************************************************************//**
liam94 8:7e48229d678c 279 *
liam94 8:7e48229d678c 280 * this function is for calibrating the distance in which the object centre point
liam94 8:7e48229d678c 281 * should be away from the sensor, it checks the current distance and then though
liam94 8:7e48229d678c 282 * the function "void dist" displays the current distance on the screen.
liam94 8:7e48229d678c 283 * this function also tells the user the distance away from the target centre
liam94 8:7e48229d678c 284 * point this should be, this is so that the board is the right distance away and
liam94 8:7e48229d678c 285 * will be able to detect the object better.
liam94 8:7e48229d678c 286 *
liam94 8:7e48229d678c 287 * in order to print the distance onto the LCD the current distance is printed to
liam94 8:7e48229d678c 288 * a buffer which is a max length of 14 (the amount of characters that can fit
liam94 8:7e48229d678c 289 * width ways on the screen) this can then be printed on the screen using print
liam94 8:7e48229d678c 290 * string.
liam94 8:7e48229d678c 291 *
liam94 8:7e48229d678c 292 *******************************************************************************/
liam94 8:7e48229d678c 293
liam94 6:18a4dd77057e 294 void calibrate_object(){
liam94 6:18a4dd77057e 295
liam94 9:ada61082bbaa 296 sense = 0;
liam94 9:ada61082bbaa 297
liam94 6:18a4dd77057e 298 while(1)
liam94 6:18a4dd77057e 299 {
liam94 9:ada61082bbaa 300 mu.checkDistance();
liam94 7:7464fbb0f3e1 301
liam94 6:18a4dd77057e 302 if (Back_flag == 1) {
liam94 6:18a4dd77057e 303 Back_flag = 0;
liam94 6:18a4dd77057e 304 main_menu();}
liam94 6:18a4dd77057e 305
liam94 6:18a4dd77057e 306 wait (1);
liam94 6:18a4dd77057e 307 }
liam94 6:18a4dd77057e 308 }
liam94 9:ada61082bbaa 309
liam94 7:7464fbb0f3e1 310 void dist(int distance)
liam94 7:7464fbb0f3e1 311 {
liam94 10:be53044119d1 312 printf("sense = %d\n", sense);
liam94 8:7e48229d678c 313 // printf("Distance changed to %dmm\r\n", distance);
liam94 9:ada61082bbaa 314
liam94 9:ada61082bbaa 315 lcd.clear();
liam94 7:7464fbb0f3e1 316
liam94 9:ada61082bbaa 317 char buffer[14];
liam94 9:ada61082bbaa 318 int length = sprintf(buffer,"%dmm", distance);
liam94 9:ada61082bbaa 319 if (length <= 14)
liam94 7:7464fbb0f3e1 320
liam94 9:ada61082bbaa 321 lcd.printString("set object to",0,0);
liam94 9:ada61082bbaa 322 lcd.printString(" 200mm",0,1);
liam94 9:ada61082bbaa 323 lcd.printString(buffer,24,3);
liam94 9:ada61082bbaa 324 lcd.refresh();
liam94 10:be53044119d1 325
liam94 7:7464fbb0f3e1 326 }
liam94 8:7e48229d678c 327
liam94 8:7e48229d678c 328 /***************************************************************************//**
liam94 8:7e48229d678c 329 *
liam94 10:be53044119d1 330 * this is where the magic happens
liam94 10:be53044119d1 331 *
liam94 10:be53044119d1 332 *******************************************************************************/
liam94 10:be53044119d1 333
liam94 10:be53044119d1 334 void object_sense1(){
liam94 10:be53044119d1 335
liam94 10:be53044119d1 336 sense = 1;
liam94 10:be53044119d1 337
liam94 10:be53044119d1 338 Distance1 = mu.getCurrentDistance();
liam94 13:cc99df342c7f 339
liam94 14:837945ccd8c0 340 buzzer.beep(1000,2);
liam94 14:837945ccd8c0 341 wait(0.5);
liam94 14:837945ccd8c0 342 buzzer.beep(0,0);
liam94 14:837945ccd8c0 343
liam94 10:be53044119d1 344 printf("distance at sense 1 = %d\r\n", Distance1);
liam94 10:be53044119d1 345
liam94 10:be53044119d1 346 }
liam94 10:be53044119d1 347
liam94 10:be53044119d1 348 void object_sense2(){
liam94 10:be53044119d1 349
liam94 10:be53044119d1 350 sense = 2;
liam94 10:be53044119d1 351
liam94 10:be53044119d1 352 Distance2 = mu.getCurrentDistance();
liam94 14:837945ccd8c0 353
liam94 14:837945ccd8c0 354 buzzer.beep(1000,2);
liam94 14:837945ccd8c0 355 wait(0.5);
liam94 14:837945ccd8c0 356 buzzer.beep(0,0);
liam94 10:be53044119d1 357
liam94 10:be53044119d1 358 printf("distance at sense 2 = %d\r\n", Distance2);
liam94 10:be53044119d1 359
liam94 10:be53044119d1 360 }
liam94 10:be53044119d1 361
liam94 10:be53044119d1 362 void object_sense3(){
liam94 10:be53044119d1 363
liam94 10:be53044119d1 364 sense = 3;
liam94 10:be53044119d1 365
liam94 10:be53044119d1 366 Distance3 = mu.getCurrentDistance();
liam94 14:837945ccd8c0 367
liam94 14:837945ccd8c0 368 buzzer.beep(1000,2);
liam94 14:837945ccd8c0 369 wait(0.5);
liam94 14:837945ccd8c0 370 buzzer.beep(0,0);
liam94 10:be53044119d1 371
liam94 10:be53044119d1 372 printf("distance at sense 3 = %d\r\n", Distance3);
liam94 10:be53044119d1 373
liam94 10:be53044119d1 374 }
liam94 10:be53044119d1 375
liam94 10:be53044119d1 376 void object_sense4(){
liam94 10:be53044119d1 377
liam94 10:be53044119d1 378 sense = 4;
liam94 10:be53044119d1 379
liam94 10:be53044119d1 380 Distance4 = mu.getCurrentDistance();
liam94 14:837945ccd8c0 381
liam94 14:837945ccd8c0 382 buzzer.beep(1000,2);
liam94 14:837945ccd8c0 383 wait(0.5);
liam94 14:837945ccd8c0 384 buzzer.beep(0,0);
liam94 10:be53044119d1 385
liam94 10:be53044119d1 386 printf("distance at sense 4 = %d\r\n", Distance4);
liam94 10:be53044119d1 387
liam94 10:be53044119d1 388 }
liam94 10:be53044119d1 389
liam94 10:be53044119d1 390 void object_sense5(){
liam94 10:be53044119d1 391
liam94 10:be53044119d1 392 sense = 5;
liam94 10:be53044119d1 393
liam94 10:be53044119d1 394 Distance5 = mu.getCurrentDistance();
liam94 10:be53044119d1 395
liam94 14:837945ccd8c0 396 buzzer.beep(1000,2);
liam94 14:837945ccd8c0 397 wait(0.5);
liam94 14:837945ccd8c0 398 buzzer.beep(0,0);
liam94 14:837945ccd8c0 399
liam94 10:be53044119d1 400 printf("distance at sense 5 = %d\r\n", Distance5);
liam94 10:be53044119d1 401
liam94 10:be53044119d1 402 }
liam94 10:be53044119d1 403
liam94 10:be53044119d1 404 void object_sense6(){
liam94 10:be53044119d1 405
liam94 10:be53044119d1 406 sense = 6;
liam94 10:be53044119d1 407
liam94 10:be53044119d1 408 Distance6 = mu.getCurrentDistance();
liam94 10:be53044119d1 409
liam94 14:837945ccd8c0 410 buzzer.beep(1000,2);
liam94 14:837945ccd8c0 411 wait(0.5);
liam94 14:837945ccd8c0 412 buzzer.beep(0,0);
liam94 14:837945ccd8c0 413
liam94 10:be53044119d1 414 printf("distance at sense 6 = %d\r\n", Distance6);
liam94 10:be53044119d1 415
liam94 10:be53044119d1 416 }
liam94 10:be53044119d1 417
liam94 10:be53044119d1 418 void object_detection(){
liam94 10:be53044119d1 419
liam94 10:be53044119d1 420 lcd.clear();
liam94 10:be53044119d1 421
liam94 10:be53044119d1 422 //printf("Distance 1 = %d\n", Distance1);
liam94 10:be53044119d1 423 //printf("glass[0] = %d\n", glass[0]);
liam94 10:be53044119d1 424 //printf("glass[6] = %d\n", glass[6]);
liam94 10:be53044119d1 425 if (abs(Distance1 - glass[0]) <= 10 and abs(Distance2 - glass[1]) <= 10 and abs(Distance3 - glass[2]) <= 10 and abs(Distance4 - glass[3]) <= 10 and abs(Distance5 - glass[4]) <= 10 and abs(Distance6 - glass[5]) <= 10){
liam94 10:be53044119d1 426 printf("glass\n");
liam94 13:cc99df342c7f 427 lcd.printString(" Object Found!",0,1);
liam94 13:cc99df342c7f 428 lcd.printString(" Pint Glass",0,3);
liam94 10:be53044119d1 429 lcd.refresh();}
liam94 10:be53044119d1 430
liam94 10:be53044119d1 431 else{
liam94 10:be53044119d1 432 printf("nothing\n");
liam94 13:cc99df342c7f 433 lcd.printString(" No Object!",0,1);
liam94 13:cc99df342c7f 434 lcd.printString(" Please Try",0,3);
liam94 10:be53044119d1 435 lcd.printString("Again",24,4);
liam94 10:be53044119d1 436 lcd.refresh();}
liam94 10:be53044119d1 437 }
liam94 10:be53044119d1 438
liam94 10:be53044119d1 439 /***************************************************************************//**
liam94 10:be53044119d1 440 *
liam94 8:7e48229d678c 441 * these functions are for setting the flags for the start and back butons which
liam94 8:7e48229d678c 442 * are used in the other functions.
liam94 8:7e48229d678c 443 *
liam94 8:7e48229d678c 444 *******************************************************************************/
liam94 8:7e48229d678c 445
liam94 5:98845ccaaacd 446 void Start_isr()
liam94 5:98845ccaaacd 447 {
liam94 8:7e48229d678c 448 // printf("start button pressed");
liam94 5:98845ccaaacd 449 Start_flag = 1;
liam94 2:3ace5b4ae9a7 450 }
liam94 2:3ace5b4ae9a7 451
liam94 5:98845ccaaacd 452 void Back_isr()
liam94 5:98845ccaaacd 453 {
liam94 8:7e48229d678c 454 // printf("back button pressed");
liam94 5:98845ccaaacd 455 Back_flag = 1;
liam94 1:a1795335ef8c 456 }
liam94 5:98845ccaaacd 457