Resit Target Localisation Ciaran Kane 18689005

Dependencies:   mbed

Committer:
ciarankane123
Date:
Tue Aug 23 14:58:55 2022 +0000
Revision:
0:479e94f82332
Child:
2:57ae9d39b375
Added ultrasonic intialising

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ciarankane123 0:479e94f82332 1 /**Ciaran Kane-18689005-- Low cost 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 0:479e94f82332 24
ciarankane123 0:479e94f82332 25 /**I/O definition*/
ciarankane123 0:479e94f82332 26 InterruptIn bumperL_btn(PTB18);
ciarankane123 0:479e94f82332 27 InterruptIn bumperR_btn(PTB3);
ciarankane123 0:479e94f82332 28 InterruptIn BACK_btn(PTB19);
ciarankane123 0:479e94f82332 29 InterruptIn START_btn(PTC5);
ciarankane123 0:479e94f82332 30 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
ciarankane123 0:479e94f82332 31 Serial pc(USBTX, USBRX);
ciarankane123 0:479e94f82332 32 BusOut redleds(PTA1,PTA2,PTC2);
ciarankane123 0:479e94f82332 33 BusOut greenleds(PTC3,PTC4,PTD3);
ciarankane123 0:479e94f82332 34 PwmOut piezo(PTC10);
ciarankane123 0:479e94f82332 35 DigitalOut trigPin(PTD0);
ciarankane123 0:479e94f82332 36 DigitalIn echoPin(PTC12);
ciarankane123 0:479e94f82332 37 Joystick joystick(PTB10,PTB11,PTC16);
ciarankane123 0:479e94f82332 38 ultrasonic Sensor(PTD0, PTC12, .5, 1, &dist);
ciarankane123 0:479e94f82332 39
ciarankane123 0:479e94f82332 40
ciarankane123 0:479e94f82332 41 /** Design and thought process goes into more detail in the associated report written for this project.
ciarankane123 0:479e94f82332 42 But i will give a brief breakdown of what this simple code entails below:
ciarankane123 0:479e94f82332 43
ciarankane123 0:479e94f82332 44 *Calling for initialisation of mbedded controller on startup whilst all LEDS's on
ciarankane123 0:479e94f82332 45 when inialisation is complete turn off red LED's
ciarankane123 0:479e94f82332 46
ciarankane123 0:479e94f82332 47 *all for menu where you have an option to initialise the sensor or
ciarankane123 0:479e94f82332 48 locate targets whilst red LED's stay on until one is selected using the left and right bumper
ciarankane123 0:479e94f82332 49 then green LEDS on
ciarankane123 0:479e94f82332 50
ciarankane123 0:479e94f82332 51 *If target locate is selected call for targetLocate void to show that a target is being located whilst green LEDS on
ciarankane123 0:479e94f82332 52
ciarankane123 0:479e94f82332 53 *If sensor intialisation is selected then sound piezo buzzer for a period of 10 seconds until sensor is initialised
ciarankane123 0:479e94f82332 54
ciarankane123 0:479e94f82332 55 *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 56
ciarankane123 0:479e94f82332 57 *After target is located call for results void to display distance from sensor
ciarankane123 0:479e94f82332 58 */
ciarankane123 0:479e94f82332 59 //Main Program
ciarankane123 0:479e94f82332 60 int main()
ciarankane123 0:479e94f82332 61 {
ciarankane123 0:479e94f82332 62 lcd.init();
ciarankane123 0:479e94f82332 63 lcd.setContrast(0.4);
ciarankane123 0:479e94f82332 64 lcd.setBrightness(0.5);
ciarankane123 0:479e94f82332 65 initialiseMbed();
ciarankane123 0:479e94f82332 66 Sensor.startUpdates();
ciarankane123 0:479e94f82332 67 // printf ("Ultrasonic Updates started");
ciarankane123 0:479e94f82332 68 }
ciarankane123 0:479e94f82332 69
ciarankane123 0:479e94f82332 70 void initialiseMbed() {
ciarankane123 0:479e94f82332 71
ciarankane123 0:479e94f82332 72 greenleds= 1;
ciarankane123 0:479e94f82332 73 redleds=0;
ciarankane123 0:479e94f82332 74 lcd.clear();
ciarankane123 0:479e94f82332 75 lcd.printString("MBED",0,0);
ciarankane123 0:479e94f82332 76 lcd.printString("Controller",0,1);
ciarankane123 0:479e94f82332 77 lcd.printString("Initialising",0,2);
ciarankane123 0:479e94f82332 78 lcd.printString("Ciaran Kane",0,5);
ciarankane123 0:479e94f82332 79 lcd.refresh();
ciarankane123 0:479e94f82332 80 wait(1);
ciarankane123 0:479e94f82332 81 lcd.printString("Initialising.",0,2);
ciarankane123 0:479e94f82332 82 lcd.refresh();
ciarankane123 0:479e94f82332 83 wait(1);
ciarankane123 0:479e94f82332 84 lcd.printString("Initialising..",0,2);
ciarankane123 0:479e94f82332 85 lcd.refresh();
ciarankane123 0:479e94f82332 86 wait(5.0);
ciarankane123 0:479e94f82332 87 lcd.clear();
ciarankane123 0:479e94f82332 88 lcd.printString("Initialised",0,0);
ciarankane123 0:479e94f82332 89 lcd.printString("Press Start",0,1);
ciarankane123 0:479e94f82332 90 lcd.printString("For",0,2);
ciarankane123 0:479e94f82332 91 lcd.printString("Main Menu",0,3);
ciarankane123 0:479e94f82332 92 lcd.printString("",0,4);
ciarankane123 0:479e94f82332 93 lcd.printString("Ciaran Kane",0,5);
ciarankane123 0:479e94f82332 94 lcd.refresh();
ciarankane123 0:479e94f82332 95 greenleds=0;
ciarankane123 0:479e94f82332 96 redleds=1;
ciarankane123 0:479e94f82332 97 wait(5.0);
ciarankane123 0:479e94f82332 98
ciarankane123 0:479e94f82332 99 while(1)
ciarankane123 0:479e94f82332 100 {
ciarankane123 0:479e94f82332 101 wait(0.5);
ciarankane123 0:479e94f82332 102 if (g_START_flag==1) {
ciarankane123 0:479e94f82332 103 menu();
ciarankane123 0:479e94f82332 104 }
ciarankane123 0:479e94f82332 105 }
ciarankane123 0:479e94f82332 106 }
ciarankane123 0:479e94f82332 107
ciarankane123 0:479e94f82332 108
ciarankane123 0:479e94f82332 109 void menu()
ciarankane123 0:479e94f82332 110 {
ciarankane123 0:479e94f82332 111 lcd.clear();
ciarankane123 0:479e94f82332 112 lcd.printString("Main Menu",0,0);
ciarankane123 0:479e94f82332 113 lcd.printString("Target Localise",0,2);
ciarankane123 0:479e94f82332 114 lcd.printString("Sensor Initialise",0,4);
ciarankane123 0:479e94f82332 115 lcd.printString("Ciaran Kane",0,5);
ciarankane123 0:479e94f82332 116 while(1)
ciarankane123 0:479e94f82332 117 {
ciarankane123 0:479e94f82332 118 wait(0.5);
ciarankane123 0:479e94f82332 119 if (g_bumperL_flag==1) {
ciarankane123 0:479e94f82332 120 initUltrasonic();
ciarankane123 0:479e94f82332 121 }
ciarankane123 0:479e94f82332 122 else if(g_bumperR_flag==1) {
ciarankane123 0:479e94f82332 123 targetLocate();
ciarankane123 0:479e94f82332 124 }
ciarankane123 0:479e94f82332 125 }
ciarankane123 0:479e94f82332 126 }
ciarankane123 0:479e94f82332 127
ciarankane123 0:479e94f82332 128
ciarankane123 0:479e94f82332 129 void initUltrasonic()
ciarankane123 0:479e94f82332 130 {
ciarankane123 0:479e94f82332 131
ciarankane123 0:479e94f82332 132 greenleds= 1;
ciarankane123 0:479e94f82332 133 redleds=0;
ciarankane123 0:479e94f82332 134 lcd.clear();
ciarankane123 0:479e94f82332 135 lcd.printString("Ultrasonic",0,0);
ciarankane123 0:479e94f82332 136 lcd.printString("Sesnor",0,1);
ciarankane123 0:479e94f82332 137 lcd.printString("Initialising",0,2);
ciarankane123 0:479e94f82332 138 lcd.printString("Ciaran Kane",0,5);
ciarankane123 0:479e94f82332 139 lcd.refresh();
ciarankane123 0:479e94f82332 140 wait(1);
ciarankane123 0:479e94f82332 141 lcd.printString("Initialising.",0,2);
ciarankane123 0:479e94f82332 142 lcd.refresh();
ciarankane123 0:479e94f82332 143 wait(1);
ciarankane123 0:479e94f82332 144 lcd.printString("Initialising..",0,2);
ciarankane123 0:479e94f82332 145 lcd.refresh();
ciarankane123 0:479e94f82332 146 wait(5.0);
ciarankane123 0:479e94f82332 147 lcd.clear();
ciarankane123 0:479e94f82332 148 lcd.printString("Initialised",0,0);
ciarankane123 0:479e94f82332 149 lcd.printString("Press Start",0,1);
ciarankane123 0:479e94f82332 150 lcd.printString("For",0,2);
ciarankane123 0:479e94f82332 151 lcd.printString("Main Menu",0,3);
ciarankane123 0:479e94f82332 152 lcd.printString("",0,4);
ciarankane123 0:479e94f82332 153 lcd.printString("Ciaran Kane",0,5);
ciarankane123 0:479e94f82332 154 lcd.refresh();
ciarankane123 0:479e94f82332 155 greenleds=0;
ciarankane123 0:479e94f82332 156 redleds=1;
ciarankane123 0:479e94f82332 157 wait(5.0);
ciarankane123 0:479e94f82332 158
ciarankane123 0:479e94f82332 159 while(1)
ciarankane123 0:479e94f82332 160 {
ciarankane123 0:479e94f82332 161 wait(0.5);
ciarankane123 0:479e94f82332 162 if (g_START_flag==1) {
ciarankane123 0:479e94f82332 163 menu();
ciarankane123 0:479e94f82332 164 }
ciarankane123 0:479e94f82332 165 }
ciarankane123 0:479e94f82332 166 }
ciarankane123 0:479e94f82332 167 void dist(int distance)
ciarankane123 0:479e94f82332 168 {
ciarankane123 0:479e94f82332 169 //printf("sense = %d\n", sense);
ciarankane123 0:479e94f82332 170 // printf("Distance changed to %dmm\r\n", distance);
ciarankane123 0:479e94f82332 171
ciarankane123 0:479e94f82332 172 lcd.clear();
ciarankane123 0:479e94f82332 173
ciarankane123 0:479e94f82332 174 char buffer[14];
ciarankane123 0:479e94f82332 175 int length = sprintf(buffer,"%dmm", distance);
ciarankane123 0:479e94f82332 176 if (length <= 14)
ciarankane123 0:479e94f82332 177
ciarankane123 0:479e94f82332 178 lcd.printString("set object to",0,0);
ciarankane123 0:479e94f82332 179 lcd.printString(" 200mm",0,1);
ciarankane123 0:479e94f82332 180 lcd.printString(buffer,24,3);
ciarankane123 0:479e94f82332 181 lcd.refresh();
ciarankane123 0:479e94f82332 182
ciarankane123 0:479e94f82332 183 }
ciarankane123 0:479e94f82332 184
ciarankane123 0:479e94f82332 185 void targetLocate()
ciarankane123 0:479e94f82332 186 {
ciarankane123 0:479e94f82332 187 lcd.printString("Searching",0,1);
ciarankane123 0:479e94f82332 188 lcd.printString("For",0,2);
ciarankane123 0:479e94f82332 189 lcd.printString("Target",0,3);
ciarankane123 0:479e94f82332 190 lcd.clear();
ciarankane123 0:479e94f82332 191 lcd.printString("Target",0,0);
ciarankane123 0:479e94f82332 192 lcd.printString("Found!",0,1);
ciarankane123 0:479e94f82332 193 }