Coursework

Committer:
sesa514652
Date:
Thu Jan 13 19:18:40 2022 +0000
Revision:
14:2eddfd5fc1ce
Parent:
13:034ffa96643d
Commit Moving back to revision were de-bounce is issue but other functions work

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 12:ceea378d5691 7 // FSM Menu
sesa514652 12:ceea378d5691 8 // defines directions as 0/1. Note UPPERCASE
sesa514652 12:ceea378d5691 9 #define UP 0
sesa514652 12:ceea378d5691 10 #define DOWN 1
sesa514652 12:ceea378d5691 11 // set inital state
sesa514652 12:ceea378d5691 12 volatile int state = 0;
sesa514652 12:ceea378d5691 13 // set initial direction
sesa514652 12:ceea378d5691 14 int direction = UP;
sesa514652 12:ceea378d5691 15 // array of states in the FSM, each element is the output of the counter
sesa514652 12:ceea378d5691 16 // set the output in binary to make it easier, 0 is LED on, 1 is LED off
sesa514652 12:ceea378d5691 17 string fsm[4] = {"buttonA_isr","buttonB_isr","buttonAsss_isr","buttonA_isr"};
sesa514652 12:ceea378d5691 18 volatile int Press;
sesa514652 10:42e70b596099 19
sesa514652 5:9b2c976ca318 20 // y x button
sesa514652 0:1f799c7cce2b 21 Joystick joystick(PTB10,PTB11,PTC16);
sesa514652 0:1f799c7cce2b 22 HCSR04 sensor(D14, D15);
sesa514652 3:6ecb75a2675c 23 Piezo Buzzer(PTC10);
sesa514652 8:770d168713cc 24 //Bringing in buttons
sesa514652 14:2eddfd5fc1ce 25 InterruptIn buttonA(PTB9);
sesa514652 8:770d168713cc 26 InterruptIn buttonB(PTD0);
sesa514652 8:770d168713cc 27 InterruptIn buttonX(PTC17);
sesa514652 8:770d168713cc 28 InterruptIn buttonY(PTC12);
sesa514652 11:1dec05b7d1c1 29 InterruptIn buttonStart(PTC5);
sesa514652 11:1dec05b7d1c1 30 InterruptIn buttonBack(PTB19);
sesa514652 11:1dec05b7d1c1 31 InterruptIn buttonLeft(PTB18);
sesa514652 11:1dec05b7d1c1 32 InterruptIn buttonRight(PTB3);
sesa514652 0:1f799c7cce2b 33
sesa514652 11:1dec05b7d1c1 34 // create an event queue
sesa514652 11:1dec05b7d1c1 35 EventQueue queue; // events are needed to get arround the printf issue
sesa514652 5:9b2c976ca318 36 //rows,cols
sesa514652 0:1f799c7cce2b 37 int sprite[8][5] = {
sesa514652 0:1f799c7cce2b 38 { 0,0,1,0,0 },
sesa514652 0:1f799c7cce2b 39 { 0,1,1,1,0 },
sesa514652 0:1f799c7cce2b 40 { 0,0,1,0,0 },
sesa514652 0:1f799c7cce2b 41 { 0,1,1,1,0 },
sesa514652 0:1f799c7cce2b 42 { 1,1,1,1,1 },
sesa514652 0:1f799c7cce2b 43 { 1,1,1,1,1 },
sesa514652 0:1f799c7cce2b 44 { 1,1,0,1,1 },
sesa514652 0:1f799c7cce2b 45 { 1,1,0,1,1 },
sesa514652 5:9b2c976ca318 46 };
sesa514652 11:1dec05b7d1c1 47 void init_K64F(); // Start K64fBoard
sesa514652 11:1dec05b7d1c1 48
sesa514652 11:1dec05b7d1c1 49 void buttonA_isr(); // Button A interrupt service routine
sesa514652 11:1dec05b7d1c1 50 void buttonB_isr(); // Button B interrupt service routine
sesa514652 11:1dec05b7d1c1 51 void buttonX_isr(); // Button X interrupt service routine
sesa514652 11:1dec05b7d1c1 52 void buttonY_isr(); // Button Y interrupt service routine
sesa514652 13:034ffa96643d 53 int Presscount();
sesa514652 11:1dec05b7d1c1 54 void buttonStart_isr(); // Button Start interrupt service routine
sesa514652 11:1dec05b7d1c1 55 void buttonBack_isr(); // Button Back interrupt service routine
sesa514652 11:1dec05b7d1c1 56 void buttonLeft_isr(); // Button Left interrupt service routine
sesa514652 11:1dec05b7d1c1 57 void buttonRight_isr(); // Button Right interrupt service routine
sesa514652 11:1dec05b7d1c1 58 volatile int g_buttonA_flag = 0; // Global Flag
sesa514652 11:1dec05b7d1c1 59 volatile int g_buttonB_flag = 0; // Global Flag
sesa514652 11:1dec05b7d1c1 60 volatile int g_buttonX_flag = 0; // Global Flag
sesa514652 11:1dec05b7d1c1 61 volatile int g_buttonY_flag = 0; // Global Flag
sesa514652 11:1dec05b7d1c1 62 volatile int g_buttonStart_flag = 0; // Global Flag
sesa514652 11:1dec05b7d1c1 63 volatile int g_buttonBack_flag = 0; // Global Flag
sesa514652 11:1dec05b7d1c1 64 volatile int g_buttonLeft_flag = 0; // Global Flag
sesa514652 11:1dec05b7d1c1 65 volatile int g_buttonRight_flag = 0; // Global Flag
sesa514652 11:1dec05b7d1c1 66
sesa514652 13:034ffa96643d 67
sesa514652 13:034ffa96643d 68
sesa514652 13:034ffa96643d 69
sesa514652 13:034ffa96643d 70
sesa514652 11:1dec05b7d1c1 71 //volatile int g_buttonA_counter = 0; // Global counter
sesa514652 8:770d168713cc 72 //Test function after research C++ lanuage 05/01/22
sesa514652 4:167ce930c9d5 73 int cube(int num){
sesa514652 11:1dec05b7d1c1 74 return num*num;
sesa514652 5:9b2c976ca318 75 };
sesa514652 10:42e70b596099 76 // Menu Items
sesa514652 10:42e70b596099 77 int page1;
sesa514652 10:42e70b596099 78 int page2;
sesa514652 10:42e70b596099 79 int page3;
sesa514652 10:42e70b596099 80 string Listitem1 = "Game"; // guess distance
sesa514652 10:42e70b596099 81 string Listitem2 = "Measure"; // measure distance of object
sesa514652 10:42e70b596099 82 string Listitem3 = "Detect"; // alarm when object is dectected
sesa514652 5:9b2c976ca318 83 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
sesa514652 9:cdd7d9a123f9 84 /* Test of the interup an operating the buzzer this kills the board
sesa514652 9:cdd7d9a123f9 85 void buzzme(){
sesa514652 9:cdd7d9a123f9 86 Buzzer.play(200,120);
sesa514652 9:cdd7d9a123f9 87 wait_ms(5);
sesa514652 9:cdd7d9a123f9 88 Buzzer.play(200,120);;
sesa514652 9:cdd7d9a123f9 89 }
sesa514652 9:cdd7d9a123f9 90 */
sesa514652 11:1dec05b7d1c1 91 void printme(){
sesa514652 9:cdd7d9a123f9 92
sesa514652 11:1dec05b7d1c1 93 volatile double x ;
sesa514652 11:1dec05b7d1c1 94 x = 1;
sesa514652 10:42e70b596099 95 printf("%f\n",x);
sesa514652 11:1dec05b7d1c1 96 // return 0;
sesa514652 9:cdd7d9a123f9 97 }
sesa514652 10:42e70b596099 98
sesa514652 10:42e70b596099 99
sesa514652 10:42e70b596099 100 //void returnme(){
sesa514652 10:42e70b596099 101 //int num;
sesa514652 10:42e70b596099 102 // return num*num;
sesa514652 10:42e70b596099 103 // };
sesa514652 0:1f799c7cce2b 104 int main() {
sesa514652 5:9b2c976ca318 105 //initialise Joystic
sesa514652 5:9b2c976ca318 106 joystick.init();
sesa514652 13:034ffa96643d 107 Timer t;
sesa514652 13:034ffa96643d 108 t.start();
sesa514652 14:2eddfd5fc1ce 109
sesa514652 11:1dec05b7d1c1 110 // create a thread that'll run the event queue's dispatch function
sesa514652 11:1dec05b7d1c1 111 Thread eventThread;
sesa514652 11:1dec05b7d1c1 112 eventThread.start(callback(&queue, &EventQueue::dispatch_forever));
sesa514652 11:1dec05b7d1c1 113
sesa514652 14:2eddfd5fc1ce 114 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 115 buttonB.rise(queue.event(&buttonB_isr));
sesa514652 11:1dec05b7d1c1 116 buttonX.rise(queue.event(&buttonX_isr));
sesa514652 11:1dec05b7d1c1 117 buttonY.rise(queue.event(&buttonY_isr));
sesa514652 11:1dec05b7d1c1 118 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 119 buttonBack.rise(queue.event(&buttonBack_isr));
sesa514652 11:1dec05b7d1c1 120 buttonLeft.rise(queue.event(&buttonLeft_isr));
sesa514652 11:1dec05b7d1c1 121 buttonRight.rise(queue.event(&buttonRight_isr));
sesa514652 5:9b2c976ca318 122 //first need to initialise display
sesa514652 5:9b2c976ca318 123 lcd.init();
sesa514652 8:770d168713cc 124
sesa514652 12:ceea378d5691 125 // Button A is connected between the pin and 3.3 V, we therefore need to turn on the internal pull-down resister
sesa514652 14:2eddfd5fc1ce 126 buttonA.mode(PullDown);
sesa514652 10:42e70b596099 127 // 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 128 buttonB.mode(PullDown);
sesa514652 10:42e70b596099 129 // 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 130 buttonX.mode(PullDown);
sesa514652 10:42e70b596099 131 // 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 132 buttonY.mode(PullDown);
sesa514652 11:1dec05b7d1c1 133 // 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 134 buttonStart.mode(PullDown);
sesa514652 11:1dec05b7d1c1 135 // 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 136 buttonBack.mode(PullDown);
sesa514652 11:1dec05b7d1c1 137 // 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 138 buttonLeft.mode(PullDown);
sesa514652 11:1dec05b7d1c1 139 // 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 140 buttonRight.mode(PullDown);
sesa514652 8:770d168713cc 141
sesa514652 8:770d168713cc 142 // It will return 0 by default and a 1 when pressed i.e. cause a rising edge
sesa514652 11:1dec05b7d1c1 143 // buttonA.rise(&buttonA_isr);
sesa514652 10:42e70b596099 144 // It will return 0 by default and a 1 when pressed i.e. cause a rising edge
sesa514652 11:1dec05b7d1c1 145 // buttonB.rise(&buttonB_isr);
sesa514652 10:42e70b596099 146 // It will return 0 by default and a 1 when pressed i.e. cause a rising edge
sesa514652 11:1dec05b7d1c1 147 //buttonX.rise(&buttonX_isr);
sesa514652 10:42e70b596099 148 // It will return 0 by default and a 1 when pressed i.e. cause a rising edge
sesa514652 11:1dec05b7d1c1 149 // buttonY.rise(&buttonY_isr);
sesa514652 8:770d168713cc 150
sesa514652 8:770d168713cc 151
sesa514652 5:9b2c976ca318 152
sesa514652 5:9b2c976ca318 153 //change set contrast in range 0.0 to 1.0
sesa514652 5:9b2c976ca318 154 //0.5 appears to be a good starting point
sesa514652 5:9b2c976ca318 155 lcd.setContrast(0.5);
sesa514652 5:9b2c976ca318 156
sesa514652 5:9b2c976ca318 157 //Buzzer.period(10.0f);
sesa514652 5:9b2c976ca318 158 //Buzzer.pulsewidth(1);
sesa514652 6:f7f30e0e3bed 159 //Test Struct after research 05/01/22
sesa514652 6:f7f30e0e3bed 160 struct ObjectDefine{
sesa514652 7:ce70a873aa70 161 int qwer;
sesa514652 6:f7f30e0e3bed 162 float Distance;
sesa514652 7:ce70a873aa70 163 char te;
sesa514652 7:ce70a873aa70 164 double dubs;
sesa514652 7:ce70a873aa70 165 string namestruct;
sesa514652 8:770d168713cc 166 // string ;
sesa514652 6:f7f30e0e3bed 167 };
sesa514652 7:ce70a873aa70 168 // Test Class 06/01/22
sesa514652 10:42e70b596099 169 class myClass{
sesa514652 7:ce70a873aa70 170 public:
sesa514652 7:ce70a873aa70 171 string nameclass ;
sesa514652 7:ce70a873aa70 172 double dubss;
sesa514652 7:ce70a873aa70 173 int inty;
sesa514652 7:ce70a873aa70 174 };
sesa514652 7:ce70a873aa70 175 myClass Class1;
sesa514652 7:ce70a873aa70 176 Class1.nameclass ="firstclass";
sesa514652 10:42e70b596099 177 ObjectDefine Object1;
sesa514652 10:42e70b596099 178 Object1.qwer = 12;
sesa514652 6:f7f30e0e3bed 179 Object1.Distance = 34;
sesa514652 7:ce70a873aa70 180 Object1.te = 'A';
sesa514652 7:ce70a873aa70 181 Object1.dubs = 23;
sesa514652 10:42e70b596099 182 Object1.namestruct = "name";
sesa514652 9:cdd7d9a123f9 183 //buttonA.rise(&buzzme); Omitted due to error
sesa514652 10:42e70b596099 184 //buttonA.rise(&printme,10);
sesa514652 10:42e70b596099 185 //buttonA.rise(&returnme);
sesa514652 0:1f799c7cce2b 186 while(1) {
sesa514652 5:9b2c976ca318 187 //Tune(Buzzer,So6,8);
sesa514652 5:9b2c976ca318 188 //Stop_tunes(Buzzer);
sesa514652 8:770d168713cc 189 //Section of code to try to get the button press to be recorded
sesa514652 9:cdd7d9a123f9 190 //bool button = buttonA.read();
sesa514652 10:42e70b596099 191 //printf("%f\n", g_buttonA_flag );
sesa514652 10:42e70b596099 192 //Recording button presses
sesa514652 12:ceea378d5691 193
sesa514652 12:ceea378d5691 194 // swap direction when button has been pressed
sesa514652 12:ceea378d5691 195 // (could just use ! but want this to be explicit to aid understanding)
sesa514652 12:ceea378d5691 196 if (direction == UP) {
sesa514652 12:ceea378d5691 197 direction = DOWN;
sesa514652 12:ceea378d5691 198 }
sesa514652 12:ceea378d5691 199 else {
sesa514652 12:ceea378d5691 200 direction = UP;
sesa514652 12:ceea378d5691 201 string output;
sesa514652 12:ceea378d5691 202 output = fsm[state];
sesa514652 12:ceea378d5691 203
sesa514652 12:ceea378d5691 204
sesa514652 11:1dec05b7d1c1 205 int result;
sesa514652 11:1dec05b7d1c1 206 result = cube(5);
sesa514652 11:1dec05b7d1c1 207 printf("Button A pressed %f\n", cube(5));
sesa514652 11:1dec05b7d1c1 208 int button_counter;
sesa514652 10:42e70b596099 209 if (g_buttonA_flag){
sesa514652 11:1dec05b7d1c1 210 button_counter = button_counter +1;
sesa514652 11:1dec05b7d1c1 211 //case (test)
sesa514652 10:42e70b596099 212 g_buttonA_flag = 0; // if it has, clear the flag
sesa514652 10:42e70b596099 213
sesa514652 10:42e70b596099 214 // send message over serial port - can observe in CoolTerm etc.
sesa514652 11:1dec05b7d1c1 215 printf("Button A pressed %f\n", button_counter);
sesa514652 10:42e70b596099 216 }
sesa514652 10:42e70b596099 217 if (g_buttonB_flag){
sesa514652 10:42e70b596099 218 g_buttonB_flag = 0; // if it has, clear the flag
sesa514652 8:770d168713cc 219
sesa514652 10:42e70b596099 220 // send message over serial port - can observe in CoolTerm etc.
sesa514652 10:42e70b596099 221 printf("Button B pressed\n");
sesa514652 10:42e70b596099 222 }
sesa514652 10:42e70b596099 223 if (g_buttonX_flag){
sesa514652 10:42e70b596099 224 g_buttonX_flag = 0; // if it has, clear the flag
sesa514652 12:ceea378d5691 225 // swap direction when button has been pressed
sesa514652 12:ceea378d5691 226 // (could just use ! but want this to be explicit to aid understanding)
sesa514652 12:ceea378d5691 227 if (direction == UP) {
sesa514652 12:ceea378d5691 228 direction = DOWN;
sesa514652 12:ceea378d5691 229 }
sesa514652 12:ceea378d5691 230 else {
sesa514652 12:ceea378d5691 231 direction = UP;
sesa514652 12:ceea378d5691 232 }
sesa514652 10:42e70b596099 233
sesa514652 10:42e70b596099 234 // send message over serial port - can observe in CoolTerm etc.
sesa514652 10:42e70b596099 235 printf("Button X pressed\n");
sesa514652 10:42e70b596099 236 lcd.clear();
sesa514652 10:42e70b596099 237 lcd.printString("Button Pressed!",0,0);
sesa514652 10:42e70b596099 238 lcd.refresh();
sesa514652 11:1dec05b7d1c1 239 wait(1);
sesa514652 10:42e70b596099 240 }
sesa514652 10:42e70b596099 241 if (g_buttonY_flag){
sesa514652 10:42e70b596099 242 g_buttonY_flag = 0; // if it has, clear the flag
sesa514652 10:42e70b596099 243
sesa514652 10:42e70b596099 244 // send message over serial port - can observe in CoolTerm etc.
sesa514652 10:42e70b596099 245 printf("Button Y pressed\n");
sesa514652 10:42e70b596099 246 }
sesa514652 5:9b2c976ca318 247 Buzzer.play(200,120);
sesa514652 5:9b2c976ca318 248 wait_ms(5);
sesa514652 5:9b2c976ca318 249 Buzzer.play(200,120);
sesa514652 1:757728321abd 250 long distanced = sensor.distance();
sesa514652 1:757728321abd 251 if (distanced >= 400 || distanced <= 2)
sesa514652 5:9b2c976ca318 252 {
sesa514652 1:757728321abd 253 printf("Out of range");
sesa514652 5:9b2c976ca318 254 //Calling dummy function 05/01/22
sesa514652 4:167ce930c9d5 255 int answer = cube(2);
sesa514652 5:9b2c976ca318 256 printf("%f\n",answer);
sesa514652 1:757728321abd 257 wait(1.0);
sesa514652 5:9b2c976ca318 258 }
sesa514652 5:9b2c976ca318 259 else
sesa514652 5:9b2c976ca318 260 {
sesa514652 5:9b2c976ca318 261 printf("Distance : %d cm",distanced);
sesa514652 5:9b2c976ca318 262 wait(1.0); // 1 sec
sesa514652 1:757728321abd 263 }
sesa514652 5:9b2c976ca318 264 lcd.drawCircle(WIDTH/2,HEIGHT/2,distanced,FILL_BLACK);
sesa514652 5:9b2c976ca318 265 //lcd.refresh must be used to update the lcd Display
sesa514652 5:9b2c976ca318 266 lcd.refresh();
sesa514652 5:9b2c976ca318 267 wait(5.0);
sesa514652 5:9b2c976ca318 268 //these are default settings so not strictly needed
sesa514652 0:1f799c7cce2b 269 lcd.normalMode(); // normal colour mode
sesa514652 5:9b2c976ca318 270 lcd.setBrightness(0.5); // put LED backlight on 50%
sesa514652 0:1f799c7cce2b 271 lcd.clear();
sesa514652 0:1f799c7cce2b 272 lcd.printString("Hello, World!",0,0);
sesa514652 0:1f799c7cce2b 273 Vector2D coord = joystick.get_coord();
sesa514652 0:1f799c7cce2b 274 lcd.refresh();
sesa514652 0:1f799c7cce2b 275 printf("Coord = %f,%f\n",coord.x,coord.y);
sesa514652 0:1f799c7cce2b 276 char buffer[14];
sesa514652 0:1f799c7cce2b 277 Vector2D mapped_coord = joystick.get_mapped_coord();
sesa514652 0:1f799c7cce2b 278 printf("Mapped coord = %f,%f\n",mapped_coord.x,mapped_coord.y);
sesa514652 0:1f799c7cce2b 279
sesa514652 5:9b2c976ca318 280 int length = sprintf(buffer,"T = %2f",coord.x);
sesa514652 5:9b2c976ca318 281 //it is important the format specifier ensures the length will fit in the buffer
sesa514652 0:1f799c7cce2b 282 if (length <= 14) // if string will fit on display (assuming printing at x=0)
sesa514652 5:9b2c976ca318 283 lcd.printString(buffer,0,1); // display on screen
sesa514652 0:1f799c7cce2b 284 lcd.refresh();
sesa514652 5:9b2c976ca318 285 lcd.clear();
sesa514652 5:9b2c976ca318 286 //times by 50 to try get the point moving across screen
sesa514652 0:1f799c7cce2b 287 float x50 = mapped_coord.x*5;
sesa514652 0:1f799c7cce2b 288 float y50 = mapped_coord.y*8;
sesa514652 5:9b2c976ca318 289 //to see what the values are
sesa514652 5:9b2c976ca318 290 printf(" *50 = %f,%f\n",x50,y50);
sesa514652 5:9b2c976ca318 291 //example of how to draw circles
sesa514652 1:757728321abd 292 lcd.printChar('o',WIDTH/2,HEIGHT/2);
sesa514652 5:9b2c976ca318 293 lcd.refresh();
sesa514652 0:1f799c7cce2b 294 float mag = joystick.get_mag();
sesa514652 0:1f799c7cce2b 295 float angle = joystick.get_angle();
sesa514652 0:1f799c7cce2b 296 printf("Mag = %f Angle = %f\n",mag,angle);
sesa514652 0:1f799c7cce2b 297 Direction d = joystick.get_direction();
sesa514652 0:1f799c7cce2b 298 printf("Direction = %i\n",d);
sesa514652 0:1f799c7cce2b 299 if (joystick.button_pressed() ) {
sesa514652 0:1f799c7cce2b 300 printf("Button Pressed\n");
sesa514652 9:cdd7d9a123f9 301 wait(5);
sesa514652 0:1f799c7cce2b 302 }
sesa514652 8:770d168713cc 303
sesa514652 8:770d168713cc 304 }
sesa514652 8:770d168713cc 305 }
sesa514652 12:ceea378d5691 306 }
sesa514652 13:034ffa96643d 307 int Presscount(){
sesa514652 14:2eddfd5fc1ce 308 int currentTimer;
sesa514652 14:2eddfd5fc1ce 309 int lastTimer;
sesa514652 14:2eddfd5fc1ce 310 if(currentTimer
sesa514652 13:034ffa96643d 311
sesa514652 13:034ffa96643d 312
sesa514652 13:034ffa96643d 313 Press++;
sesa514652 13:034ffa96643d 314 return Press;
sesa514652 13:034ffa96643d 315 }
sesa514652 12:ceea378d5691 316 //Button A event-triggered interrupt
sesa514652 10:42e70b596099 317 void buttonA_isr()
sesa514652 10:42e70b596099 318 {
sesa514652 13:034ffa96643d 319
sesa514652 13:034ffa96643d 320 Presscount();
sesa514652 13:034ffa96643d 321
sesa514652 13:034ffa96643d 322
sesa514652 13:034ffa96643d 323 if(Press>3){
sesa514652 13:034ffa96643d 324 Press = 0;
sesa514652 13:034ffa96643d 325 }
sesa514652 13:034ffa96643d 326
sesa514652 12:ceea378d5691 327 g_buttonA_flag = 1; // set flag in ISR
sesa514652 12:ceea378d5691 328
sesa514652 12:ceea378d5691 329 printf("press count = %i\n",Press);
sesa514652 12:ceea378d5691 330
sesa514652 12:ceea378d5691 331 // lcd.clear();
sesa514652 11:1dec05b7d1c1 332 lcd.printString("Button A Pressed",0,0);
sesa514652 12:ceea378d5691 333
sesa514652 11:1dec05b7d1c1 334 lcd.refresh(); // set flag in ISR
sesa514652 12:ceea378d5691 335 }
sesa514652 12:ceea378d5691 336
sesa514652 11:1dec05b7d1c1 337
sesa514652 10:42e70b596099 338 //Button B event-triggered interrupt
sesa514652 10:42e70b596099 339 void buttonB_isr()
sesa514652 10:42e70b596099 340 {
sesa514652 10:42e70b596099 341 g_buttonB_flag = 1; // set flag in ISR
sesa514652 11:1dec05b7d1c1 342 lcd.clear();
sesa514652 11:1dec05b7d1c1 343 lcd.printString("Button B Pressed",0,0);
sesa514652 11:1dec05b7d1c1 344 lcd.refresh(); // set flag in ISR
sesa514652 10:42e70b596099 345 }
sesa514652 10:42e70b596099 346 //Button X event-triggered interrupt
sesa514652 10:42e70b596099 347 void buttonX_isr()
sesa514652 10:42e70b596099 348 {
sesa514652 10:42e70b596099 349 g_buttonX_flag = 1; // set flag in ISR
sesa514652 11:1dec05b7d1c1 350 lcd.clear();
sesa514652 11:1dec05b7d1c1 351 lcd.printString("Button X Pressed",0,0);
sesa514652 11:1dec05b7d1c1 352 lcd.refresh(); // set flag in ISR
sesa514652 10:42e70b596099 353 }
sesa514652 10:42e70b596099 354 //Button Y event-triggered interrupt
sesa514652 10:42e70b596099 355 void buttonY_isr()
sesa514652 10:42e70b596099 356 {
sesa514652 10:42e70b596099 357 g_buttonY_flag = 1; // set flag in ISR
sesa514652 11:1dec05b7d1c1 358 lcd.clear();
sesa514652 11:1dec05b7d1c1 359 lcd.printString("Button Y Pressed",0,0);
sesa514652 11:1dec05b7d1c1 360 lcd.refresh(); // set flag in ISR
sesa514652 10:42e70b596099 361 }
sesa514652 11:1dec05b7d1c1 362 //Button Start event-triggered interrupt
sesa514652 11:1dec05b7d1c1 363 void buttonStart_isr()
sesa514652 11:1dec05b7d1c1 364 {
sesa514652 11:1dec05b7d1c1 365 g_buttonStart_flag = 1; // set flag in ISR
sesa514652 11:1dec05b7d1c1 366 lcd.clear();
sesa514652 11:1dec05b7d1c1 367 lcd.printString("Button Start Pressed",0,0);
sesa514652 11:1dec05b7d1c1 368 lcd.refresh(); // set flag in ISR
sesa514652 11:1dec05b7d1c1 369 }
sesa514652 11:1dec05b7d1c1 370 //Button Back event-triggered interrupt
sesa514652 11:1dec05b7d1c1 371 void buttonBack_isr()
sesa514652 11:1dec05b7d1c1 372 {
sesa514652 11:1dec05b7d1c1 373 g_buttonBack_flag = 1; // set flag in ISR
sesa514652 11:1dec05b7d1c1 374 lcd.clear();
sesa514652 11:1dec05b7d1c1 375 lcd.printString("Button Back Pressed",0,0);
sesa514652 11:1dec05b7d1c1 376 lcd.refresh(); // set flag in ISR
sesa514652 11:1dec05b7d1c1 377 }
sesa514652 11:1dec05b7d1c1 378 //Button Left event-triggered interrupt
sesa514652 11:1dec05b7d1c1 379 void buttonLeft_isr()
sesa514652 11:1dec05b7d1c1 380 {
sesa514652 11:1dec05b7d1c1 381 g_buttonLeft_flag = 1; // set flag in ISR
sesa514652 11:1dec05b7d1c1 382 lcd.clear();
sesa514652 11:1dec05b7d1c1 383 lcd.printString("Button Left Pressed",0,0);
sesa514652 11:1dec05b7d1c1 384 lcd.refresh(); // set flag in ISR
sesa514652 11:1dec05b7d1c1 385 }
sesa514652 11:1dec05b7d1c1 386 //Button Right event-triggered interrupt
sesa514652 11:1dec05b7d1c1 387 void buttonRight_isr()
sesa514652 11:1dec05b7d1c1 388 {
sesa514652 11:1dec05b7d1c1 389 g_buttonRight_flag = 1; // set flag in ISR
sesa514652 11:1dec05b7d1c1 390 lcd.clear();
sesa514652 11:1dec05b7d1c1 391 lcd.printString("Button Right Pressed",0,0);
sesa514652 11:1dec05b7d1c1 392 lcd.refresh(); // set flag in ISR
sesa514652 11:1dec05b7d1c1 393 }