![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Resit Target Localisation Ciaran Kane 18689005
Dependencies: mbed
main.cpp@2:57ae9d39b375, 23 months ago (annotated)
- Committer:
- ciarankane123
- Date:
- Wed Aug 24 16:40:37 2022 +0000
- Revision:
- 2:57ae9d39b375
- Parent:
- 0:479e94f82332
- Child:
- 3:bdfa2573642e
Added in Technical support whithin the menu and changed buttons around
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ciarankane123 | 2:57ae9d39b375 | 1 | /**Ciaran Kane-18689005-- Target Localisation---- Awkknowledgements Dr Edmond Nurellari Joystick Library. Craig Evans N5110 Library. Mbed HCSR04 Liibrary . |
ciarankane123 | 0:479e94f82332 | 2 | enji Arai Piezo library. |
ciarankane123 | 0:479e94f82332 | 3 | |
ciarankane123 | 0:479e94f82332 | 4 | /**----Libraries*/ |
ciarankane123 | 0:479e94f82332 | 5 | #include "mbed.h" |
ciarankane123 | 0:479e94f82332 | 6 | #include "Joystick.h" |
ciarankane123 | 0:479e94f82332 | 7 | #include "N5110.h" |
ciarankane123 | 0:479e94f82332 | 8 | #include "ultrasonic.h" |
ciarankane123 | 0:479e94f82332 | 9 | #include "piezo_bz.h" |
ciarankane123 | 0:479e94f82332 | 10 | |
ciarankane123 | 0:479e94f82332 | 11 | /**Setting interrupts for buttons*/ |
ciarankane123 | 0:479e94f82332 | 12 | //There is only 4 butons due to my HCSR04 sensor being wired into two of the buttons channels |
ciarankane123 | 0:479e94f82332 | 13 | volatile int g_bumperL_flag = 0; |
ciarankane123 | 0:479e94f82332 | 14 | volatile int g_bumperR_flag = 0; |
ciarankane123 | 0:479e94f82332 | 15 | volatile int g_BACK_flag = 0; |
ciarankane123 | 0:479e94f82332 | 16 | volatile int g_START_flag = 0; |
ciarankane123 | 0:479e94f82332 | 17 | |
ciarankane123 | 0:479e94f82332 | 18 | /**Voids for N5110 Menu Display*/ |
ciarankane123 | 0:479e94f82332 | 19 | void initialiseMbed(); |
ciarankane123 | 0:479e94f82332 | 20 | void menu(); |
ciarankane123 | 0:479e94f82332 | 21 | void targetLocate(); |
ciarankane123 | 0:479e94f82332 | 22 | void initUltrasonic(); |
ciarankane123 | 0:479e94f82332 | 23 | void dist(int distance); |
ciarankane123 | 2:57ae9d39b375 | 24 | void techSupport(); |
ciarankane123 | 0:479e94f82332 | 25 | |
ciarankane123 | 0:479e94f82332 | 26 | /**I/O definition*/ |
ciarankane123 | 0:479e94f82332 | 27 | InterruptIn bumperL_btn(PTB18); |
ciarankane123 | 0:479e94f82332 | 28 | InterruptIn bumperR_btn(PTB3); |
ciarankane123 | 0:479e94f82332 | 29 | InterruptIn BACK_btn(PTB19); |
ciarankane123 | 0:479e94f82332 | 30 | InterruptIn START_btn(PTC5); |
ciarankane123 | 0:479e94f82332 | 31 | N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); |
ciarankane123 | 0:479e94f82332 | 32 | Serial pc(USBTX, USBRX); |
ciarankane123 | 0:479e94f82332 | 33 | BusOut redleds(PTA1,PTA2,PTC2); |
ciarankane123 | 0:479e94f82332 | 34 | BusOut greenleds(PTC3,PTC4,PTD3); |
ciarankane123 | 0:479e94f82332 | 35 | PwmOut piezo(PTC10); |
ciarankane123 | 0:479e94f82332 | 36 | DigitalOut trigPin(PTD0); |
ciarankane123 | 0:479e94f82332 | 37 | DigitalIn echoPin(PTC12); |
ciarankane123 | 0:479e94f82332 | 38 | Joystick joystick(PTB10,PTB11,PTC16); |
ciarankane123 | 0:479e94f82332 | 39 | ultrasonic Sensor(PTD0, PTC12, .5, 1, &dist); |
ciarankane123 | 0:479e94f82332 | 40 | |
ciarankane123 | 0:479e94f82332 | 41 | |
ciarankane123 | 0:479e94f82332 | 42 | /** Design and thought process goes into more detail in the associated report written for this project. |
ciarankane123 | 0:479e94f82332 | 43 | But i will give a brief breakdown of what this simple code entails below: |
ciarankane123 | 0:479e94f82332 | 44 | |
ciarankane123 | 0:479e94f82332 | 45 | *Calling for initialisation of mbedded controller on startup whilst all LEDS's on |
ciarankane123 | 0:479e94f82332 | 46 | when inialisation is complete turn off red LED's |
ciarankane123 | 0:479e94f82332 | 47 | |
ciarankane123 | 0:479e94f82332 | 48 | *all for menu where you have an option to initialise the sensor or |
ciarankane123 | 0:479e94f82332 | 49 | locate targets whilst red LED's stay on until one is selected using the left and right bumper |
ciarankane123 | 0:479e94f82332 | 50 | then green LEDS on |
ciarankane123 | 0:479e94f82332 | 51 | |
ciarankane123 | 0:479e94f82332 | 52 | *If target locate is selected call for targetLocate void to show that a target is being located whilst green LEDS on |
ciarankane123 | 0:479e94f82332 | 53 | |
ciarankane123 | 0:479e94f82332 | 54 | *If sensor intialisation is selected then sound piezo buzzer for a period of 10 seconds until sensor is initialised |
ciarankane123 | 0:479e94f82332 | 55 | |
ciarankane123 | 0:479e94f82332 | 56 | *If target is found call for Located void with string text and turn on redLEDS and sound buzzer for 5 seconds to indicate target |
ciarankane123 | 0:479e94f82332 | 57 | |
ciarankane123 | 0:479e94f82332 | 58 | *After target is located call for results void to display distance from sensor |
ciarankane123 | 0:479e94f82332 | 59 | */ |
ciarankane123 | 0:479e94f82332 | 60 | //Main Program |
ciarankane123 | 0:479e94f82332 | 61 | int main() |
ciarankane123 | 0:479e94f82332 | 62 | { |
ciarankane123 | 0:479e94f82332 | 63 | lcd.init(); |
ciarankane123 | 0:479e94f82332 | 64 | lcd.setContrast(0.4); |
ciarankane123 | 0:479e94f82332 | 65 | lcd.setBrightness(0.5); |
ciarankane123 | 0:479e94f82332 | 66 | initialiseMbed(); |
ciarankane123 | 0:479e94f82332 | 67 | Sensor.startUpdates(); |
ciarankane123 | 0:479e94f82332 | 68 | // printf ("Ultrasonic Updates started"); |
ciarankane123 | 0:479e94f82332 | 69 | } |
ciarankane123 | 0:479e94f82332 | 70 | |
ciarankane123 | 0:479e94f82332 | 71 | void initialiseMbed() { |
ciarankane123 | 0:479e94f82332 | 72 | |
ciarankane123 | 0:479e94f82332 | 73 | greenleds= 1; |
ciarankane123 | 0:479e94f82332 | 74 | redleds=0; |
ciarankane123 | 0:479e94f82332 | 75 | lcd.clear(); |
ciarankane123 | 0:479e94f82332 | 76 | lcd.printString("MBED",0,0); |
ciarankane123 | 0:479e94f82332 | 77 | lcd.printString("Controller",0,1); |
ciarankane123 | 0:479e94f82332 | 78 | lcd.printString("Initialising",0,2); |
ciarankane123 | 0:479e94f82332 | 79 | lcd.printString("Ciaran Kane",0,5); |
ciarankane123 | 0:479e94f82332 | 80 | lcd.refresh(); |
ciarankane123 | 0:479e94f82332 | 81 | wait(1); |
ciarankane123 | 0:479e94f82332 | 82 | lcd.printString("Initialising.",0,2); |
ciarankane123 | 0:479e94f82332 | 83 | lcd.refresh(); |
ciarankane123 | 0:479e94f82332 | 84 | wait(1); |
ciarankane123 | 0:479e94f82332 | 85 | lcd.printString("Initialising..",0,2); |
ciarankane123 | 0:479e94f82332 | 86 | lcd.refresh(); |
ciarankane123 | 0:479e94f82332 | 87 | wait(5.0); |
ciarankane123 | 0:479e94f82332 | 88 | lcd.clear(); |
ciarankane123 | 0:479e94f82332 | 89 | lcd.printString("Initialised",0,0); |
ciarankane123 | 0:479e94f82332 | 90 | lcd.printString("Press Start",0,1); |
ciarankane123 | 0:479e94f82332 | 91 | lcd.printString("For",0,2); |
ciarankane123 | 0:479e94f82332 | 92 | lcd.printString("Main Menu",0,3); |
ciarankane123 | 0:479e94f82332 | 93 | lcd.printString("",0,4); |
ciarankane123 | 0:479e94f82332 | 94 | lcd.printString("Ciaran Kane",0,5); |
ciarankane123 | 0:479e94f82332 | 95 | lcd.refresh(); |
ciarankane123 | 0:479e94f82332 | 96 | greenleds=0; |
ciarankane123 | 0:479e94f82332 | 97 | redleds=1; |
ciarankane123 | 0:479e94f82332 | 98 | wait(5.0); |
ciarankane123 | 0:479e94f82332 | 99 | |
ciarankane123 | 0:479e94f82332 | 100 | while(1) |
ciarankane123 | 0:479e94f82332 | 101 | { |
ciarankane123 | 0:479e94f82332 | 102 | wait(0.5); |
ciarankane123 | 0:479e94f82332 | 103 | if (g_START_flag==1) { |
ciarankane123 | 0:479e94f82332 | 104 | menu(); |
ciarankane123 | 0:479e94f82332 | 105 | } |
ciarankane123 | 0:479e94f82332 | 106 | } |
ciarankane123 | 0:479e94f82332 | 107 | } |
ciarankane123 | 0:479e94f82332 | 108 | |
ciarankane123 | 0:479e94f82332 | 109 | |
ciarankane123 | 0:479e94f82332 | 110 | void menu() |
ciarankane123 | 0:479e94f82332 | 111 | { |
ciarankane123 | 0:479e94f82332 | 112 | lcd.clear(); |
ciarankane123 | 0:479e94f82332 | 113 | lcd.printString("Main Menu",0,0); |
ciarankane123 | 2:57ae9d39b375 | 114 | lcd.printString("Target Localise - Start",0,2); |
ciarankane123 | 2:57ae9d39b375 | 115 | lcd.printString("Sensor Initialise - LB",0,4); |
ciarankane123 | 2:57ae9d39b375 | 116 | lcd.printString("Technical Support - RB ",0,5); |
ciarankane123 | 0:479e94f82332 | 117 | while(1) |
ciarankane123 | 0:479e94f82332 | 118 | { |
ciarankane123 | 0:479e94f82332 | 119 | wait(0.5); |
ciarankane123 | 0:479e94f82332 | 120 | if (g_bumperL_flag==1) { |
ciarankane123 | 0:479e94f82332 | 121 | initUltrasonic(); |
ciarankane123 | 0:479e94f82332 | 122 | } |
ciarankane123 | 2:57ae9d39b375 | 123 | else if(g_START_flag==1) { |
ciarankane123 | 0:479e94f82332 | 124 | targetLocate(); |
ciarankane123 | 0:479e94f82332 | 125 | } |
ciarankane123 | 2:57ae9d39b375 | 126 | else if(g_bumperR_flag==1) { |
ciarankane123 | 2:57ae9d39b375 | 127 | techSupport(); |
ciarankane123 | 2:57ae9d39b375 | 128 | } |
ciarankane123 | 0:479e94f82332 | 129 | } |
ciarankane123 | 0:479e94f82332 | 130 | } |
ciarankane123 | 0:479e94f82332 | 131 | |
ciarankane123 | 0:479e94f82332 | 132 | |
ciarankane123 | 0:479e94f82332 | 133 | void initUltrasonic() |
ciarankane123 | 0:479e94f82332 | 134 | { |
ciarankane123 | 0:479e94f82332 | 135 | |
ciarankane123 | 0:479e94f82332 | 136 | greenleds= 1; |
ciarankane123 | 0:479e94f82332 | 137 | redleds=0; |
ciarankane123 | 0:479e94f82332 | 138 | lcd.clear(); |
ciarankane123 | 0:479e94f82332 | 139 | lcd.printString("Ultrasonic",0,0); |
ciarankane123 | 0:479e94f82332 | 140 | lcd.printString("Sesnor",0,1); |
ciarankane123 | 0:479e94f82332 | 141 | lcd.printString("Initialising",0,2); |
ciarankane123 | 0:479e94f82332 | 142 | lcd.printString("Ciaran Kane",0,5); |
ciarankane123 | 0:479e94f82332 | 143 | lcd.refresh(); |
ciarankane123 | 0:479e94f82332 | 144 | wait(1); |
ciarankane123 | 0:479e94f82332 | 145 | lcd.printString("Initialising.",0,2); |
ciarankane123 | 0:479e94f82332 | 146 | lcd.refresh(); |
ciarankane123 | 0:479e94f82332 | 147 | wait(1); |
ciarankane123 | 0:479e94f82332 | 148 | lcd.printString("Initialising..",0,2); |
ciarankane123 | 0:479e94f82332 | 149 | lcd.refresh(); |
ciarankane123 | 0:479e94f82332 | 150 | wait(5.0); |
ciarankane123 | 0:479e94f82332 | 151 | lcd.clear(); |
ciarankane123 | 0:479e94f82332 | 152 | lcd.printString("Initialised",0,0); |
ciarankane123 | 0:479e94f82332 | 153 | lcd.printString("Press Start",0,1); |
ciarankane123 | 0:479e94f82332 | 154 | lcd.printString("For",0,2); |
ciarankane123 | 0:479e94f82332 | 155 | lcd.printString("Main Menu",0,3); |
ciarankane123 | 0:479e94f82332 | 156 | lcd.printString("",0,4); |
ciarankane123 | 0:479e94f82332 | 157 | lcd.printString("Ciaran Kane",0,5); |
ciarankane123 | 0:479e94f82332 | 158 | lcd.refresh(); |
ciarankane123 | 0:479e94f82332 | 159 | greenleds=0; |
ciarankane123 | 0:479e94f82332 | 160 | redleds=1; |
ciarankane123 | 0:479e94f82332 | 161 | wait(5.0); |
ciarankane123 | 0:479e94f82332 | 162 | |
ciarankane123 | 0:479e94f82332 | 163 | while(1) |
ciarankane123 | 0:479e94f82332 | 164 | { |
ciarankane123 | 0:479e94f82332 | 165 | wait(0.5); |
ciarankane123 | 0:479e94f82332 | 166 | if (g_START_flag==1) { |
ciarankane123 | 0:479e94f82332 | 167 | menu(); |
ciarankane123 | 0:479e94f82332 | 168 | } |
ciarankane123 | 0:479e94f82332 | 169 | } |
ciarankane123 | 0:479e94f82332 | 170 | } |
ciarankane123 | 0:479e94f82332 | 171 | void dist(int distance) |
ciarankane123 | 0:479e94f82332 | 172 | { |
ciarankane123 | 0:479e94f82332 | 173 | //printf("sense = %d\n", sense); |
ciarankane123 | 0:479e94f82332 | 174 | // printf("Distance changed to %dmm\r\n", distance); |
ciarankane123 | 0:479e94f82332 | 175 | |
ciarankane123 | 0:479e94f82332 | 176 | lcd.clear(); |
ciarankane123 | 0:479e94f82332 | 177 | |
ciarankane123 | 0:479e94f82332 | 178 | char buffer[14]; |
ciarankane123 | 0:479e94f82332 | 179 | int length = sprintf(buffer,"%dmm", distance); |
ciarankane123 | 0:479e94f82332 | 180 | if (length <= 14) |
ciarankane123 | 0:479e94f82332 | 181 | |
ciarankane123 | 0:479e94f82332 | 182 | lcd.printString("set object to",0,0); |
ciarankane123 | 0:479e94f82332 | 183 | lcd.printString(" 200mm",0,1); |
ciarankane123 | 0:479e94f82332 | 184 | lcd.printString(buffer,24,3); |
ciarankane123 | 0:479e94f82332 | 185 | lcd.refresh(); |
ciarankane123 | 0:479e94f82332 | 186 | |
ciarankane123 | 0:479e94f82332 | 187 | } |
ciarankane123 | 0:479e94f82332 | 188 | |
ciarankane123 | 0:479e94f82332 | 189 | void targetLocate() |
ciarankane123 | 0:479e94f82332 | 190 | { |
ciarankane123 | 0:479e94f82332 | 191 | lcd.printString("Searching",0,1); |
ciarankane123 | 0:479e94f82332 | 192 | lcd.printString("For",0,2); |
ciarankane123 | 0:479e94f82332 | 193 | lcd.printString("Target",0,3); |
ciarankane123 | 0:479e94f82332 | 194 | lcd.clear(); |
ciarankane123 | 0:479e94f82332 | 195 | lcd.printString("Target",0,0); |
ciarankane123 | 0:479e94f82332 | 196 | lcd.printString("Found!",0,1); |
ciarankane123 | 2:57ae9d39b375 | 197 | } |
ciarankane123 | 2:57ae9d39b375 | 198 | |
ciarankane123 | 2:57ae9d39b375 | 199 | void techSupport() |
ciarankane123 | 2:57ae9d39b375 | 200 | { |
ciarankane123 | 2:57ae9d39b375 | 201 | lcd.printString("Searching",0,1); |
ciarankane123 | 2:57ae9d39b375 | 202 | lcd.printString("For",0,2); |
ciarankane123 | 2:57ae9d39b375 | 203 | lcd.printString("Target",0,3); |
ciarankane123 | 2:57ae9d39b375 | 204 | lcd.clear(); |
ciarankane123 | 2:57ae9d39b375 | 205 | lcd.printString("Target",0,0); |
ciarankane123 | 2:57ae9d39b375 | 206 | lcd.printString("Found!",0,1); |
ciarankane123 | 2:57ae9d39b375 | 207 | } |
ciarankane123 | 2:57ae9d39b375 | 208 |