Resit Target Localisation Ciaran Kane 18689005

Dependencies:   mbed

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?

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 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