First Draft, serial print change based on distance

Committer:
liam94
Date:
Fri Feb 04 01:28:35 2022 +0000
Revision:
15:d8ff594535fc
Parent:
14:837945ccd8c0
Child:
16:af15244242c2
general tidy up, commented out "sense" integer and values that are no longer used and condensed the distance integers onto one line in the .h file

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 15:d8ff594535fc 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 15:d8ff594535fc 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 15:d8ff594535fc 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 15:d8ff594535fc 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 15:d8ff594535fc 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 15:d8ff594535fc 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 15:d8ff594535fc 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 15:d8ff594535fc 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