Resit Target Localisation Ciaran Kane 18689005

Dependencies:   mbed

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?

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