![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
First Draft, serial print change based on distance
main.cpp@10:be53044119d1, 2022-02-01 (annotated)
- Committer:
- liam94
- Date:
- Tue Feb 01 23:10:26 2022 +0000
- Revision:
- 10:be53044119d1
- Parent:
- 9:ada61082bbaa
- Child:
- 13:cc99df342c7f
sorted sensed object and array comparison for first object, added in text on display if object has been detected and what object it is.
Who changed what in which revision?
User | Revision | Line number | New 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 | 5:98845ccaaacd | 5 | #include "main.h" |
liam94 | 4:77500a7f951d | 6 | |
liam94 | 8:7e48229d678c | 7 | /***************************************************************************//** |
liam94 | 8:7e48229d678c | 8 | * |
liam94 | 8:7e48229d678c | 9 | * the main code below sets all the interrupts to pull down and also for the start |
liam94 | 8:7e48229d678c | 10 | * and back buttons it is sent to the specific start and back functions which sets |
liam94 | 8:7e48229d678c | 11 | * the flags which are then used in other functions. |
liam94 | 8:7e48229d678c | 12 | * |
liam94 | 8:7e48229d678c | 13 | * the mu.startUpdates() is where the ultrasonic sensor is told to start measuring |
liam94 | 8:7e48229d678c | 14 | * the distances. |
liam94 | 8:7e48229d678c | 15 | * the joystick and lcd are then initialised and the man menu function is then |
liam94 | 8:7e48229d678c | 16 | * called. |
liam94 | 8:7e48229d678c | 17 | * |
liam94 | 8:7e48229d678c | 18 | *******************************************************************************/ |
liam94 | 2:3ace5b4ae9a7 | 19 | |
liam94 | 2:3ace5b4ae9a7 | 20 | int main() |
liam94 | 1:a1795335ef8c | 21 | { |
liam94 | 5:98845ccaaacd | 22 | |
liam94 | 3:0b0fbddb6f51 | 23 | R.mode(PullDown); |
liam94 | 3:0b0fbddb6f51 | 24 | L.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 | 8:7e48229d678c | 73 | output = 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 | 4:77500a7f951d | 153 | output = 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 | 4:77500a7f951d | 162 | lcd.printString(" L - 60'",0,4); |
liam94 | 4:77500a7f951d | 163 | lcd.refresh(); |
liam94 | 3:0b0fbddb6f51 | 164 | if (R == 1){ |
liam94 | 3:0b0fbddb6f51 | 165 | state = 1;} |
liam94 | 3:0b0fbddb6f51 | 166 | else state = 0; |
liam94 | 9:ada61082bbaa | 167 | |
liam94 | 9:ada61082bbaa | 168 | if (Start_flag == 1) { |
liam94 | 9:ada61082bbaa | 169 | Start_flag = 0; |
liam94 | 9:ada61082bbaa | 170 | object_sense1(); |
liam94 | 9:ada61082bbaa | 171 | } |
liam94 | 9:ada61082bbaa | 172 | |
liam94 | 9:ada61082bbaa | 173 | break;} |
liam94 | 10:be53044119d1 | 174 | |
liam94 | 9:ada61082bbaa | 175 | case 1:{ |
liam94 | 4:77500a7f951d | 176 | lcd.clear(); |
liam94 | 4:77500a7f951d | 177 | lcd.printString(" object at 60'",0,0); |
liam94 | 4:77500a7f951d | 178 | lcd.printString(" R + 60'",0,2); |
liam94 | 4:77500a7f951d | 179 | lcd.printString(" L - 60'",0,4); |
liam94 | 4:77500a7f951d | 180 | lcd.refresh(); |
liam94 | 3:0b0fbddb6f51 | 181 | if (R == 1){ |
liam94 | 3:0b0fbddb6f51 | 182 | state = 2;} |
liam94 | 3:0b0fbddb6f51 | 183 | else state = 1; |
liam94 | 9:ada61082bbaa | 184 | |
liam94 | 9:ada61082bbaa | 185 | if (Start_flag == 1) { |
liam94 | 9:ada61082bbaa | 186 | Start_flag = 0; |
liam94 | 9:ada61082bbaa | 187 | object_sense2(); |
liam94 | 9:ada61082bbaa | 188 | } |
liam94 | 10:be53044119d1 | 189 | |
liam94 | 10:be53044119d1 | 190 | break;} |
liam94 | 9:ada61082bbaa | 191 | case 2:{ |
liam94 | 4:77500a7f951d | 192 | lcd.clear(); |
liam94 | 4:77500a7f951d | 193 | lcd.printString(" object at 120'",0,0); |
liam94 | 4:77500a7f951d | 194 | lcd.printString(" R + 60'",0,2); |
liam94 | 4:77500a7f951d | 195 | lcd.printString(" L - 60'",0,4); |
liam94 | 4:77500a7f951d | 196 | lcd.refresh(); |
liam94 | 3:0b0fbddb6f51 | 197 | if (R == 1){ |
liam94 | 3:0b0fbddb6f51 | 198 | state = 3;} |
liam94 | 3:0b0fbddb6f51 | 199 | else state = 2; |
liam94 | 9:ada61082bbaa | 200 | |
liam94 | 9:ada61082bbaa | 201 | if (Start_flag == 1) { |
liam94 | 9:ada61082bbaa | 202 | Start_flag = 0; |
liam94 | 9:ada61082bbaa | 203 | object_sense3(); |
liam94 | 9:ada61082bbaa | 204 | } |
liam94 | 10:be53044119d1 | 205 | |
liam94 | 10:be53044119d1 | 206 | break;} |
liam94 | 10:be53044119d1 | 207 | |
liam94 | 9:ada61082bbaa | 208 | case 3:{ |
liam94 | 4:77500a7f951d | 209 | lcd.clear(); |
liam94 | 4:77500a7f951d | 210 | lcd.printString(" object at 180'",0,0); |
liam94 | 4:77500a7f951d | 211 | lcd.printString(" R + 60'",0,2); |
liam94 | 4:77500a7f951d | 212 | lcd.printString(" L - 60'",0,4); |
liam94 | 4:77500a7f951d | 213 | lcd.refresh(); |
liam94 | 3:0b0fbddb6f51 | 214 | if (R == 1){ |
liam94 | 3:0b0fbddb6f51 | 215 | state = 4;} |
liam94 | 3:0b0fbddb6f51 | 216 | else state = 3; |
liam94 | 9:ada61082bbaa | 217 | |
liam94 | 9:ada61082bbaa | 218 | if (Start_flag == 1) { |
liam94 | 9:ada61082bbaa | 219 | Start_flag = 0; |
liam94 | 9:ada61082bbaa | 220 | object_sense4(); |
liam94 | 9:ada61082bbaa | 221 | } |
liam94 | 10:be53044119d1 | 222 | |
liam94 | 10:be53044119d1 | 223 | break;} |
liam94 | 10:be53044119d1 | 224 | |
liam94 | 9:ada61082bbaa | 225 | case 4:{ |
liam94 | 4:77500a7f951d | 226 | lcd.clear(); |
liam94 | 4:77500a7f951d | 227 | lcd.printString(" object at 240'",0,0); |
liam94 | 4:77500a7f951d | 228 | lcd.printString(" R + 60'",0,2); |
liam94 | 4:77500a7f951d | 229 | lcd.printString(" L - 60'",0,4); |
liam94 | 4:77500a7f951d | 230 | lcd.refresh(); |
liam94 | 3:0b0fbddb6f51 | 231 | if (R == 1){ |
liam94 | 3:0b0fbddb6f51 | 232 | state = 5;} |
liam94 | 3:0b0fbddb6f51 | 233 | else state = 4; |
liam94 | 9:ada61082bbaa | 234 | |
liam94 | 9:ada61082bbaa | 235 | if (Start_flag == 1) { |
liam94 | 9:ada61082bbaa | 236 | Start_flag = 0; |
liam94 | 9:ada61082bbaa | 237 | object_sense5(); |
liam94 | 9:ada61082bbaa | 238 | } |
liam94 | 10:be53044119d1 | 239 | |
liam94 | 10:be53044119d1 | 240 | break;} |
liam94 | 10:be53044119d1 | 241 | |
liam94 | 9:ada61082bbaa | 242 | case 5:{ |
liam94 | 4:77500a7f951d | 243 | lcd.clear(); |
liam94 | 4:77500a7f951d | 244 | lcd.printString(" object at 300'",0,0); |
liam94 | 4:77500a7f951d | 245 | lcd.printString(" R + 60'",0,2); |
liam94 | 4:77500a7f951d | 246 | lcd.printString(" L - 60'",0,4); |
liam94 | 4:77500a7f951d | 247 | lcd.refresh(); |
liam94 | 3:0b0fbddb6f51 | 248 | if (R == 1){ |
liam94 | 10:be53044119d1 | 249 | object_detection();} |
liam94 | 3:0b0fbddb6f51 | 250 | else state = 5; |
liam94 | 10:be53044119d1 | 251 | |
liam94 | 9:ada61082bbaa | 252 | if (Start_flag == 1) { |
liam94 | 9:ada61082bbaa | 253 | Start_flag = 0; |
liam94 | 9:ada61082bbaa | 254 | object_sense6(); |
liam94 | 9:ada61082bbaa | 255 | } |
liam94 | 10:be53044119d1 | 256 | |
liam94 | 10:be53044119d1 | 257 | break;} |
liam94 | 9:ada61082bbaa | 258 | |
liam94 | 9:ada61082bbaa | 259 | default:{ |
liam94 | 2:3ace5b4ae9a7 | 260 | error("Invalid state"); //invalid state - call error routine |
liam94 | 2:3ace5b4ae9a7 | 261 | // or could jump to starting state i.e. state = 0 |
liam94 | 9:ada61082bbaa | 262 | break;} |
liam94 | 2:3ace5b4ae9a7 | 263 | } |
liam94 | 6:18a4dd77057e | 264 | if (Back_flag == 1) { |
liam94 | 6:18a4dd77057e | 265 | Back_flag = 0; |
liam94 | 6:18a4dd77057e | 266 | main_menu();} |
liam94 | 6:18a4dd77057e | 267 | |
liam94 | 5:98845ccaaacd | 268 | ThisThread::sleep_for(200); |
liam94 | 5:98845ccaaacd | 269 | } |
liam94 | 5:98845ccaaacd | 270 | } |
liam94 | 8:7e48229d678c | 271 | |
liam94 | 8:7e48229d678c | 272 | /***************************************************************************//** |
liam94 | 8:7e48229d678c | 273 | * |
liam94 | 8:7e48229d678c | 274 | * this function is for calibrating the distance in which the object centre point |
liam94 | 8:7e48229d678c | 275 | * should be away from the sensor, it checks the current distance and then though |
liam94 | 8:7e48229d678c | 276 | * the function "void dist" displays the current distance on the screen. |
liam94 | 8:7e48229d678c | 277 | * this function also tells the user the distance away from the target centre |
liam94 | 8:7e48229d678c | 278 | * point this should be, this is so that the board is the right distance away and |
liam94 | 8:7e48229d678c | 279 | * will be able to detect the object better. |
liam94 | 8:7e48229d678c | 280 | * |
liam94 | 8:7e48229d678c | 281 | * in order to print the distance onto the LCD the current distance is printed to |
liam94 | 8:7e48229d678c | 282 | * a buffer which is a max length of 14 (the amount of characters that can fit |
liam94 | 8:7e48229d678c | 283 | * width ways on the screen) this can then be printed on the screen using print |
liam94 | 8:7e48229d678c | 284 | * string. |
liam94 | 8:7e48229d678c | 285 | * |
liam94 | 8:7e48229d678c | 286 | *******************************************************************************/ |
liam94 | 8:7e48229d678c | 287 | |
liam94 | 6:18a4dd77057e | 288 | void calibrate_object(){ |
liam94 | 6:18a4dd77057e | 289 | |
liam94 | 9:ada61082bbaa | 290 | sense = 0; |
liam94 | 9:ada61082bbaa | 291 | |
liam94 | 6:18a4dd77057e | 292 | while(1) |
liam94 | 6:18a4dd77057e | 293 | { |
liam94 | 9:ada61082bbaa | 294 | mu.checkDistance(); |
liam94 | 7:7464fbb0f3e1 | 295 | |
liam94 | 6:18a4dd77057e | 296 | if (Back_flag == 1) { |
liam94 | 6:18a4dd77057e | 297 | Back_flag = 0; |
liam94 | 6:18a4dd77057e | 298 | main_menu();} |
liam94 | 6:18a4dd77057e | 299 | |
liam94 | 6:18a4dd77057e | 300 | wait (1); |
liam94 | 6:18a4dd77057e | 301 | } |
liam94 | 6:18a4dd77057e | 302 | } |
liam94 | 9:ada61082bbaa | 303 | |
liam94 | 7:7464fbb0f3e1 | 304 | void dist(int distance) |
liam94 | 7:7464fbb0f3e1 | 305 | { |
liam94 | 10:be53044119d1 | 306 | printf("sense = %d\n", sense); |
liam94 | 8:7e48229d678c | 307 | // printf("Distance changed to %dmm\r\n", distance); |
liam94 | 9:ada61082bbaa | 308 | |
liam94 | 9:ada61082bbaa | 309 | lcd.clear(); |
liam94 | 7:7464fbb0f3e1 | 310 | |
liam94 | 9:ada61082bbaa | 311 | char buffer[14]; |
liam94 | 9:ada61082bbaa | 312 | int length = sprintf(buffer,"%dmm", distance); |
liam94 | 9:ada61082bbaa | 313 | if (length <= 14) |
liam94 | 7:7464fbb0f3e1 | 314 | |
liam94 | 9:ada61082bbaa | 315 | lcd.printString("set object to",0,0); |
liam94 | 9:ada61082bbaa | 316 | lcd.printString(" 200mm",0,1); |
liam94 | 9:ada61082bbaa | 317 | lcd.printString(buffer,24,3); |
liam94 | 9:ada61082bbaa | 318 | lcd.refresh(); |
liam94 | 10:be53044119d1 | 319 | |
liam94 | 7:7464fbb0f3e1 | 320 | } |
liam94 | 8:7e48229d678c | 321 | |
liam94 | 8:7e48229d678c | 322 | /***************************************************************************//** |
liam94 | 8:7e48229d678c | 323 | * |
liam94 | 10:be53044119d1 | 324 | * this is where the magic happens |
liam94 | 10:be53044119d1 | 325 | * |
liam94 | 10:be53044119d1 | 326 | *******************************************************************************/ |
liam94 | 10:be53044119d1 | 327 | |
liam94 | 10:be53044119d1 | 328 | void object_sense1(){ |
liam94 | 10:be53044119d1 | 329 | |
liam94 | 10:be53044119d1 | 330 | sense = 1; |
liam94 | 10:be53044119d1 | 331 | |
liam94 | 10:be53044119d1 | 332 | Distance1 = mu.getCurrentDistance(); |
liam94 | 10:be53044119d1 | 333 | |
liam94 | 10:be53044119d1 | 334 | printf("distance at sense 1 = %d\r\n", Distance1); |
liam94 | 10:be53044119d1 | 335 | |
liam94 | 10:be53044119d1 | 336 | } |
liam94 | 10:be53044119d1 | 337 | |
liam94 | 10:be53044119d1 | 338 | void object_sense2(){ |
liam94 | 10:be53044119d1 | 339 | |
liam94 | 10:be53044119d1 | 340 | sense = 2; |
liam94 | 10:be53044119d1 | 341 | |
liam94 | 10:be53044119d1 | 342 | Distance2 = mu.getCurrentDistance(); |
liam94 | 10:be53044119d1 | 343 | |
liam94 | 10:be53044119d1 | 344 | printf("distance at sense 2 = %d\r\n", Distance2); |
liam94 | 10:be53044119d1 | 345 | |
liam94 | 10:be53044119d1 | 346 | } |
liam94 | 10:be53044119d1 | 347 | |
liam94 | 10:be53044119d1 | 348 | void object_sense3(){ |
liam94 | 10:be53044119d1 | 349 | |
liam94 | 10:be53044119d1 | 350 | sense = 3; |
liam94 | 10:be53044119d1 | 351 | |
liam94 | 10:be53044119d1 | 352 | Distance3 = mu.getCurrentDistance(); |
liam94 | 10:be53044119d1 | 353 | |
liam94 | 10:be53044119d1 | 354 | printf("distance at sense 3 = %d\r\n", Distance3); |
liam94 | 10:be53044119d1 | 355 | |
liam94 | 10:be53044119d1 | 356 | } |
liam94 | 10:be53044119d1 | 357 | |
liam94 | 10:be53044119d1 | 358 | void object_sense4(){ |
liam94 | 10:be53044119d1 | 359 | |
liam94 | 10:be53044119d1 | 360 | sense = 4; |
liam94 | 10:be53044119d1 | 361 | |
liam94 | 10:be53044119d1 | 362 | Distance4 = mu.getCurrentDistance(); |
liam94 | 10:be53044119d1 | 363 | |
liam94 | 10:be53044119d1 | 364 | printf("distance at sense 4 = %d\r\n", Distance4); |
liam94 | 10:be53044119d1 | 365 | |
liam94 | 10:be53044119d1 | 366 | } |
liam94 | 10:be53044119d1 | 367 | |
liam94 | 10:be53044119d1 | 368 | void object_sense5(){ |
liam94 | 10:be53044119d1 | 369 | |
liam94 | 10:be53044119d1 | 370 | sense = 5; |
liam94 | 10:be53044119d1 | 371 | |
liam94 | 10:be53044119d1 | 372 | Distance5 = mu.getCurrentDistance(); |
liam94 | 10:be53044119d1 | 373 | |
liam94 | 10:be53044119d1 | 374 | printf("distance at sense 5 = %d\r\n", Distance5); |
liam94 | 10:be53044119d1 | 375 | |
liam94 | 10:be53044119d1 | 376 | } |
liam94 | 10:be53044119d1 | 377 | |
liam94 | 10:be53044119d1 | 378 | void object_sense6(){ |
liam94 | 10:be53044119d1 | 379 | |
liam94 | 10:be53044119d1 | 380 | sense = 6; |
liam94 | 10:be53044119d1 | 381 | |
liam94 | 10:be53044119d1 | 382 | Distance6 = mu.getCurrentDistance(); |
liam94 | 10:be53044119d1 | 383 | |
liam94 | 10:be53044119d1 | 384 | printf("distance at sense 6 = %d\r\n", Distance6); |
liam94 | 10:be53044119d1 | 385 | |
liam94 | 10:be53044119d1 | 386 | } |
liam94 | 10:be53044119d1 | 387 | |
liam94 | 10:be53044119d1 | 388 | void object_detection(){ |
liam94 | 10:be53044119d1 | 389 | |
liam94 | 10:be53044119d1 | 390 | lcd.clear(); |
liam94 | 10:be53044119d1 | 391 | |
liam94 | 10:be53044119d1 | 392 | //printf("Distance 1 = %d\n", Distance1); |
liam94 | 10:be53044119d1 | 393 | //printf("glass[0] = %d\n", glass[0]); |
liam94 | 10:be53044119d1 | 394 | //printf("glass[6] = %d\n", glass[6]); |
liam94 | 10:be53044119d1 | 395 | 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 | 396 | printf("glass\n"); |
liam94 | 10:be53044119d1 | 397 | lcd.printString("Object Found!",0,1); |
liam94 | 10:be53044119d1 | 398 | lcd.printString("Pint Glass",0,3); |
liam94 | 10:be53044119d1 | 399 | lcd.refresh();} |
liam94 | 10:be53044119d1 | 400 | |
liam94 | 10:be53044119d1 | 401 | else{ |
liam94 | 10:be53044119d1 | 402 | printf("nothing\n"); |
liam94 | 10:be53044119d1 | 403 | lcd.printString("No Object",0,1); |
liam94 | 10:be53044119d1 | 404 | lcd.printString("Please Try",0,3); |
liam94 | 10:be53044119d1 | 405 | lcd.printString("Again",24,4); |
liam94 | 10:be53044119d1 | 406 | lcd.refresh();} |
liam94 | 10:be53044119d1 | 407 | } |
liam94 | 10:be53044119d1 | 408 | |
liam94 | 10:be53044119d1 | 409 | /***************************************************************************//** |
liam94 | 10:be53044119d1 | 410 | * |
liam94 | 8:7e48229d678c | 411 | * these functions are for setting the flags for the start and back butons which |
liam94 | 8:7e48229d678c | 412 | * are used in the other functions. |
liam94 | 8:7e48229d678c | 413 | * |
liam94 | 8:7e48229d678c | 414 | *******************************************************************************/ |
liam94 | 8:7e48229d678c | 415 | |
liam94 | 5:98845ccaaacd | 416 | void Start_isr() |
liam94 | 5:98845ccaaacd | 417 | { |
liam94 | 8:7e48229d678c | 418 | // printf("start button pressed"); |
liam94 | 5:98845ccaaacd | 419 | Start_flag = 1; |
liam94 | 2:3ace5b4ae9a7 | 420 | } |
liam94 | 2:3ace5b4ae9a7 | 421 | |
liam94 | 5:98845ccaaacd | 422 | void Back_isr() |
liam94 | 5:98845ccaaacd | 423 | { |
liam94 | 8:7e48229d678c | 424 | // printf("back button pressed"); |
liam94 | 5:98845ccaaacd | 425 | Back_flag = 1; |
liam94 | 1:a1795335ef8c | 426 | } |
liam94 | 5:98845ccaaacd | 427 |