![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
First Draft, serial print change based on distance
Diff: main.cpp
- Revision:
- 17:02676e9bbc73
- Parent:
- 16:af15244242c2
--- a/main.cpp Fri Feb 04 16:29:33 2022 +0000 +++ b/main.cpp Fri Feb 04 18:30:13 2022 +0000 @@ -11,8 +11,8 @@ * and back buttons it is sent to the specific start and back functions which sets * the flags which are then used in other functions. * -* the Ultrasonic.startUpdates() is where the ultrasonic sensor is told to start measuring -* the distances. +* the Ultrasonic.startUpdates() is where the ultrasonic sensor is told to start +* measuring the distances. * the joystick and lcd are then initialised and the main menu function is then * called. * @@ -58,7 +58,7 @@ /***************************************************************************//** * * this function is the main menu for the program, it is called at the start and -* depending on what string is selected, clicking the start uton will send the +* depending on what string is selected, clicking the start button will send the * user to the specified function. * *******************************************************************************/ @@ -68,13 +68,13 @@ // printf("main menu"); lcd.clear(); - Start_flag = 0; - int select = 0; + Start_flag = 0; // make sure this is set to 0 to begin with so that it doesnt operate erroneously + int select = 0; // always want the main menu to start on the same value on reset/ returning from a different screen LEDS = 63; // 63 on the bus output sets all LEDs to off while (1) { - Direction d = joystick.get_direction(); + Direction d = joystick.get_direction(); // printf("Direction = %i\n",d); switch(select) { @@ -137,7 +137,11 @@ /***************************************************************************//** * -* this function is for sensing the object +* this function is for sensing the object, a switch statement is utilised here +* just as it was in the main menu but here it is used for indicating the six +* seperate readings that are to be taken. +* the start button is used to take the measuement and the R button is used to +* rotate the object * *******************************************************************************/ @@ -150,8 +154,8 @@ while(1) { - LEDS = fsm[state]; // output current state - printf("state = %d\r\n",state); + LEDS = fsm[state]; // this sets the LED bus output current state of the FSM + //printf("state = %d\r\n",state); // check which state we are in and see which the next state should be switch(state) { @@ -327,7 +331,10 @@ /***************************************************************************//** * -* this is where the magic happens +* these functions are called when the start button is pressed oin the sense object +* function, the purpose of these is to store the measured values for comparison +* and to make a buzzer sound to indicate to the user that the value has been +* measured * *******************************************************************************/ @@ -341,7 +348,7 @@ wait(0.5); buzzer.beep(0,0); - printf("distance at sense 1 = %d\r\n", Distance1); + //printf("distance at sense 1 = %d\r\n", Distance1); } @@ -355,7 +362,7 @@ wait(0.5); buzzer.beep(0,0); - printf("distance at sense 2 = %d\r\n", Distance2); + //printf("distance at sense 2 = %d\r\n", Distance2); } @@ -369,7 +376,7 @@ wait(0.5); buzzer.beep(0,0); - printf("distance at sense 3 = %d\r\n", Distance3); + //printf("distance at sense 3 = %d\r\n", Distance3); } @@ -383,7 +390,7 @@ wait(0.5); buzzer.beep(0,0); - printf("distance at sense 4 = %d\r\n", Distance4); + //printf("distance at sense 4 = %d\r\n", Distance4); } @@ -397,7 +404,7 @@ wait(0.5); buzzer.beep(0,0); - printf("distance at sense 5 = %d\r\n", Distance5); + //printf("distance at sense 5 = %d\r\n", Distance5); } @@ -411,10 +418,20 @@ wait(0.5); buzzer.beep(0,0); - printf("distance at sense 6 = %d\r\n", Distance6); + //printf("distance at sense 6 = %d\r\n", Distance6); } - + +/***************************************************************************//** +* +* the object detection function is where the comparison between the measured +* values and the defined object arrays occurs, if the measured values match the +* arrays then the program will see it as an object found and will display this on +* the screen, otherwise it will ask the user to try again. a +/- 5mm deadband has +* been added to allow for minor erros in the measured values. +* +*******************************************************************************/ + void object_detection(){ lcd.clear(); @@ -423,25 +440,25 @@ //printf("glass[0] = %d\n", glass[0]); //printf("glass[6] = %d\n", glass[6]); if (abs(Distance1 - glass[0]) <= 5 and abs(Distance2 - glass[1]) <= 5 and abs(Distance3 - glass[2]) <= 5 and abs(Distance4 - glass[3]) <= 5 and abs(Distance5 - glass[4]) <= 5 and abs(Distance6 - glass[5]) <= 5){ - printf("glass\n"); + //printf("glass\n"); lcd.printString(" Object Found!",0,1); lcd.printString(" Pint Glass",0,3); lcd.refresh();} else if (abs(Distance1 - firestick_box[0]) <= 5 and abs(Distance2 - firestick_box[1]) <= 5 and abs(Distance3 - firestick_box[2]) <= 5 and abs(Distance4 - firestick_box[3]) <= 5 and abs(Distance5 - firestick_box[4]) <= 5 and abs(Distance6 - firestick_box[5]) <= 5){ - printf("Firestick Box\n"); + //printf("Firestick Box\n"); lcd.printString(" Object Found!",0,1); lcd.printString(" Firestick Box",0,3); lcd.refresh();} else if (abs(Distance1 - Disaronno_bottle[0]) <= 5 and abs(Distance2 - Disaronno_bottle[1]) <= 5 and abs(Distance3 - Disaronno_bottle[2]) <= 5 and abs(Distance4 - Disaronno_bottle[3]) <= 5 and abs(Distance5 - Disaronno_bottle[4]) <= 5 and abs(Distance6 - Disaronno_bottle[5]) <= 5){ - printf("Firestick Box\n"); + //printf("Disaronno Bottle\n"); lcd.printString(" Object Found!",0,1); - lcd.printString(" Firestick Box",0,3); + lcd.printString(" Disaronno!",0,3); lcd.refresh();} else{ - printf("nothing\n"); + //printf("nothing\n"); lcd.printString(" No Object!",0,1); lcd.printString(" Please Try",0,3); lcd.printString("Again",24,4);