Resit Target Localisation Ciaran Kane 18689005
Dependencies: mbed
main.cpp@4:95b13ca0550e, 23 months ago (annotated)
- Committer:
- ciarankane123
- Date:
- Wed Aug 24 20:18:03 2022 +0000
- Revision:
- 4:95b13ca0550e
- Parent:
- 3:bdfa2573642e
- Child:
- 5:5351ab7d9132
Debugging
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 | 4:95b13ca0550e | 64 | // printf ("LCD intialise"); |
ciarankane123 | 0:479e94f82332 | 65 | lcd.setContrast(0.4); |
ciarankane123 | 4:95b13ca0550e | 66 | // printf ("LCD Contrast set"); |
ciarankane123 | 0:479e94f82332 | 67 | lcd.setBrightness(0.5); |
ciarankane123 | 4:95b13ca0550e | 68 | // printf ("LCD Brightness Set"); |
ciarankane123 | 0:479e94f82332 | 69 | initialiseMbed(); |
ciarankane123 | 4:95b13ca0550e | 70 | // printf ("MBED K64f Initialise"); |
ciarankane123 | 0:479e94f82332 | 71 | Sensor.startUpdates(); |
ciarankane123 | 0:479e94f82332 | 72 | // printf ("Ultrasonic Updates started"); |
ciarankane123 | 0:479e94f82332 | 73 | } |
ciarankane123 | 0:479e94f82332 | 74 | |
ciarankane123 | 0:479e94f82332 | 75 | void initialiseMbed() { |
ciarankane123 | 0:479e94f82332 | 76 | |
ciarankane123 | 0:479e94f82332 | 77 | greenleds= 1; |
ciarankane123 | 0:479e94f82332 | 78 | redleds=0; |
ciarankane123 | 0:479e94f82332 | 79 | lcd.clear(); |
ciarankane123 | 0:479e94f82332 | 80 | lcd.printString("MBED",0,0); |
ciarankane123 | 0:479e94f82332 | 81 | lcd.printString("Controller",0,1); |
ciarankane123 | 0:479e94f82332 | 82 | lcd.printString("Initialising",0,2); |
ciarankane123 | 0:479e94f82332 | 83 | lcd.printString("Ciaran Kane",0,5); |
ciarankane123 | 0:479e94f82332 | 84 | lcd.refresh(); |
ciarankane123 | 0:479e94f82332 | 85 | wait(1); |
ciarankane123 | 0:479e94f82332 | 86 | lcd.printString("Initialising.",0,2); |
ciarankane123 | 0:479e94f82332 | 87 | lcd.refresh(); |
ciarankane123 | 0:479e94f82332 | 88 | wait(1); |
ciarankane123 | 0:479e94f82332 | 89 | lcd.printString("Initialising..",0,2); |
ciarankane123 | 0:479e94f82332 | 90 | lcd.refresh(); |
ciarankane123 | 0:479e94f82332 | 91 | wait(5.0); |
ciarankane123 | 0:479e94f82332 | 92 | lcd.clear(); |
ciarankane123 | 0:479e94f82332 | 93 | lcd.printString("Initialised",0,0); |
ciarankane123 | 0:479e94f82332 | 94 | lcd.printString("Press Start",0,1); |
ciarankane123 | 0:479e94f82332 | 95 | lcd.printString("For",0,2); |
ciarankane123 | 0:479e94f82332 | 96 | lcd.printString("Main Menu",0,3); |
ciarankane123 | 0:479e94f82332 | 97 | lcd.printString("",0,4); |
ciarankane123 | 0:479e94f82332 | 98 | lcd.printString("Ciaran Kane",0,5); |
ciarankane123 | 0:479e94f82332 | 99 | lcd.refresh(); |
ciarankane123 | 0:479e94f82332 | 100 | greenleds=0; |
ciarankane123 | 0:479e94f82332 | 101 | redleds=1; |
ciarankane123 | 0:479e94f82332 | 102 | wait(5.0); |
ciarankane123 | 0:479e94f82332 | 103 | |
ciarankane123 | 0:479e94f82332 | 104 | while(1) |
ciarankane123 | 0:479e94f82332 | 105 | { |
ciarankane123 | 0:479e94f82332 | 106 | wait(0.5); |
ciarankane123 | 0:479e94f82332 | 107 | if (g_START_flag==1) { |
ciarankane123 | 0:479e94f82332 | 108 | menu(); |
ciarankane123 | 0:479e94f82332 | 109 | } |
ciarankane123 | 0:479e94f82332 | 110 | } |
ciarankane123 | 0:479e94f82332 | 111 | } |
ciarankane123 | 0:479e94f82332 | 112 | |
ciarankane123 | 0:479e94f82332 | 113 | |
ciarankane123 | 0:479e94f82332 | 114 | void menu() |
ciarankane123 | 0:479e94f82332 | 115 | { |
ciarankane123 | 0:479e94f82332 | 116 | lcd.clear(); |
ciarankane123 | 0:479e94f82332 | 117 | lcd.printString("Main Menu",0,0); |
ciarankane123 | 2:57ae9d39b375 | 118 | lcd.printString("Target Localise - Start",0,2); |
ciarankane123 | 2:57ae9d39b375 | 119 | lcd.printString("Sensor Initialise - LB",0,4); |
ciarankane123 | 2:57ae9d39b375 | 120 | lcd.printString("Technical Support - RB ",0,5); |
ciarankane123 | 0:479e94f82332 | 121 | while(1) |
ciarankane123 | 0:479e94f82332 | 122 | { |
ciarankane123 | 0:479e94f82332 | 123 | wait(0.5); |
ciarankane123 | 0:479e94f82332 | 124 | if (g_bumperL_flag==1) { |
ciarankane123 | 0:479e94f82332 | 125 | initUltrasonic(); |
ciarankane123 | 0:479e94f82332 | 126 | } |
ciarankane123 | 2:57ae9d39b375 | 127 | else if(g_START_flag==1) { |
ciarankane123 | 0:479e94f82332 | 128 | targetLocate(); |
ciarankane123 | 0:479e94f82332 | 129 | } |
ciarankane123 | 2:57ae9d39b375 | 130 | else if(g_bumperR_flag==1) { |
ciarankane123 | 2:57ae9d39b375 | 131 | techSupport(); |
ciarankane123 | 2:57ae9d39b375 | 132 | } |
ciarankane123 | 0:479e94f82332 | 133 | } |
ciarankane123 | 0:479e94f82332 | 134 | } |
ciarankane123 | 0:479e94f82332 | 135 | |
ciarankane123 | 0:479e94f82332 | 136 | |
ciarankane123 | 0:479e94f82332 | 137 | void initUltrasonic() |
ciarankane123 | 0:479e94f82332 | 138 | { |
ciarankane123 | 0:479e94f82332 | 139 | |
ciarankane123 | 0:479e94f82332 | 140 | greenleds= 1; |
ciarankane123 | 0:479e94f82332 | 141 | redleds=0; |
ciarankane123 | 0:479e94f82332 | 142 | lcd.clear(); |
ciarankane123 | 0:479e94f82332 | 143 | lcd.printString("Ultrasonic",0,0); |
ciarankane123 | 0:479e94f82332 | 144 | lcd.printString("Sesnor",0,1); |
ciarankane123 | 0:479e94f82332 | 145 | lcd.printString("Initialising",0,2); |
ciarankane123 | 0:479e94f82332 | 146 | lcd.printString("Ciaran Kane",0,5); |
ciarankane123 | 0:479e94f82332 | 147 | lcd.refresh(); |
ciarankane123 | 0:479e94f82332 | 148 | wait(1); |
ciarankane123 | 0:479e94f82332 | 149 | lcd.printString("Initialising.",0,2); |
ciarankane123 | 0:479e94f82332 | 150 | lcd.refresh(); |
ciarankane123 | 0:479e94f82332 | 151 | wait(1); |
ciarankane123 | 0:479e94f82332 | 152 | lcd.printString("Initialising..",0,2); |
ciarankane123 | 0:479e94f82332 | 153 | lcd.refresh(); |
ciarankane123 | 0:479e94f82332 | 154 | wait(5.0); |
ciarankane123 | 0:479e94f82332 | 155 | lcd.clear(); |
ciarankane123 | 0:479e94f82332 | 156 | lcd.printString("Initialised",0,0); |
ciarankane123 | 0:479e94f82332 | 157 | lcd.printString("Press Start",0,1); |
ciarankane123 | 0:479e94f82332 | 158 | lcd.printString("For",0,2); |
ciarankane123 | 0:479e94f82332 | 159 | lcd.printString("Main Menu",0,3); |
ciarankane123 | 0:479e94f82332 | 160 | lcd.printString("",0,4); |
ciarankane123 | 0:479e94f82332 | 161 | lcd.printString("Ciaran Kane",0,5); |
ciarankane123 | 0:479e94f82332 | 162 | lcd.refresh(); |
ciarankane123 | 0:479e94f82332 | 163 | greenleds=0; |
ciarankane123 | 0:479e94f82332 | 164 | redleds=1; |
ciarankane123 | 0:479e94f82332 | 165 | wait(5.0); |
ciarankane123 | 0:479e94f82332 | 166 | |
ciarankane123 | 0:479e94f82332 | 167 | while(1) |
ciarankane123 | 0:479e94f82332 | 168 | { |
ciarankane123 | 0:479e94f82332 | 169 | wait(0.5); |
ciarankane123 | 0:479e94f82332 | 170 | if (g_START_flag==1) { |
ciarankane123 | 0:479e94f82332 | 171 | menu(); |
ciarankane123 | 0:479e94f82332 | 172 | } |
ciarankane123 | 0:479e94f82332 | 173 | } |
ciarankane123 | 0:479e94f82332 | 174 | } |
ciarankane123 | 0:479e94f82332 | 175 | void dist(int distance) |
ciarankane123 | 0:479e94f82332 | 176 | { |
ciarankane123 | 0:479e94f82332 | 177 | //printf("sense = %d\n", sense); |
ciarankane123 | 0:479e94f82332 | 178 | // printf("Distance changed to %dmm\r\n", distance); |
ciarankane123 | 0:479e94f82332 | 179 | |
ciarankane123 | 0:479e94f82332 | 180 | lcd.clear(); |
ciarankane123 | 0:479e94f82332 | 181 | |
ciarankane123 | 0:479e94f82332 | 182 | char buffer[14]; |
ciarankane123 | 0:479e94f82332 | 183 | int length = sprintf(buffer,"%dmm", distance); |
ciarankane123 | 0:479e94f82332 | 184 | if (length <= 14) |
ciarankane123 | 0:479e94f82332 | 185 | |
ciarankane123 | 0:479e94f82332 | 186 | lcd.printString("set object to",0,0); |
ciarankane123 | 0:479e94f82332 | 187 | lcd.printString(" 200mm",0,1); |
ciarankane123 | 0:479e94f82332 | 188 | lcd.printString(buffer,24,3); |
ciarankane123 | 0:479e94f82332 | 189 | lcd.refresh(); |
ciarankane123 | 0:479e94f82332 | 190 | |
ciarankane123 | 0:479e94f82332 | 191 | } |
ciarankane123 | 0:479e94f82332 | 192 | |
ciarankane123 | 0:479e94f82332 | 193 | void targetLocate() |
ciarankane123 | 0:479e94f82332 | 194 | { |
ciarankane123 | 0:479e94f82332 | 195 | lcd.printString("Searching",0,1); |
ciarankane123 | 0:479e94f82332 | 196 | lcd.printString("For",0,2); |
ciarankane123 | 0:479e94f82332 | 197 | lcd.printString("Target",0,3); |
ciarankane123 | 0:479e94f82332 | 198 | lcd.clear(); |
ciarankane123 | 0:479e94f82332 | 199 | lcd.printString("Target",0,0); |
ciarankane123 | 0:479e94f82332 | 200 | lcd.printString("Found!",0,1); |
ciarankane123 | 2:57ae9d39b375 | 201 | } |
ciarankane123 | 2:57ae9d39b375 | 202 | |
ciarankane123 | 2:57ae9d39b375 | 203 | void techSupport() |
ciarankane123 | 2:57ae9d39b375 | 204 | { |
ciarankane123 | 3:bdfa2573642e | 205 | lcd.printString("Ciaran Kane",0,1); |
ciarankane123 | 3:bdfa2573642e | 206 | lcd.printString("Main engineer",0,2); |
ciarankane123 | 3:bdfa2573642e | 207 | lcd.printString("Ciaran.kane@se.com",0,3); |
ciarankane123 | 2:57ae9d39b375 | 208 | lcd.clear(); |
ciarankane123 | 3:bdfa2573642e | 209 | lcd.printString("Contact for queries",0,0); |
ciarankane123 | 3:bdfa2573642e | 210 | lcd.printString("+44 758604400",0,1); |
ciarankane123 | 2:57ae9d39b375 | 211 | } |
ciarankane123 | 2:57ae9d39b375 | 212 |