Coursework

Committer:
sesa514652
Date:
Wed Jan 26 21:12:31 2022 +0000
Revision:
28:aab0aa846cf6
Parent:
27:d48bf4e8f1a0
Child:
29:1aef0ecf9840
Tidy up of code comments included.

Who changed what in which revision?

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