Resit Target Localisation Ciaran Kane 18689005

Dependencies:   mbed

Committer:
ciarankane123
Date:
Thu Aug 25 13:49:37 2022 +0000
Revision:
6:466f54c00c50
Parent:
5:5351ab7d9132
Final Code;

Who changed what in which revision?

UserRevisionLine numberNew 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 5:5351ab7d9132 17 int Target;
ciarankane123 0:479e94f82332 18
ciarankane123 0:479e94f82332 19 /**Voids for N5110 Menu Display*/
ciarankane123 0:479e94f82332 20 void initialiseMbed();
ciarankane123 0:479e94f82332 21 void menu();
ciarankane123 0:479e94f82332 22 void targetLocate();
ciarankane123 0:479e94f82332 23 void initUltrasonic();
ciarankane123 0:479e94f82332 24 void dist(int distance);
ciarankane123 2:57ae9d39b375 25 void techSupport();
ciarankane123 5:5351ab7d9132 26 void TargetDistance();
ciarankane123 5:5351ab7d9132 27
ciarankane123 0:479e94f82332 28
ciarankane123 0:479e94f82332 29 /**I/O definition*/
ciarankane123 0:479e94f82332 30 InterruptIn bumperL_btn(PTB18);
ciarankane123 0:479e94f82332 31 InterruptIn bumperR_btn(PTB3);
ciarankane123 0:479e94f82332 32 InterruptIn BACK_btn(PTB19);
ciarankane123 0:479e94f82332 33 InterruptIn START_btn(PTC5);
ciarankane123 0:479e94f82332 34 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
ciarankane123 0:479e94f82332 35 Serial pc(USBTX, USBRX);
ciarankane123 0:479e94f82332 36 BusOut redleds(PTA1,PTA2,PTC2);
ciarankane123 0:479e94f82332 37 BusOut greenleds(PTC3,PTC4,PTD3);
ciarankane123 0:479e94f82332 38 PwmOut piezo(PTC10);
ciarankane123 0:479e94f82332 39 DigitalOut trigPin(PTD0);
ciarankane123 0:479e94f82332 40 DigitalIn echoPin(PTC12);
ciarankane123 0:479e94f82332 41 Joystick joystick(PTB10,PTB11,PTC16);
ciarankane123 0:479e94f82332 42 ultrasonic Sensor(PTD0, PTC12, .5, 1, &dist);
ciarankane123 0:479e94f82332 43
ciarankane123 0:479e94f82332 44
ciarankane123 0:479e94f82332 45 /** Design and thought process goes into more detail in the associated report written for this project.
ciarankane123 0:479e94f82332 46 But i will give a brief breakdown of what this simple code entails below:
ciarankane123 0:479e94f82332 47
ciarankane123 0:479e94f82332 48 *Calling for initialisation of mbedded controller on startup whilst all LEDS's on
ciarankane123 0:479e94f82332 49 when inialisation is complete turn off red LED's
ciarankane123 0:479e94f82332 50
ciarankane123 0:479e94f82332 51 *all for menu where you have an option to initialise the sensor or
ciarankane123 0:479e94f82332 52 locate targets whilst red LED's stay on until one is selected using the left and right bumper
ciarankane123 0:479e94f82332 53 then green LEDS on
ciarankane123 0:479e94f82332 54
ciarankane123 0:479e94f82332 55 *If target locate is selected call for targetLocate void to show that a target is being located whilst green LEDS on
ciarankane123 0:479e94f82332 56
ciarankane123 0:479e94f82332 57 *If sensor intialisation is selected then sound piezo buzzer for a period of 10 seconds until sensor is initialised
ciarankane123 0:479e94f82332 58
ciarankane123 0:479e94f82332 59 *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 60
ciarankane123 0:479e94f82332 61 *After target is located call for results void to display distance from sensor
ciarankane123 0:479e94f82332 62 */
ciarankane123 0:479e94f82332 63 //Main Program
ciarankane123 0:479e94f82332 64 int main()
ciarankane123 0:479e94f82332 65 {
ciarankane123 0:479e94f82332 66 lcd.init();
ciarankane123 4:95b13ca0550e 67 // printf ("LCD intialise");
ciarankane123 0:479e94f82332 68 lcd.setContrast(0.4);
ciarankane123 4:95b13ca0550e 69 // printf ("LCD Contrast set");
ciarankane123 4:95b13ca0550e 70 // printf ("LCD Brightness Set");
ciarankane123 0:479e94f82332 71 initialiseMbed();
ciarankane123 4:95b13ca0550e 72 // printf ("MBED K64f Initialise");
ciarankane123 0:479e94f82332 73 Sensor.startUpdates();
ciarankane123 0:479e94f82332 74 // printf ("Ultrasonic Updates started");
ciarankane123 0:479e94f82332 75 }
ciarankane123 0:479e94f82332 76
ciarankane123 0:479e94f82332 77 void initialiseMbed() {
ciarankane123 5:5351ab7d9132 78 //printf ( Initialise MBED)
ciarankane123 0:479e94f82332 79 greenleds= 1;
ciarankane123 0:479e94f82332 80 redleds=0;
ciarankane123 5:5351ab7d9132 81 //printf(green LED on)
ciarankane123 5:5351ab7d9132 82 //printf(red led off)
ciarankane123 0:479e94f82332 83 lcd.clear();
ciarankane123 0:479e94f82332 84 lcd.printString("MBED",0,0);
ciarankane123 0:479e94f82332 85 lcd.printString("Controller",0,1);
ciarankane123 0:479e94f82332 86 lcd.printString("Initialising",0,2);
ciarankane123 0:479e94f82332 87 lcd.printString("Ciaran Kane",0,5);
ciarankane123 0:479e94f82332 88 lcd.refresh();
ciarankane123 0:479e94f82332 89 wait(1);
ciarankane123 0:479e94f82332 90 lcd.printString("Initialising.",0,2);
ciarankane123 0:479e94f82332 91 lcd.refresh();
ciarankane123 0:479e94f82332 92 wait(1);
ciarankane123 0:479e94f82332 93 lcd.printString("Initialising..",0,2);
ciarankane123 0:479e94f82332 94 lcd.refresh();
ciarankane123 0:479e94f82332 95 wait(5.0);
ciarankane123 0:479e94f82332 96 lcd.clear();
ciarankane123 5:5351ab7d9132 97 //printf (Intialised. Call for menu void)
ciarankane123 0:479e94f82332 98 lcd.printString("Initialised",0,0);
ciarankane123 0:479e94f82332 99 lcd.printString("Press Start",0,1);
ciarankane123 0:479e94f82332 100 lcd.printString("For",0,2);
ciarankane123 0:479e94f82332 101 lcd.printString("Main Menu",0,3);
ciarankane123 0:479e94f82332 102 lcd.printString("",0,4);
ciarankane123 0:479e94f82332 103 lcd.printString("Ciaran Kane",0,5);
ciarankane123 0:479e94f82332 104 lcd.refresh();
ciarankane123 0:479e94f82332 105 greenleds=0;
ciarankane123 5:5351ab7d9132 106 //printf (green led off)
ciarankane123 0:479e94f82332 107 redleds=1;
ciarankane123 5:5351ab7d9132 108 //printf (red led on)
ciarankane123 0:479e94f82332 109 wait(5.0);
ciarankane123 0:479e94f82332 110
ciarankane123 0:479e94f82332 111 while(1)
ciarankane123 0:479e94f82332 112 {
ciarankane123 0:479e94f82332 113 wait(0.5);
ciarankane123 0:479e94f82332 114 if (g_START_flag==1) {
ciarankane123 5:5351ab7d9132 115 //printf (start flag)
ciarankane123 0:479e94f82332 116 menu();
ciarankane123 0:479e94f82332 117 }
ciarankane123 0:479e94f82332 118 }
ciarankane123 0:479e94f82332 119 }
ciarankane123 0:479e94f82332 120
ciarankane123 0:479e94f82332 121
ciarankane123 0:479e94f82332 122 void menu()
ciarankane123 0:479e94f82332 123 {
ciarankane123 0:479e94f82332 124 lcd.clear();
ciarankane123 0:479e94f82332 125 lcd.printString("Main Menu",0,0);
ciarankane123 6:466f54c00c50 126 lcd.printString("Localise - Start",0,2);
ciarankane123 2:57ae9d39b375 127 lcd.printString("Sensor Initialise - LB",0,4);
ciarankane123 2:57ae9d39b375 128 lcd.printString("Technical Support - RB ",0,5);
ciarankane123 0:479e94f82332 129 while(1)
ciarankane123 0:479e94f82332 130 {
ciarankane123 0:479e94f82332 131 wait(0.5);
ciarankane123 0:479e94f82332 132 if (g_bumperL_flag==1) {
ciarankane123 5:5351ab7d9132 133 //printf (Left bumper flag)
ciarankane123 0:479e94f82332 134 initUltrasonic();
ciarankane123 0:479e94f82332 135 }
ciarankane123 2:57ae9d39b375 136 else if(g_START_flag==1) {
ciarankane123 5:5351ab7d9132 137 //printf (Start flag)
ciarankane123 0:479e94f82332 138 targetLocate();
ciarankane123 0:479e94f82332 139 }
ciarankane123 2:57ae9d39b375 140 else if(g_bumperR_flag==1) {
ciarankane123 5:5351ab7d9132 141 //printf (right bumper flag)
ciarankane123 2:57ae9d39b375 142 techSupport();
ciarankane123 2:57ae9d39b375 143 }
ciarankane123 0:479e94f82332 144 }
ciarankane123 0:479e94f82332 145 }
ciarankane123 0:479e94f82332 146
ciarankane123 0:479e94f82332 147
ciarankane123 0:479e94f82332 148 void initUltrasonic()
ciarankane123 0:479e94f82332 149 {
ciarankane123 0:479e94f82332 150
ciarankane123 0:479e94f82332 151 greenleds= 1;
ciarankane123 5:5351ab7d9132 152 //printf ( green led on)
ciarankane123 0:479e94f82332 153 redleds=0;
ciarankane123 5:5351ab7d9132 154 //printf(red led off)
ciarankane123 0:479e94f82332 155 lcd.clear();
ciarankane123 0:479e94f82332 156 lcd.printString("Ultrasonic",0,0);
ciarankane123 0:479e94f82332 157 lcd.printString("Sesnor",0,1);
ciarankane123 0:479e94f82332 158 lcd.printString("Initialising",0,2);
ciarankane123 0:479e94f82332 159 lcd.printString("Ciaran Kane",0,5);
ciarankane123 0:479e94f82332 160 lcd.refresh();
ciarankane123 0:479e94f82332 161 wait(1);
ciarankane123 0:479e94f82332 162 lcd.printString("Initialising.",0,2);
ciarankane123 0:479e94f82332 163 lcd.refresh();
ciarankane123 0:479e94f82332 164 wait(1);
ciarankane123 0:479e94f82332 165 lcd.printString("Initialising..",0,2);
ciarankane123 0:479e94f82332 166 lcd.refresh();
ciarankane123 0:479e94f82332 167 wait(5.0);
ciarankane123 0:479e94f82332 168 lcd.clear();
ciarankane123 5:5351ab7d9132 169 //printf(Sensor initialised)
ciarankane123 0:479e94f82332 170 lcd.printString("Initialised",0,0);
ciarankane123 0:479e94f82332 171 lcd.printString("Press Start",0,1);
ciarankane123 0:479e94f82332 172 lcd.printString("For",0,2);
ciarankane123 0:479e94f82332 173 lcd.printString("Main Menu",0,3);
ciarankane123 0:479e94f82332 174 lcd.printString("",0,4);
ciarankane123 0:479e94f82332 175 lcd.printString("Ciaran Kane",0,5);
ciarankane123 0:479e94f82332 176 lcd.refresh();
ciarankane123 0:479e94f82332 177 greenleds=0;
ciarankane123 5:5351ab7d9132 178 //printf( green led off)
ciarankane123 0:479e94f82332 179 redleds=1;
ciarankane123 5:5351ab7d9132 180 //printf( red led on)
ciarankane123 0:479e94f82332 181 wait(5.0);
ciarankane123 0:479e94f82332 182
ciarankane123 0:479e94f82332 183 while(1)
ciarankane123 0:479e94f82332 184 {
ciarankane123 0:479e94f82332 185 wait(0.5);
ciarankane123 0:479e94f82332 186 if (g_START_flag==1) {
ciarankane123 5:5351ab7d9132 187 //printf( start flag)
ciarankane123 0:479e94f82332 188 menu();
ciarankane123 0:479e94f82332 189 }
ciarankane123 0:479e94f82332 190 }
ciarankane123 0:479e94f82332 191 }
ciarankane123 0:479e94f82332 192 void dist(int distance)
ciarankane123 0:479e94f82332 193 {
ciarankane123 5:5351ab7d9132 194 // printf("sense = %d\n", sense);
ciarankane123 5:5351ab7d9132 195 //printf("Distance changed to %dmm\r\n", distance);
ciarankane123 0:479e94f82332 196
ciarankane123 0:479e94f82332 197 lcd.clear();
ciarankane123 0:479e94f82332 198
ciarankane123 5:5351ab7d9132 199 char targetD[14];
ciarankane123 5:5351ab7d9132 200 int length = sprintf(targetD,"%dmm", distance);
ciarankane123 0:479e94f82332 201 if (length <= 14)
ciarankane123 0:479e94f82332 202
ciarankane123 5:5351ab7d9132 203 lcd.printString("Localising Target",0,0);
ciarankane123 5:5351ab7d9132 204 lcd.printString(targetD,24,3);
ciarankane123 0:479e94f82332 205 lcd.refresh();
ciarankane123 0:479e94f82332 206
ciarankane123 0:479e94f82332 207 }
ciarankane123 0:479e94f82332 208
ciarankane123 0:479e94f82332 209 void targetLocate()
ciarankane123 0:479e94f82332 210 {
ciarankane123 5:5351ab7d9132 211 //printf( Target locating)
ciarankane123 0:479e94f82332 212 lcd.printString("Searching",0,1);
ciarankane123 0:479e94f82332 213 lcd.printString("For",0,2);
ciarankane123 0:479e94f82332 214 lcd.printString("Target",0,3);
ciarankane123 5:5351ab7d9132 215 TargetDistance();
ciarankane123 5:5351ab7d9132 216 //printf( Target distance)
ciarankane123 0:479e94f82332 217 lcd.clear();
ciarankane123 0:479e94f82332 218 lcd.printString("Target",0,0);
ciarankane123 0:479e94f82332 219 lcd.printString("Found!",0,1);
ciarankane123 2:57ae9d39b375 220 }
ciarankane123 5:5351ab7d9132 221
ciarankane123 5:5351ab7d9132 222 void TargetDistance()
ciarankane123 5:5351ab7d9132 223 {
ciarankane123 5:5351ab7d9132 224 //sense;
ciarankane123 5:5351ab7d9132 225
ciarankane123 5:5351ab7d9132 226 Target= Sensor.getCurrentDistance();
ciarankane123 5:5351ab7d9132 227
ciarankane123 5:5351ab7d9132 228 //printf("distance at sense 1 = %d\r\n", Distance1);
ciarankane123 5:5351ab7d9132 229
ciarankane123 5:5351ab7d9132 230 }
ciarankane123 2:57ae9d39b375 231 void techSupport()
ciarankane123 2:57ae9d39b375 232 {
ciarankane123 5:5351ab7d9132 233 //printf(Tech support screen)
ciarankane123 3:bdfa2573642e 234 lcd.printString("Ciaran Kane",0,1);
ciarankane123 3:bdfa2573642e 235 lcd.printString("Main engineer",0,2);
ciarankane123 3:bdfa2573642e 236 lcd.printString("Ciaran.kane@se.com",0,3);
ciarankane123 2:57ae9d39b375 237 lcd.clear();
ciarankane123 3:bdfa2573642e 238 lcd.printString("Contact for queries",0,0);
ciarankane123 3:bdfa2573642e 239 lcd.printString("+44 758604400",0,1);
ciarankane123 2:57ae9d39b375 240 }
ciarankane123 2:57ae9d39b375 241