Coursework

Committer:
sesa514652
Date:
Sun Jan 23 14:59:33 2022 +0000
Revision:
25:9798017b837d
Parent:
24:a88c4941a25e
Child:
26:8826ed43fad2
Sensor Reading and filling array,  To get the Change ironed out the get the scan working off a button press.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sesa514652 0:1f799c7cce2b 1 #include "mbed.h"
sesa514652 0:1f799c7cce2b 2 #include "Joystick.h"
sesa514652 0:1f799c7cce2b 3 #include "N5110.h"
sesa514652 0:1f799c7cce2b 4 #include "hcsr04.h"
sesa514652 3:6ecb75a2675c 5 #include "Piezo.h"
sesa514652 8:770d168713cc 6 #include "string"
sesa514652 20:4e1f2917a857 7 #include "array"
sesa514652 22:82b01fdfc61f 8 #include <iostream>
sesa514652 12:ceea378d5691 9 // FSM Menu
sesa514652 12:ceea378d5691 10 // defines directions as 0/1. Note UPPERCASE
sesa514652 12:ceea378d5691 11 #define UP 0
sesa514652 12:ceea378d5691 12 #define DOWN 1
sesa514652 12:ceea378d5691 13 // set inital state
sesa514652 12:ceea378d5691 14 volatile int state = 0;
sesa514652 12:ceea378d5691 15 // set initial direction
sesa514652 12:ceea378d5691 16 int direction = UP;
sesa514652 12:ceea378d5691 17 // array of states in the FSM, each element is the output of the counter
sesa514652 12:ceea378d5691 18 // set the output in binary to make it easier, 0 is LED on, 1 is LED off
sesa514652 12:ceea378d5691 19 string fsm[4] = {"buttonA_isr","buttonB_isr","buttonAsss_isr","buttonA_isr"};
sesa514652 18:bb36d96142dd 20 volatile int PressA;
sesa514652 18:bb36d96142dd 21 volatile int PressB;
sesa514652 10:42e70b596099 22
sesa514652 5:9b2c976ca318 23 // y x button
sesa514652 0:1f799c7cce2b 24 Joystick joystick(PTB10,PTB11,PTC16);
sesa514652 0:1f799c7cce2b 25 HCSR04 sensor(D14, D15);
sesa514652 3:6ecb75a2675c 26 Piezo Buzzer(PTC10);
sesa514652 8:770d168713cc 27 //Bringing in buttons
sesa514652 8:770d168713cc 28 InterruptIn buttonA(PTB9);
sesa514652 8:770d168713cc 29 InterruptIn buttonB(PTD0);
sesa514652 8:770d168713cc 30 InterruptIn buttonX(PTC17);
sesa514652 8:770d168713cc 31 InterruptIn buttonY(PTC12);
sesa514652 11:1dec05b7d1c1 32 InterruptIn buttonStart(PTC5);
sesa514652 11:1dec05b7d1c1 33 InterruptIn buttonBack(PTB19);
sesa514652 11:1dec05b7d1c1 34 InterruptIn buttonLeft(PTB18);
sesa514652 11:1dec05b7d1c1 35 InterruptIn buttonRight(PTB3);
sesa514652 0:1f799c7cce2b 36
sesa514652 11:1dec05b7d1c1 37 // create an event queue
sesa514652 11:1dec05b7d1c1 38 EventQueue queue; // events are needed to get arround the printf issue
sesa514652 5:9b2c976ca318 39 //rows,cols
sesa514652 0:1f799c7cce2b 40 int sprite[8][5] = {
sesa514652 0:1f799c7cce2b 41 { 0,0,1,0,0 },
sesa514652 0:1f799c7cce2b 42 { 0,1,1,1,0 },
sesa514652 0:1f799c7cce2b 43 { 0,0,1,0,0 },
sesa514652 0:1f799c7cce2b 44 { 0,1,1,1,0 },
sesa514652 0:1f799c7cce2b 45 { 1,1,1,1,1 },
sesa514652 0:1f799c7cce2b 46 { 1,1,1,1,1 },
sesa514652 0:1f799c7cce2b 47 { 1,1,0,1,1 },
sesa514652 0:1f799c7cce2b 48 { 1,1,0,1,1 },
sesa514652 5:9b2c976ca318 49 };
sesa514652 11:1dec05b7d1c1 50 void init_K64F(); // Start K64fBoard
sesa514652 11:1dec05b7d1c1 51
sesa514652 11:1dec05b7d1c1 52 void buttonA_isr(); // Button A interrupt service routine
sesa514652 11:1dec05b7d1c1 53 void buttonB_isr(); // Button B interrupt service routine
sesa514652 11:1dec05b7d1c1 54 void buttonX_isr(); // Button X interrupt service routine
sesa514652 11:1dec05b7d1c1 55 void buttonY_isr(); // Button Y interrupt service routine
sesa514652 11:1dec05b7d1c1 56 void buttonStart_isr(); // Button Start interrupt service routine
sesa514652 11:1dec05b7d1c1 57 void buttonBack_isr(); // Button Back interrupt service routine
sesa514652 11:1dec05b7d1c1 58 void buttonLeft_isr(); // Button Left interrupt service routine
sesa514652 11:1dec05b7d1c1 59 void buttonRight_isr(); // Button Right interrupt service routine
sesa514652 11:1dec05b7d1c1 60 volatile int g_buttonA_flag = 0; // Global Flag
sesa514652 11:1dec05b7d1c1 61 volatile int g_buttonB_flag = 0; // Global Flag
sesa514652 11:1dec05b7d1c1 62 volatile int g_buttonX_flag = 0; // Global Flag
sesa514652 11:1dec05b7d1c1 63 volatile int g_buttonY_flag = 0; // Global Flag
sesa514652 11:1dec05b7d1c1 64 volatile int g_buttonStart_flag = 0; // Global Flag
sesa514652 11:1dec05b7d1c1 65 volatile int g_buttonBack_flag = 0; // Global Flag
sesa514652 11:1dec05b7d1c1 66 volatile int g_buttonLeft_flag = 0; // Global Flag
sesa514652 11:1dec05b7d1c1 67 volatile int g_buttonRight_flag = 0; // Global Flag
sesa514652 18:bb36d96142dd 68 int buttonCountA();
sesa514652 18:bb36d96142dd 69 int buttonCountB();
sesa514652 11:1dec05b7d1c1 70 //volatile int g_buttonA_counter = 0; // Global counter
sesa514652 8:770d168713cc 71 //Test function after research C++ lanuage 05/01/22
sesa514652 4:167ce930c9d5 72 int cube(int num){
sesa514652 11:1dec05b7d1c1 73 return num*num;
sesa514652 5:9b2c976ca318 74 };
sesa514652 10:42e70b596099 75 // Menu Items
sesa514652 10:42e70b596099 76 int page1;
sesa514652 10:42e70b596099 77 int page2;
sesa514652 10:42e70b596099 78 int page3;
sesa514652 10:42e70b596099 79 string Listitem1 = "Game"; // guess distance
sesa514652 10:42e70b596099 80 string Listitem2 = "Measure"; // measure distance of object
sesa514652 10:42e70b596099 81 string Listitem3 = "Detect"; // alarm when object is dectected
sesa514652 5:9b2c976ca318 82 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
sesa514652 9:cdd7d9a123f9 83 /* Test of the interup an operating the buzzer this kills the board
sesa514652 9:cdd7d9a123f9 84 void buzzme(){
sesa514652 9:cdd7d9a123f9 85 Buzzer.play(200,120);
sesa514652 9:cdd7d9a123f9 86 wait_ms(5);
sesa514652 9:cdd7d9a123f9 87 Buzzer.play(200,120);;
sesa514652 9:cdd7d9a123f9 88 }
sesa514652 9:cdd7d9a123f9 89 */
sesa514652 11:1dec05b7d1c1 90 void printme(){
sesa514652 9:cdd7d9a123f9 91
sesa514652 11:1dec05b7d1c1 92 volatile double x ;
sesa514652 11:1dec05b7d1c1 93 x = 1;
sesa514652 10:42e70b596099 94 printf("%f\n",x);
sesa514652 11:1dec05b7d1c1 95 // return 0;
sesa514652 9:cdd7d9a123f9 96 }
sesa514652 10:42e70b596099 97
sesa514652 24:a88c4941a25e 98 int Scan1[10];
sesa514652 24:a88c4941a25e 99 int Scan2[10];
sesa514652 24:a88c4941a25e 100 int Scan1Input(){;
sesa514652 25:9798017b837d 101 Scan1[0] = sensor.distance();
sesa514652 25:9798017b837d 102 Scan1[1] = sensor.distance();;
sesa514652 25:9798017b837d 103 Scan1[2] = sensor.distance();;
sesa514652 25:9798017b837d 104 Scan1[3] = sensor.distance();;
sesa514652 25:9798017b837d 105 Scan1[4] = sensor.distance();;
sesa514652 25:9798017b837d 106 Scan1[5] = sensor.distance();;
sesa514652 25:9798017b837d 107 Scan1[6] = sensor.distance();;
sesa514652 25:9798017b837d 108 Scan1[7]= sensor.distance();;
sesa514652 25:9798017b837d 109 Scan1[8] = sensor.distance();;
sesa514652 25:9798017b837d 110 Scan1[9]= sensor.distance();;
sesa514652 25:9798017b837d 111 return Scan1[0,1,2,3,4,5,6,7,8,9];}
sesa514652 10:42e70b596099 112
sesa514652 10:42e70b596099 113 //void returnme(){
sesa514652 10:42e70b596099 114 //int num;
sesa514652 10:42e70b596099 115 // return num*num;
sesa514652 10:42e70b596099 116 // };
sesa514652 0:1f799c7cce2b 117 int main() {
sesa514652 18:bb36d96142dd 118 //initialise Joystick
sesa514652 5:9b2c976ca318 119 joystick.init();
sesa514652 5:9b2c976ca318 120
sesa514652 11:1dec05b7d1c1 121 // create a thread that'll run the event queue's dispatch function
sesa514652 11:1dec05b7d1c1 122 Thread eventThread;
sesa514652 11:1dec05b7d1c1 123 eventThread.start(callback(&queue, &EventQueue::dispatch_forever));
sesa514652 11:1dec05b7d1c1 124
sesa514652 11:1dec05b7d1c1 125 buttonA.rise(queue.event(&buttonA_isr)); // This is used to call the function putting it in queue allowing the screen toupdat no muxt error
sesa514652 11:1dec05b7d1c1 126 buttonB.rise(queue.event(&buttonB_isr));
sesa514652 11:1dec05b7d1c1 127 buttonX.rise(queue.event(&buttonX_isr));
sesa514652 11:1dec05b7d1c1 128 buttonY.rise(queue.event(&buttonY_isr));
sesa514652 11:1dec05b7d1c1 129 buttonStart.rise(queue.event(&buttonStart_isr)); // This is used to call the function putting it in queue allowing the screen toupdat no muxt error
sesa514652 11:1dec05b7d1c1 130 buttonBack.rise(queue.event(&buttonBack_isr));
sesa514652 11:1dec05b7d1c1 131 buttonLeft.rise(queue.event(&buttonLeft_isr));
sesa514652 11:1dec05b7d1c1 132 buttonRight.rise(queue.event(&buttonRight_isr));
sesa514652 5:9b2c976ca318 133 //first need to initialise display
sesa514652 5:9b2c976ca318 134 lcd.init();
sesa514652 8:770d168713cc 135
sesa514652 12:ceea378d5691 136 // Button A is connected between the pin and 3.3 V, we therefore need to turn on the internal pull-down resister
sesa514652 8:770d168713cc 137 buttonA.mode(PullDown);
sesa514652 10:42e70b596099 138 // Button B is connected between the pin and 3.3 V, we therefore need to turn on the internal pull-down resister
sesa514652 10:42e70b596099 139 buttonB.mode(PullDown);
sesa514652 10:42e70b596099 140 // Button X is connected between the pin and 3.3 V, we therefore need to turn on the internal pull-down resister
sesa514652 10:42e70b596099 141 buttonX.mode(PullDown);
sesa514652 10:42e70b596099 142 // Button Y is connected between the pin and 3.3 V, we therefore need to turn on the internal pull-down resister
sesa514652 10:42e70b596099 143 buttonY.mode(PullDown);
sesa514652 11:1dec05b7d1c1 144 // Button Start is connected between the pin and 3.3 V, we therefore need to turn on the internal pull-down resister
sesa514652 11:1dec05b7d1c1 145 buttonStart.mode(PullDown);
sesa514652 11:1dec05b7d1c1 146 // Button Back is connected between the pin and 3.3 V, we therefore need to turn on the internal pull-down resister
sesa514652 11:1dec05b7d1c1 147 buttonBack.mode(PullDown);
sesa514652 11:1dec05b7d1c1 148 // Button Left is connected between the pin and 3.3 V, we therefore need to turn on the internal pull-down resister
sesa514652 11:1dec05b7d1c1 149 buttonLeft.mode(PullDown);
sesa514652 11:1dec05b7d1c1 150 // Button Right is connected between the pin and 3.3 V, we therefore need to turn on the internal pull-down resister
sesa514652 11:1dec05b7d1c1 151 buttonRight.mode(PullDown);
sesa514652 8:770d168713cc 152
sesa514652 18:bb36d96142dd 153
sesa514652 8:770d168713cc 154
sesa514652 8:770d168713cc 155
sesa514652 5:9b2c976ca318 156
sesa514652 5:9b2c976ca318 157 //change set contrast in range 0.0 to 1.0
sesa514652 5:9b2c976ca318 158 //0.5 appears to be a good starting point
sesa514652 5:9b2c976ca318 159 lcd.setContrast(0.5);
sesa514652 5:9b2c976ca318 160
sesa514652 5:9b2c976ca318 161 //Buzzer.period(10.0f);
sesa514652 5:9b2c976ca318 162 //Buzzer.pulsewidth(1);
sesa514652 6:f7f30e0e3bed 163 //Test Struct after research 05/01/22
sesa514652 6:f7f30e0e3bed 164 struct ObjectDefine{
sesa514652 7:ce70a873aa70 165 int qwer;
sesa514652 6:f7f30e0e3bed 166 float Distance;
sesa514652 7:ce70a873aa70 167 char te;
sesa514652 7:ce70a873aa70 168 double dubs;
sesa514652 7:ce70a873aa70 169 string namestruct;
sesa514652 8:770d168713cc 170 // string ;
sesa514652 6:f7f30e0e3bed 171 };
sesa514652 7:ce70a873aa70 172 // Test Class 06/01/22
sesa514652 10:42e70b596099 173 class myClass{
sesa514652 7:ce70a873aa70 174 public:
sesa514652 7:ce70a873aa70 175 string nameclass ;
sesa514652 7:ce70a873aa70 176 double dubss;
sesa514652 7:ce70a873aa70 177 int inty;
sesa514652 7:ce70a873aa70 178 };
sesa514652 7:ce70a873aa70 179 myClass Class1;
sesa514652 7:ce70a873aa70 180 Class1.nameclass ="firstclass";
sesa514652 10:42e70b596099 181 ObjectDefine Object1;
sesa514652 10:42e70b596099 182 Object1.qwer = 12;
sesa514652 6:f7f30e0e3bed 183 Object1.Distance = 34;
sesa514652 7:ce70a873aa70 184 Object1.te = 'A';
sesa514652 7:ce70a873aa70 185 Object1.dubs = 23;
sesa514652 10:42e70b596099 186 Object1.namestruct = "name";
sesa514652 18:bb36d96142dd 187
sesa514652 0:1f799c7cce2b 188 while(1) {
sesa514652 22:82b01fdfc61f 189 // section to try to get POC of number comparitor without using the US for repeatablity// to get if statements correct possibly change to switch
sesa514652 25:9798017b837d 190 long Scan1[10];
sesa514652 22:82b01fdfc61f 191 int num2;
sesa514652 22:82b01fdfc61f 192 int num3;
sesa514652 22:82b01fdfc61f 193 int num4;
sesa514652 25:9798017b837d 194 Scan1[0] = sensor.distance();Buzzer.play(200,120);
sesa514652 25:9798017b837d 195 wait(2);
sesa514652 25:9798017b837d 196 Scan1[1] = sensor.distance();;Buzzer.play(200,120);
sesa514652 25:9798017b837d 197 wait(2);
sesa514652 25:9798017b837d 198 Scan1[2] = sensor.distance();;Buzzer.play(200,120);
sesa514652 25:9798017b837d 199 wait(2);
sesa514652 25:9798017b837d 200 Scan1[3] = sensor.distance();;Buzzer.play(200,120);
sesa514652 25:9798017b837d 201 wait(2);
sesa514652 25:9798017b837d 202 Scan1[4] = sensor.distance();;
sesa514652 25:9798017b837d 203 wait(2);
sesa514652 25:9798017b837d 204 Scan1[5] = sensor.distance();;
sesa514652 25:9798017b837d 205 wait(2);
sesa514652 25:9798017b837d 206 Scan1[6] = sensor.distance();;
sesa514652 25:9798017b837d 207 wait(2);
sesa514652 25:9798017b837d 208 Scan1[7]= sensor.distance();;
sesa514652 25:9798017b837d 209 wait(2);
sesa514652 25:9798017b837d 210 Scan1[8] = sensor.distance();;
sesa514652 25:9798017b837d 211 wait(2);
sesa514652 25:9798017b837d 212 Scan1[9]= sensor.distance();;
sesa514652 25:9798017b837d 213 // cout << "Test value collection";
sesa514652 25:9798017b837d 214 //Scan1Input();
sesa514652 25:9798017b837d 215 /*
sesa514652 24:a88c4941a25e 216 cout << Scan1[0];cout <<"/n";
sesa514652 24:a88c4941a25e 217 cout << Scan1[1];"/n";
sesa514652 24:a88c4941a25e 218 cout << Scan1[2];"/n";
sesa514652 24:a88c4941a25e 219 cout << Scan1[3];"/n";
sesa514652 24:a88c4941a25e 220 cout << Scan1[4];"/n";
sesa514652 24:a88c4941a25e 221 cout << Scan1[5];"/n";
sesa514652 24:a88c4941a25e 222 cout << Scan1[6];"/n";
sesa514652 24:a88c4941a25e 223 cout << Scan1[7];"/n";
sesa514652 24:a88c4941a25e 224 cout << Scan1[8];"/n";
sesa514652 24:a88c4941a25e 225 cout << Scan1[9];"/n";
sesa514652 25:9798017b837d 226 */
sesa514652 25:9798017b837d 227 // IF Statement to decide on shape to draw
sesa514652 25:9798017b837d 228 if (Scan1[0] > Scan1[1]){
sesa514652 25:9798017b837d 229 printf("01Higher\n%d %d",Scan1[0],Scan1[1]);
sesa514652 25:9798017b837d 230 }else if (Scan1[0] = Scan1[1]){
sesa514652 25:9798017b837d 231 printf("01Equal\n%d %d",Scan1[0],Scan1[1]);}
sesa514652 25:9798017b837d 232 else if (Scan1[0] < Scan1[1]){
sesa514652 25:9798017b837d 233 // cout <<'Lower';}
sesa514652 25:9798017b837d 234 printf("01Lower \n%d %d",Scan1[0],Scan1[1]);}
sesa514652 25:9798017b837d 235 if (Scan1[1] > Scan1[2]){
sesa514652 25:9798017b837d 236 printf("12Higher\n");
sesa514652 25:9798017b837d 237 }else if (Scan1[1] = Scan1[2]){
sesa514652 25:9798017b837d 238 printf("12Equal\n");}
sesa514652 25:9798017b837d 239 else if (Scan1[1] < Scan1[2]){
sesa514652 25:9798017b837d 240 // cout <<'Lower';}
sesa514652 25:9798017b837d 241 printf("12Lower \n");}
sesa514652 25:9798017b837d 242 if (Scan1[2] > Scan1[3]){
sesa514652 25:9798017b837d 243 printf("23Higher\n");
sesa514652 25:9798017b837d 244 }else if (Scan1[2] = Scan1[3]){
sesa514652 25:9798017b837d 245 printf("23Equal\n");}
sesa514652 25:9798017b837d 246 else if (Scan1[2] < Scan1[3]){
sesa514652 25:9798017b837d 247 // cout <<'Lower';}
sesa514652 25:9798017b837d 248 printf("23Lower \n");}
sesa514652 25:9798017b837d 249 if (Scan1[3] > Scan1[4]){
sesa514652 25:9798017b837d 250 printf("34Higher\n");
sesa514652 25:9798017b837d 251 }else if (Scan1[3] = Scan1[4]){
sesa514652 25:9798017b837d 252 printf("34Equal\n");}
sesa514652 25:9798017b837d 253 else if (Scan1[3] < Scan1[4]){
sesa514652 25:9798017b837d 254 // cout <<'Lower';}
sesa514652 25:9798017b837d 255 printf("34Lower \n");}
sesa514652 25:9798017b837d 256
sesa514652 25:9798017b837d 257 if (Scan1[4] > Scan1[5]){
sesa514652 25:9798017b837d 258 printf("45Higher\n");
sesa514652 25:9798017b837d 259 }else if (Scan1[4] = Scan1[5]){
sesa514652 25:9798017b837d 260 printf("Equal\n");}
sesa514652 25:9798017b837d 261 else if (Scan1[4] < Scan1[5]){
sesa514652 25:9798017b837d 262 // cout <<'Lower';}
sesa514652 25:9798017b837d 263 printf("Lower \n");}
sesa514652 25:9798017b837d 264 if (Scan1[5] > Scan1[6]){
sesa514652 25:9798017b837d 265 printf("Higher\n");
sesa514652 25:9798017b837d 266 }else if (Scan1[5] = Scan1[6]){
sesa514652 25:9798017b837d 267 printf("Equal\n");}
sesa514652 25:9798017b837d 268 else if (Scan1[5] < Scan1[6]){
sesa514652 25:9798017b837d 269 // cout <<'Lower';}
sesa514652 25:9798017b837d 270 printf("Lower \n");}
sesa514652 25:9798017b837d 271 if (Scan1[6] > Scan1[7]){
sesa514652 25:9798017b837d 272 printf("Higher\n");
sesa514652 25:9798017b837d 273 }else if (Scan1[6] = Scan1[7]){
sesa514652 25:9798017b837d 274 printf("Equal\n");}
sesa514652 25:9798017b837d 275 else if (Scan1[6] < Scan1[7]){
sesa514652 25:9798017b837d 276 // cout <<'Lower';}
sesa514652 25:9798017b837d 277 printf("Lower \n");}
sesa514652 25:9798017b837d 278 if (Scan1[7] > Scan1[8]){
sesa514652 25:9798017b837d 279 printf("Higher\n");
sesa514652 25:9798017b837d 280 }else if (Scan1[7] = Scan1[8]){
sesa514652 25:9798017b837d 281 printf("Equal\n");}
sesa514652 25:9798017b837d 282 else if (Scan1[7] < Scan1[8]){
sesa514652 25:9798017b837d 283 // cout <<'Lower';}
sesa514652 25:9798017b837d 284 printf("Lower \n");}
sesa514652 24:a88c4941a25e 285
sesa514652 24:a88c4941a25e 286
sesa514652 25:9798017b837d 287 printf("Distance 1 : %d cm\n", Scan1[0]);
sesa514652 25:9798017b837d 288 printf("Distance 2 : %d cm\n", Scan1[1]);
sesa514652 25:9798017b837d 289 printf("Distance 3 : %d cm\n", Scan1[2]);
sesa514652 25:9798017b837d 290 printf("Distance 4: %d cm\n", Scan1[3]);
sesa514652 25:9798017b837d 291 printf("Distance 5 : %d cm\n", Scan1[4]);
sesa514652 25:9798017b837d 292 printf("Distance 6 : %d cm\n", Scan1[5]);
sesa514652 25:9798017b837d 293 printf("Distance 7 : %d cm\n", Scan1[6]);
sesa514652 25:9798017b837d 294 printf("Distance 8 : %d cm\n", Scan1[7]);
sesa514652 25:9798017b837d 295 printf("Distance 9 : %d cm\n", Scan1[8]);
sesa514652 25:9798017b837d 296 printf("Distance 10 : %d cm\n", Scan1[9]);
sesa514652 25:9798017b837d 297
sesa514652 25:9798017b837d 298 printf("I always Get printed \n");
sesa514652 24:a88c4941a25e 299
sesa514652 24:a88c4941a25e 300 // cout << Scan1[2];
sesa514652 24:a88c4941a25e 301 // cout << Scan1[6];
sesa514652 25:9798017b837d 302
sesa514652 25:9798017b837d 303 printf("I Should Be printed always \n");
sesa514652 25:9798017b837d 304 /*
sesa514652 24:a88c4941a25e 305 if (Scan1[1] > Scan1[2]){
sesa514652 24:a88c4941a25e 306 cout <<'+';
sesa514652 24:a88c4941a25e 307 }else if (Scan1[1]=Scan1[2]){
sesa514652 24:a88c4941a25e 308 cout <<'=';}
sesa514652 24:a88c4941a25e 309 else {
sesa514652 24:a88c4941a25e 310 cout <<'-';}
sesa514652 24:a88c4941a25e 311 if (Scan1[2] > Scan1[3]){
sesa514652 24:a88c4941a25e 312 cout <<'+';
sesa514652 24:a88c4941a25e 313 }else if (Scan1[2]=Scan1[3]){
sesa514652 24:a88c4941a25e 314 cout <<'=';}
sesa514652 23:f72175fb49ed 315 else {
sesa514652 23:f72175fb49ed 316 cout <<'-';}
sesa514652 24:a88c4941a25e 317
sesa514652 24:a88c4941a25e 318 if (Scan1[3] > Scan1[4]){
sesa514652 24:a88c4941a25e 319 cout <<'+';
sesa514652 24:a88c4941a25e 320 }else if (Scan1[3]=Scan1[4]){
sesa514652 24:a88c4941a25e 321 cout <<'=';}
sesa514652 24:a88c4941a25e 322 else {
sesa514652 24:a88c4941a25e 323 cout <<'-';}
sesa514652 24:a88c4941a25e 324 if (Scan1[4] > Scan1[5]){
sesa514652 24:a88c4941a25e 325 cout <<'+';
sesa514652 24:a88c4941a25e 326 }else if (Scan1[4]=Scan1[5]){
sesa514652 24:a88c4941a25e 327 cout <<'=';}
sesa514652 24:a88c4941a25e 328 else {
sesa514652 24:a88c4941a25e 329 cout <<'-';}
sesa514652 24:a88c4941a25e 330 if (Scan1[5] > Scan1[6]){
sesa514652 24:a88c4941a25e 331 cout <<'+';
sesa514652 24:a88c4941a25e 332 }else if (Scan1[5]=Scan1[6]){
sesa514652 24:a88c4941a25e 333 cout <<'=';}
sesa514652 24:a88c4941a25e 334 else {
sesa514652 24:a88c4941a25e 335 cout <<'-';}
sesa514652 24:a88c4941a25e 336 if (Scan1[6] > Scan1[7]){
sesa514652 24:a88c4941a25e 337 cout <<'+';
sesa514652 24:a88c4941a25e 338 }else if (Scan1[6]=Scan1[7]){
sesa514652 24:a88c4941a25e 339 cout <<'=';}
sesa514652 24:a88c4941a25e 340 else {
sesa514652 24:a88c4941a25e 341 cout <<'-';}
sesa514652 24:a88c4941a25e 342 if (Scan1[7] > Scan1[8]){
sesa514652 24:a88c4941a25e 343 cout <<'+';
sesa514652 24:a88c4941a25e 344 }else if (Scan1[7]=Scan1[8]){
sesa514652 24:a88c4941a25e 345 cout <<'=';}
sesa514652 24:a88c4941a25e 346 else {
sesa514652 24:a88c4941a25e 347 cout <<'-';}
sesa514652 24:a88c4941a25e 348
sesa514652 24:a88c4941a25e 349 if (Scan1[8] > Scan1[9]){
sesa514652 24:a88c4941a25e 350 cout <<'+';
sesa514652 24:a88c4941a25e 351 }else if (Scan1[8]=Scan1[9]){
sesa514652 24:a88c4941a25e 352 cout <<'=';}
sesa514652 24:a88c4941a25e 353 else {
sesa514652 24:a88c4941a25e 354 cout <<'-';}
sesa514652 24:a88c4941a25e 355 if (Scan1[9] > Scan1[10]){
sesa514652 24:a88c4941a25e 356 cout <<'+';
sesa514652 24:a88c4941a25e 357 }else if (Scan1[9]=Scan1[10]){
sesa514652 24:a88c4941a25e 358 cout <<'=';}
sesa514652 24:a88c4941a25e 359 else {
sesa514652 24:a88c4941a25e 360 cout <<'-';}
sesa514652 24:a88c4941a25e 361 */
sesa514652 21:2e37f80e8b5b 362
sesa514652 22:82b01fdfc61f 363 /////////////////////////////////////////////////////////////////
sesa514652 20:4e1f2917a857 364 switch(PressA){
sesa514652 21:2e37f80e8b5b 365 default:
sesa514652 21:2e37f80e8b5b 366 lcd.clear();
sesa514652 21:2e37f80e8b5b 367 lcd.printString("Main Menu",0,0);
sesa514652 21:2e37f80e8b5b 368 lcd.drawLine(0,10,80,10,2);
sesa514652 21:2e37f80e8b5b 369
sesa514652 21:2e37f80e8b5b 370 lcd.printString("A to begin new Scan",0,2);
sesa514652 21:2e37f80e8b5b 371 lcd.printString("B to Display last object",0,3);
sesa514652 21:2e37f80e8b5b 372 lcd.refresh();
sesa514652 21:2e37f80e8b5b 373 wait_ms(50);
sesa514652 21:2e37f80e8b5b 374
sesa514652 21:2e37f80e8b5b 375 break;
sesa514652 22:82b01fdfc61f 376 //////////////////////////////////////////////////////////////////////////////////////////////////
sesa514652 21:2e37f80e8b5b 377 case 1:
sesa514652 21:2e37f80e8b5b 378 PressA =1;
sesa514652 21:2e37f80e8b5b 379 lcd.clear();
sesa514652 21:2e37f80e8b5b 380 long firstScan[10];
sesa514652 21:2e37f80e8b5b 381 lcd.printString("First Scan Left Right",0,0);
sesa514652 21:2e37f80e8b5b 382 lcd.refresh();
sesa514652 21:2e37f80e8b5b 383 for (int i = 0; i < 5; i++) {
sesa514652 21:2e37f80e8b5b 384 printf(" i is: %d cm",i);
sesa514652 21:2e37f80e8b5b 385 }
sesa514652 20:4e1f2917a857 386 wait_ms(50); // required to stop Black screen issue
sesa514652 20:4e1f2917a857 387 break;
sesa514652 22:82b01fdfc61f 388 ////////////////////////////////////////////////////////////////////////////
sesa514652 20:4e1f2917a857 389 case 2:
sesa514652 20:4e1f2917a857 390 PressA= 2;
sesa514652 22:82b01fdfc61f 391 long secondScan[10];
sesa514652 22:82b01fdfc61f 392
sesa514652 22:82b01fdfc61f 393 secondScan[5] = sensor.distance();
sesa514652 22:82b01fdfc61f 394 printf("Distance : %d cm", secondScan[5]);
sesa514652 22:82b01fdfc61f 395 lcd.clear();
sesa514652 22:82b01fdfc61f 396 lcd.printString("2nd Scan up down",0,0);
sesa514652 22:82b01fdfc61f 397 lcd.drawLine(0,10,80,10,2);
sesa514652 20:4e1f2917a857 398 break;
sesa514652 22:82b01fdfc61f 399
sesa514652 22:82b01fdfc61f 400 ////////////////////////////////////////////////////////////////////
sesa514652 20:4e1f2917a857 401 case 3:
sesa514652 20:4e1f2917a857 402 PressA= 3;
sesa514652 20:4e1f2917a857 403 lcd.clear();
sesa514652 20:4e1f2917a857 404 lcd.printString("Menu 3",0,0);
sesa514652 21:2e37f80e8b5b 405 long us = sensor.distance();
sesa514652 21:2e37f80e8b5b 406 printf("Distance : %d cm",us);
sesa514652 20:4e1f2917a857 407 lcd.refresh();
sesa514652 20:4e1f2917a857 408 wait_ms(50); //required to stop Black screen issue
sesa514652 20:4e1f2917a857 409 break;
sesa514652 20:4e1f2917a857 410 }
sesa514652 20:4e1f2917a857 411
sesa514652 20:4e1f2917a857 412 }
sesa514652 23:f72175fb49ed 413
sesa514652 20:4e1f2917a857 414 /*
sesa514652 11:1dec05b7d1c1 415 int button_counter;
sesa514652 10:42e70b596099 416 if (g_buttonA_flag){
sesa514652 11:1dec05b7d1c1 417 button_counter = button_counter +1;
sesa514652 11:1dec05b7d1c1 418 //case (test)
sesa514652 10:42e70b596099 419 g_buttonA_flag = 0; // if it has, clear the flag
sesa514652 10:42e70b596099 420
sesa514652 10:42e70b596099 421 // send message over serial port - can observe in CoolTerm etc.
sesa514652 11:1dec05b7d1c1 422 printf("Button A pressed %f\n", button_counter);
sesa514652 10:42e70b596099 423 }
sesa514652 10:42e70b596099 424 if (g_buttonB_flag){
sesa514652 10:42e70b596099 425 g_buttonB_flag = 0; // if it has, clear the flag
sesa514652 8:770d168713cc 426
sesa514652 10:42e70b596099 427 // send message over serial port - can observe in CoolTerm etc.
sesa514652 10:42e70b596099 428 printf("Button B pressed\n");
sesa514652 10:42e70b596099 429 }
sesa514652 10:42e70b596099 430 if (g_buttonX_flag){
sesa514652 10:42e70b596099 431 g_buttonX_flag = 0; // if it has, clear the flag
sesa514652 12:ceea378d5691 432 // swap direction when button has been pressed
sesa514652 12:ceea378d5691 433 // (could just use ! but want this to be explicit to aid understanding)
sesa514652 12:ceea378d5691 434 if (direction == UP) {
sesa514652 12:ceea378d5691 435 direction = DOWN;
sesa514652 12:ceea378d5691 436 }
sesa514652 12:ceea378d5691 437 else {
sesa514652 12:ceea378d5691 438 direction = UP;
sesa514652 12:ceea378d5691 439 }
sesa514652 10:42e70b596099 440
sesa514652 10:42e70b596099 441 // send message over serial port - can observe in CoolTerm etc.
sesa514652 10:42e70b596099 442 printf("Button X pressed\n");
sesa514652 10:42e70b596099 443 lcd.clear();
sesa514652 10:42e70b596099 444 lcd.printString("Button Pressed!",0,0);
sesa514652 10:42e70b596099 445 lcd.refresh();
sesa514652 11:1dec05b7d1c1 446 wait(1);
sesa514652 10:42e70b596099 447 }
sesa514652 10:42e70b596099 448 if (g_buttonY_flag){
sesa514652 10:42e70b596099 449 g_buttonY_flag = 0; // if it has, clear the flag
sesa514652 10:42e70b596099 450
sesa514652 10:42e70b596099 451 // send message over serial port - can observe in CoolTerm etc.
sesa514652 10:42e70b596099 452 printf("Button Y pressed\n");
sesa514652 10:42e70b596099 453 }
sesa514652 5:9b2c976ca318 454 Buzzer.play(200,120);
sesa514652 5:9b2c976ca318 455 wait_ms(5);
sesa514652 5:9b2c976ca318 456 Buzzer.play(200,120);
sesa514652 1:757728321abd 457 long distanced = sensor.distance();
sesa514652 1:757728321abd 458 if (distanced >= 400 || distanced <= 2)
sesa514652 5:9b2c976ca318 459 {
sesa514652 1:757728321abd 460 printf("Out of range");
sesa514652 5:9b2c976ca318 461 //Calling dummy function 05/01/22
sesa514652 4:167ce930c9d5 462 int answer = cube(2);
sesa514652 5:9b2c976ca318 463 printf("%f\n",answer);
sesa514652 1:757728321abd 464 wait(1.0);
sesa514652 5:9b2c976ca318 465 }
sesa514652 5:9b2c976ca318 466 else
sesa514652 5:9b2c976ca318 467 {
sesa514652 5:9b2c976ca318 468 printf("Distance : %d cm",distanced);
sesa514652 5:9b2c976ca318 469 wait(1.0); // 1 sec
sesa514652 1:757728321abd 470 }
sesa514652 5:9b2c976ca318 471 lcd.drawCircle(WIDTH/2,HEIGHT/2,distanced,FILL_BLACK);
sesa514652 5:9b2c976ca318 472 //lcd.refresh must be used to update the lcd Display
sesa514652 5:9b2c976ca318 473 lcd.refresh();
sesa514652 5:9b2c976ca318 474 wait(5.0);
sesa514652 5:9b2c976ca318 475 //these are default settings so not strictly needed
sesa514652 0:1f799c7cce2b 476 lcd.normalMode(); // normal colour mode
sesa514652 5:9b2c976ca318 477 lcd.setBrightness(0.5); // put LED backlight on 50%
sesa514652 0:1f799c7cce2b 478 lcd.clear();
sesa514652 0:1f799c7cce2b 479 lcd.printString("Hello, World!",0,0);
sesa514652 0:1f799c7cce2b 480 Vector2D coord = joystick.get_coord();
sesa514652 0:1f799c7cce2b 481 lcd.refresh();
sesa514652 0:1f799c7cce2b 482 printf("Coord = %f,%f\n",coord.x,coord.y);
sesa514652 0:1f799c7cce2b 483 char buffer[14];
sesa514652 0:1f799c7cce2b 484 Vector2D mapped_coord = joystick.get_mapped_coord();
sesa514652 0:1f799c7cce2b 485 printf("Mapped coord = %f,%f\n",mapped_coord.x,mapped_coord.y);
sesa514652 0:1f799c7cce2b 486
sesa514652 5:9b2c976ca318 487 int length = sprintf(buffer,"T = %2f",coord.x);
sesa514652 5:9b2c976ca318 488 //it is important the format specifier ensures the length will fit in the buffer
sesa514652 0:1f799c7cce2b 489 if (length <= 14) // if string will fit on display (assuming printing at x=0)
sesa514652 5:9b2c976ca318 490 lcd.printString(buffer,0,1); // display on screen
sesa514652 0:1f799c7cce2b 491 lcd.refresh();
sesa514652 5:9b2c976ca318 492 lcd.clear();
sesa514652 5:9b2c976ca318 493 //times by 50 to try get the point moving across screen
sesa514652 0:1f799c7cce2b 494 float x50 = mapped_coord.x*5;
sesa514652 0:1f799c7cce2b 495 float y50 = mapped_coord.y*8;
sesa514652 5:9b2c976ca318 496 //to see what the values are
sesa514652 5:9b2c976ca318 497 printf(" *50 = %f,%f\n",x50,y50);
sesa514652 5:9b2c976ca318 498 //example of how to draw circles
sesa514652 1:757728321abd 499 lcd.printChar('o',WIDTH/2,HEIGHT/2);
sesa514652 5:9b2c976ca318 500 lcd.refresh();
sesa514652 0:1f799c7cce2b 501 float mag = joystick.get_mag();
sesa514652 0:1f799c7cce2b 502 float angle = joystick.get_angle();
sesa514652 0:1f799c7cce2b 503 printf("Mag = %f Angle = %f\n",mag,angle);
sesa514652 0:1f799c7cce2b 504 Direction d = joystick.get_direction();
sesa514652 0:1f799c7cce2b 505 printf("Direction = %i\n",d);
sesa514652 0:1f799c7cce2b 506 if (joystick.button_pressed() ) {
sesa514652 0:1f799c7cce2b 507 printf("Button Pressed\n");
sesa514652 9:cdd7d9a123f9 508 wait(5);
sesa514652 0:1f799c7cce2b 509 }
sesa514652 8:770d168713cc 510
sesa514652 8:770d168713cc 511 }
sesa514652 16:2646c1c4e62e 512 }
sesa514652 20:4e1f2917a857 513 */
sesa514652 23:f72175fb49ed 514 }
sesa514652 18:bb36d96142dd 515
sesa514652 18:bb36d96142dd 516 int buttonCountA(){
sesa514652 18:bb36d96142dd 517 PressA++;
sesa514652 18:bb36d96142dd 518 if (PressA>3){
sesa514652 18:bb36d96142dd 519 PressA= 0;
sesa514652 18:bb36d96142dd 520 }
sesa514652 18:bb36d96142dd 521 return PressA;
sesa514652 18:bb36d96142dd 522 }
sesa514652 18:bb36d96142dd 523 int buttonCountB(){
sesa514652 18:bb36d96142dd 524 PressB++;
sesa514652 18:bb36d96142dd 525 if (PressB>3){
sesa514652 18:bb36d96142dd 526 PressB= 0;
sesa514652 18:bb36d96142dd 527 }
sesa514652 18:bb36d96142dd 528 return PressB;
sesa514652 18:bb36d96142dd 529 }
sesa514652 15:234321e80678 530
sesa514652 12:ceea378d5691 531 //Button A event-triggered interrupt
sesa514652 10:42e70b596099 532 void buttonA_isr()
sesa514652 10:42e70b596099 533 {
sesa514652 12:ceea378d5691 534
sesa514652 18:bb36d96142dd 535 long distanced = sensor.distance();
sesa514652 18:bb36d96142dd 536 buttonCountA();
sesa514652 18:bb36d96142dd 537
sesa514652 16:2646c1c4e62e 538
sesa514652 12:ceea378d5691 539
sesa514652 12:ceea378d5691 540 g_buttonA_flag = 1; // set flag in ISR
sesa514652 12:ceea378d5691 541
sesa514652 18:bb36d96142dd 542 printf("press count = %i\n",PressA);
sesa514652 12:ceea378d5691 543
sesa514652 12:ceea378d5691 544 // lcd.clear();
sesa514652 15:234321e80678 545 //lcd.printString("Button A Pressed",0,0);
sesa514652 12:ceea378d5691 546
sesa514652 15:234321e80678 547 // lcd.refresh(); // set flag in ISR
sesa514652 12:ceea378d5691 548 }
sesa514652 12:ceea378d5691 549
sesa514652 11:1dec05b7d1c1 550
sesa514652 10:42e70b596099 551 //Button B event-triggered interrupt
sesa514652 10:42e70b596099 552 void buttonB_isr()
sesa514652 10:42e70b596099 553 {
sesa514652 18:bb36d96142dd 554 buttonCountB();
sesa514652 10:42e70b596099 555 g_buttonB_flag = 1; // set flag in ISR
sesa514652 11:1dec05b7d1c1 556 lcd.clear();
sesa514652 11:1dec05b7d1c1 557 lcd.printString("Button B Pressed",0,0);
sesa514652 11:1dec05b7d1c1 558 lcd.refresh(); // set flag in ISR
sesa514652 18:bb36d96142dd 559 printf("press count = %i\n",PressB);
sesa514652 10:42e70b596099 560 }
sesa514652 10:42e70b596099 561 //Button X event-triggered interrupt
sesa514652 10:42e70b596099 562 void buttonX_isr()
sesa514652 10:42e70b596099 563 {
sesa514652 10:42e70b596099 564 g_buttonX_flag = 1; // set flag in ISR
sesa514652 11:1dec05b7d1c1 565 lcd.clear();
sesa514652 11:1dec05b7d1c1 566 lcd.printString("Button X Pressed",0,0);
sesa514652 11:1dec05b7d1c1 567 lcd.refresh(); // set flag in ISR
sesa514652 10:42e70b596099 568 }
sesa514652 10:42e70b596099 569 //Button Y event-triggered interrupt
sesa514652 10:42e70b596099 570 void buttonY_isr()
sesa514652 10:42e70b596099 571 {
sesa514652 10:42e70b596099 572 g_buttonY_flag = 1; // set flag in ISR
sesa514652 11:1dec05b7d1c1 573 lcd.clear();
sesa514652 11:1dec05b7d1c1 574 lcd.printString("Button Y Pressed",0,0);
sesa514652 11:1dec05b7d1c1 575 lcd.refresh(); // set flag in ISR
sesa514652 10:42e70b596099 576 }
sesa514652 11:1dec05b7d1c1 577 //Button Start event-triggered interrupt
sesa514652 11:1dec05b7d1c1 578 void buttonStart_isr()
sesa514652 11:1dec05b7d1c1 579 {
sesa514652 11:1dec05b7d1c1 580 g_buttonStart_flag = 1; // set flag in ISR
sesa514652 11:1dec05b7d1c1 581 lcd.clear();
sesa514652 11:1dec05b7d1c1 582 lcd.printString("Button Start Pressed",0,0);
sesa514652 11:1dec05b7d1c1 583 lcd.refresh(); // set flag in ISR
sesa514652 11:1dec05b7d1c1 584 }
sesa514652 11:1dec05b7d1c1 585 //Button Back event-triggered interrupt
sesa514652 11:1dec05b7d1c1 586 void buttonBack_isr()
sesa514652 11:1dec05b7d1c1 587 {
sesa514652 11:1dec05b7d1c1 588 g_buttonBack_flag = 1; // set flag in ISR
sesa514652 11:1dec05b7d1c1 589 lcd.clear();
sesa514652 11:1dec05b7d1c1 590 lcd.printString("Button Back Pressed",0,0);
sesa514652 11:1dec05b7d1c1 591 lcd.refresh(); // set flag in ISR
sesa514652 11:1dec05b7d1c1 592 }
sesa514652 11:1dec05b7d1c1 593 //Button Left event-triggered interrupt
sesa514652 11:1dec05b7d1c1 594 void buttonLeft_isr()
sesa514652 11:1dec05b7d1c1 595 {
sesa514652 11:1dec05b7d1c1 596 g_buttonLeft_flag = 1; // set flag in ISR
sesa514652 11:1dec05b7d1c1 597 lcd.clear();
sesa514652 11:1dec05b7d1c1 598 lcd.printString("Button Left Pressed",0,0);
sesa514652 11:1dec05b7d1c1 599 lcd.refresh(); // set flag in ISR
sesa514652 11:1dec05b7d1c1 600 }
sesa514652 11:1dec05b7d1c1 601 //Button Right event-triggered interrupt
sesa514652 11:1dec05b7d1c1 602 void buttonRight_isr()
sesa514652 11:1dec05b7d1c1 603 {
sesa514652 11:1dec05b7d1c1 604 g_buttonRight_flag = 1; // set flag in ISR
sesa514652 11:1dec05b7d1c1 605 lcd.clear();
sesa514652 11:1dec05b7d1c1 606 lcd.printString("Button Right Pressed",0,0);
sesa514652 11:1dec05b7d1c1 607 lcd.refresh(); // set flag in ISR
sesa514652 11:1dec05b7d1c1 608 }