![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Coursework
main.cpp
- Committer:
- sesa514652
- Date:
- 2022-01-28
- Revision:
- 29:1aef0ecf9840
- Parent:
- 28:aab0aa846cf6
- Child:
- 30:9d39318ef584
File content as of revision 29:1aef0ecf9840:
/** *.....Kory Hamill *.....IOT Smart Electronics Coursework *.....Acknowlegements Libary Makers *.....18689004 */ /** * Section of code to bring in the #includes */ #include "mbed.h" #include "Joystick.h" #include "N5110.h" #include "hcsr04.h" #include "Piezo.h" #include "string" #include "array" #include <iostream> /** *...This Section of the code is used to bring in volatile Varible's, These can be wrote to throught the code. *...The Varibles are used to track button press's on the board. */ volatile int g_ButtonAPress; volatile int g_ButtonBPress; volatile int g_buttonA_flag = 0; volatile int g_buttonB_flag = 0; volatile int g_buttonX_flag = 0; volatile int g_buttonY_flag = 0; volatile int g_buttonStart_flag = 0; volatile int g_buttonBack_flag = 0; volatile int g_buttonLeft_flag = 0; volatile int g_buttonRight_flag = 0; /** *... Section of code to assign names to IO pins on the K64f */ InterruptIn buttonA(PTB9); InterruptIn buttonB(PTD0); InterruptIn buttonX(PTC17); InterruptIn buttonY(PTC12); InterruptIn buttonStart(PTC5); InterruptIn buttonBack(PTB19); InterruptIn buttonLeft(PTB18); InterruptIn buttonRight(PTB3); Joystick joystick(PTB10,PTB11,PTC16); HCSR04 sensor(D14, D15); Piezo Buzzer(PTC10); N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); /** *...For used with the LCD Screen. rows,cols */ int sprite[8][5] = { { 0,0,1,0,0 }, { 0,1,1,1,0 }, { 0,0,1,0,0 }, { 0,1,1,1,0 }, { 1,1,1,1,1 }, { 1,1,1,1,1 }, { 1,1,0,1,1 }, { 1,1,0,1,1 }, }; /** *...Section for starting the board and seeting up interrupt routines *...Along with other functions to be called later */ void init_K64F(); // Start K64fBoard void buttonA_isr(); // Button A interrupt service routine void buttonB_isr(); // Button B interrupt service routine void buttonX_isr(); // Button X interrupt service routine void buttonY_isr(); // Button Y interrupt service routine void buttonStart_isr(); // Button Start interrupt service routine void buttonBack_isr(); // Button Back interrupt service routine void buttonLeft_isr(); // Button Left interrupt service routine void buttonRight_isr(); // Button Right interrupt service routine int buttonCountA(); int buttonCountB(); EventQueue queue; /**< Required to get around issues with printing onto LCD and the Printf */ /** Code which was never used * *.. was for initial learning of C++ //volatile int g_buttonA_counter = 0; // Global counter //Test function after research C++ lanuage 05/01/22 int cube(int num){ return num*num; }; // Menu Items int page1; int page2; int page3; string Listitem1 = "Game"; // string Listitem2 = "Measure"; // string Listitem3 = "Detect"; // / Test of the interup an operating the buzzer this kills the board void buzzme(){ Buzzer.play(200,120); wait_ms(5); Buzzer.play(200,120);; } int Scan1[5]; int Scan2[5]; int Scan1Input(){; Scan1[0] = sensor.distance(); Scan1[1] = sensor.distance();; Scan1[2] = sensor.distance();; Scan1[3] = sensor.distance();; Scan1[4] = sensor.distance();; return Scan1[0,1,2,3,4];} //void returnme(){ //int num; // return num*num; // }; */ int main() { /** *.. Intialise joystick and Lcd */ joystick.init(); lcd.init(); lcd.setContrast(0.5); /** *.. Issues were found with the LCd and printf while using interrupts, to get around *.. this issue these queue's to the event thread were added. */ Thread eventThread; eventThread.start(callback(&queue, &EventQueue::dispatch_forever)); buttonA.rise(queue.event(&buttonA_isr)); buttonB.rise(queue.event(&buttonB_isr)); buttonX.rise(queue.event(&buttonX_isr)); buttonY.rise(queue.event(&buttonY_isr)); buttonStart.rise(queue.event(&buttonStart_isr)); buttonBack.rise(queue.event(&buttonBack_isr)); buttonLeft.rise(queue.event(&buttonLeft_isr)); buttonRight.rise(queue.event(&buttonRight_isr)); /** *..Buttons were connected to IO pins which required a pull down resistor to be active. */ buttonA.mode(PullDown); buttonB.mode(PullDown); buttonX.mode(PullDown); buttonY.mode(PullDown); buttonStart.mode(PullDown); buttonBack.mode(PullDown); buttonLeft.mode(PullDown); buttonRight.mode(PullDown); /** *.. Section of code not used in main program. * Buzzer.period(10.0f); //Buzzer.pulsewidth(1); Test Struct after research 05/01/22 struct ObjectDefine{ int qwer; float Distance; char te; double dubs; string namestruct; // string ; }; // Test Class 06/01/22 class myClass{ public: string nameclass ; double dubss; int inty; }; myClass Class1; Class1.nameclass ="firstclass"; ObjectDefine Object1; Object1.qwer = 12; Object1.Distance = 34; Object1.te = 'A'; Object1.dubs = 23; Object1.namestruct = "name"; */ while(1) { /** *..Bring in 5 arrays of 5 for each of the 5 required scans. *..array Ref starts at 0, */ int Scan1[5]; int Scan2[5]; int Scan3[5]; int Scan4[5]; int Scan5[5]; char Decide[5]; char Decide2[5]; char Decide3[5]; char Decide4[5]; char Decide5[5]; /** *.. It was found Cout was not working as expected. cout << "Test value collection"; Scan1Input(); cout << Scan1[0];cout <<"/n"; cout << Scan1[1];"/n"; cout << Scan1[2];"/n"; cout << Scan1[3];"/n"; cout << Scan1[4];"/n"; cout << Scan1[5];"/n"; cout << Scan1[6];"/n"; cout << Scan1[7];"/n"; cout << Scan1[8];"/n"; cout << Scan1[9];"/n"; */ printf("press count = %i\n",g_ButtonAPress); printf("Scan1 1 : %d cm\n", Scan1[0]); printf("Scan1 2 : %d cm\n", Scan1[1]); printf("Scan1 3 : %d cm\n", Scan1[2]); printf("Scan1 4 : %d cm\n", Scan1[3]); printf("Scan1 5 : %d cm\n", Scan1[4]); printf("Scan2 1 : %d cm\n", Scan2[0]); printf("Scan2 2 : %d cm\n", Scan2[1]); printf("Scan2 3 : %d cm\n", Scan2[2]); printf("Scan2 4 : %d cm\n", Scan2[3]); printf("Scan2 5 : %d cm\n", Scan2[4]); printf("Scan3 1 : %d cm\n", Scan3[0]); printf("Scan3 2 : %d cm\n", Scan3[1]); printf("Scan3 3 : %d cm\n", Scan3[2]); printf("Scan3 4 : %d cm\n", Scan3[3]); printf("Scan3 5 : %d cm\n", Scan3[4]); printf("Scan4 1 : %d cm\n", Scan4[0]); printf("Scan4 2 : %d cm\n", Scan4[1]); printf("Scan4 3 : %d cm\n", Scan4[2]); printf("Scan4 4 : %d cm\n", Scan4[3]); printf("Scan4 5 : %d cm\n", Scan4[4]); printf("Scan5 1 : %d cm\n", Scan5[0]); printf("Scan5 2 : %d cm\n", Scan5[1]); printf("Scan5 3 : %d cm\n", Scan5[2]); printf("Scan5 4 : %d cm\n", Scan5[3]); printf("Scan5 5 : %d cm\n", Scan5[4]); printf("I always Get printed \n"); // cout << Scan1[2]; // cout << Scan1[6]; printf("I Should Be printed always \n"); /** *..Code section on Comparing data Cout was causing issue * if (Scan1[1] > Scan1[2]){ cout <<'+'; }else if (Scan1[1]=Scan1[2]){ cout <<'=';} else { cout <<'-';} if (Scan1[2] > Scan1[3]){ cout <<'+'; }else if (Scan1[2]=Scan1[3]){ cout <<'=';} else { cout <<'-';} if (Scan1[3] > Scan1[4]){ cout <<'+'; }else if (Scan1[3]=Scan1[4]){ cout <<'=';} else { cout <<'-';} if (Scan1[4] > Scan1[5]){ cout <<'+'; }else if (Scan1[4]=Scan1[5]){ cout <<'=';} else { cout <<'-';} if (Scan1[5] > Scan1[6]){ cout <<'+'; }else if (Scan1[5]=Scan1[6]){ cout <<'=';} else { cout <<'-';} if (Scan1[6] > Scan1[7]){ cout <<'+'; }else if (Scan1[6]=Scan1[7]){ cout <<'=';} else { cout <<'-';} if (Scan1[7] > Scan1[8]){ cout <<'+'; }else if (Scan1[7]=Scan1[8]){ cout <<'=';} else { cout <<'-';} if (Scan1[8] > Scan1[9]){ cout <<'+'; }else if (Scan1[8]=Scan1[9]){ cout <<'=';} else { cout <<'-';} if (Scan1[9] > Scan1[10]){ cout <<'+'; }else if (Scan1[9]=Scan1[10]){ cout <<'=';} else { cout <<'-';} */ ///////////////////////////////////////////////////////////////////////////////////////////////////// /** *..Initial state when starting the Board. */ switch(g_ButtonAPress){ default: lcd.clear(); lcd.printString("Main Menu",0,0); lcd.drawLine(0,10,80,10,2); lcd.printString("A to begin new Scan",0,2); lcd.printString("Scan Starts move pad",0,3); lcd.printString("B to display Shape",0,4); lcd.printString("Kory 18689004",0,5); /** IF Statement to decide on shape to draw *.. This section of code compares the each array element with the one proceding it and makes a logical decision if higher lower or equal. */ if (Scan1[0] > Scan1[1]) { printf("+"); Decide[0]= 'x'; printf( "chosen 1 %c\n",Decide[0]); } else if (Scan1[0] = Scan1[1]) { printf("="); Decide[0]='='; printf( "chosen2 %c\n",Decide[0]); } else if (Scan1[0] < Scan1[1]) { printf("-"); Decide[0]='-'; printf( "chosen3 %c\n",Decide[0]); } if (Scan1[1] > Scan1[2]) { printf("+"); Decide[1]= 'x'; printf( "chosen 1 %c\n",Decide[1]); } else if (Scan1[1] = Scan1[2]) { printf("="); Decide[1]='='; printf( "chosen2 %c\n",Decide[1]); } else if (Scan1[1] < Scan1[2]) { printf("-"); Decide[1]='-'; printf( "chosen3 %c\n",Decide[1]); } if (Scan1[2] > Scan1[3]) { printf("+"); Decide[2]= 'x'; printf( "chosen 1 %c\n",Decide[2]); } else if (Scan1[2] = Scan1[3]) { printf("="); Decide[2]='='; printf( "chosen2 %c\n",Decide[2]); } else if (Scan1[2] < Scan1[3]) { printf("-"); Decide[2]='-'; printf( "chosen3 %c\n",Decide[2]); } if (Scan1[3] > Scan1[4]) { printf("+"); Decide[3]= 'x'; printf( "chosen 1 %c\n",Decide[3]); } else if (Scan1[3] = Scan1[4]) { printf("="); Decide[3]='='; printf( "chosen2 %c\n",Decide[3]); } else if (Scan1[3] < Scan1[4]) { printf("-"); Decide[3]='-'; printf( "chosen3 %c\n",Decide[3]); } if (Scan2[0] > Scan2[1]) { printf("+"); Decide2[0]= 'x'; printf( "chosen 1 %c\n",Decide2[0]); } else if (Scan2[0] = Scan2[1]) { printf("="); Decide2[0]='='; printf( "chosen2 %c\n",Decide2[0]); } else if (Scan2[0] < Scan2[1]) { printf("-"); Decide2[0]='-'; printf( "chosen3 %c\n",Decide2[0]); } if (Scan2[1] > Scan2[2]) { printf("+"); Decide2[1]= 'x'; printf( "chosen 1 %c\n",Decide2[1]); } else if (Scan2[1] = Scan2[2]) { printf("="); Decide2[1]='='; printf( "chosen2 %c\n",Decide2[1]); } else if (Scan2[1] < Scan2[2]) { printf("-"); Decide2[1]='-'; printf( "chosen3 %c\n",Decide2[1]); } if (Scan2[2] > Scan2[3]) { printf("+"); Decide2[2]= 'x'; printf( "chosen 1 %c\n",Decide2[2]); } else if (Scan2[2] = Scan2[3]) { printf("="); Decide2[2]='='; printf( "chosen2 %c\n",Decide2[2]); } else if (Scan2[2] < Scan2[3]) { printf("-"); Decide2[2]='-'; printf( "chosen3 %c\n",Decide2[2]); } if (Scan2[3] > Scan2[4]) { printf("+"); Decide2[3]= 'x'; printf( "chosen 1 %c\n",Decide2[3]); } else if (Scan2[3] = Scan2[4]) { printf("="); Decide2[3]='='; printf( "chosen2 %c\n",Decide2[3]); } else if (Scan2[3] < Scan2[4]) { printf("-"); Decide2[3]='-'; printf( "chosen3 %c\n",Decide2[3]); } if (Scan3[0] > Scan3[1]) { printf("+"); Decide3[0]= 'x'; printf( "chosen 1 %c\n",Decide3[0]); } else if (Scan3[0] = Scan3[1]) { printf("="); Decide3[0]='='; printf( "chosen2 %c\n",Decide3[0]); } else if (Scan3[0] < Scan3[1]) { printf("-"); Decide3[0]='-'; printf( "chosen3 %c\n",Decide3[0]); } if (Scan3[1] > Scan3[2]) { printf("+"); Decide3[1]= 'x'; printf( "chosen 1 %c\n",Decide3[1]); } else if (Scan3[1] = Scan3[2]) { printf("="); Decide3[1]='='; printf( "chosen2 %c\n",Decide3[1]); } else if (Scan3[1] < Scan3[2]) { printf("-"); Decide3[1]='-'; printf( "chosen3 %c\n",Decide3[1]); } if (Scan3[2] > Scan3[3]) { printf("+"); Decide3[2]= 'x'; printf( "chosen 1 %c\n",Decide3[2]); } else if (Scan3[2] = Scan3[3]) { printf("="); Decide3[2]='='; printf( "chosen2 %c\n",Decide3[2]); } else if (Scan3[2] < Scan3[3]) { printf("-"); Decide3[2]='-'; printf( "chosen3 %c\n",Decide3[2]); } if (Scan3[3] > Scan3[4]) { printf("+"); Decide3[3]= 'x'; printf( "chosen 1 %c\n",Decide3[3]); } else if (Scan3[3] = Scan3[4]) { printf("="); Decide3[3]='='; printf( "chosen2 %c\n",Decide3[3]); } else if (Scan3[3] < Scan3[4]) { printf("-"); Decide3[3]='-'; printf( "chosen3 %c\n",Decide3[3]); } if (Scan4[0] > Scan4[1]) { printf("+"); Decide4[0]= 'x'; printf( "chosen 1 %c\n",Decide4[0]); } else if (Scan4[0] = Scan4[1]) { printf("="); Decide4[0]='='; printf( "chosen2 %c\n",Decide4[0]); } else if (Scan4[0] < Scan4[1]) { printf("-"); Decide4[0]='-'; printf( "chosen3 %c\n",Decide4[0]); } if (Scan4[1] > Scan4[2]) { printf("+"); Decide4[1]= 'x'; printf( "chosen 1 %c\n",Decide4[1]); } else if (Scan4[1] = Scan4[2]) { printf("="); Decide4[1]='='; printf( "chosen2 %c\n",Decide4[1]); } else if (Scan4[1] < Scan4[2]) { printf("-"); Decide4[1]='-'; printf( "chosen3 %c\n",Decide4[1]); } if (Scan4[2] > Scan4[3]) { printf("+"); Decide4[2]= 'x'; printf( "chosen 1 %c\n",Decide4[2]); } else if (Scan4[2] = Scan4[3]) { printf("="); Decide4[2]='='; printf( "chosen2 %c\n",Decide4[2]); } else if (Scan4[2] < Scan4[3]) { printf("-"); Decide4[2]='-'; printf( "chosen3 %c\n",Decide4[2]); } if (Scan4[3] > Scan4[4]) { printf("+"); Decide4[3]= 'x'; printf( "chosen 1 %c\n",Decide4[3]); } else if (Scan4[3] = Scan4[4]) { printf("="); Decide4[3]='='; printf( "chosen2 %c\n",Decide4[3]); } else if (Scan4[3] < Scan4[4]) { printf("-"); Decide4[3]='-'; printf( "chosen3 %c\n",Decide4[3]); } if (Scan5[0] > Scan5[1]) { printf("+"); Decide5[0]= 'x'; printf( "chosen 1 %c\n",Decide5[0]); } else if (Scan5[0] = Scan5[1]) { printf("="); Decide5[0]='='; printf( "chosen2 %c\n",Decide5[0]); } else if (Scan5[0] < Scan5[1]) { printf("-"); Decide5[0]='-'; printf( "chosen3 %c\n",Decide5[0]); } if (Scan5[1] > Scan5[2]) { printf("+"); Decide5[1]= 'x'; printf( "chosen 1 %c\n",Decide5[1]); } else if (Scan5[1] = Scan5[2]) { printf("="); Decide5[1]='='; printf( "chosen2 %c\n",Decide5[1]); } else if (Scan5[1] < Scan5[2]) { printf("-"); Decide5[1]='-'; printf( "chosen3 %c\n",Decide5[1]); } if (Scan5[2] > Scan5[3]) { printf("+"); Decide5[2]= 'x'; printf( "chosen 1 %c\n",Decide5[2]); } else if (Scan5[2] = Scan5[3]) { printf("="); Decide5[2]='='; printf( "chosen2 %c\n",Decide5[2]); } else if (Scan5[2] < Scan5[3]) { printf("-"); Decide5[2]='-'; printf( "chosen3 %c\n",Decide5[2]); } if (Scan5[3] > Scan5[4]) { printf("+"); Decide5[3]= 'x'; printf( "chosen 1 %c\n",Decide5[3]); } else if (Scan5[3] = Scan5[4]) { printf("="); Decide5[3]='='; printf( "chosen2 %c\n",Decide5[3]); } else if (Scan5[3] < Scan5[4]) { printf("-"); Decide5[3]='-'; printf( "chosen3 %c\n",Decide5[3]); } lcd.refresh(); wait_ms(50); break; ////////////////////////////////////////////////////////////////////////////////////////////////// /** *.. When Button A is pressed this section of code is ran to collect data points of the object. *..Scanning takes marks the LCD with locationof points which data has been collected for. */ case 1: g_ButtonAPress =1; lcd.clear(); lcd.printString("First Scan",0,0); lcd.refresh(); Buzzer.play(300,120); lcd.printString("X",0,1); lcd.refresh(); Scan1[0] = sensor.distance(); wait(2); Buzzer.play(200,120); lcd.printString("X",0,2);lcd.refresh(); Scan1[1] = sensor.distance(); wait(2); Buzzer.play(200,120); lcd.printString("X",0,3);lcd.refresh(); Scan1[2] = sensor.distance(); wait(2); Buzzer.play(200,120); lcd.printString("X",0,4);lcd.refresh(); Scan1[3] = sensor.distance();; wait(2); Buzzer.play(200,120); lcd.printString("X",0,5);lcd.refresh(); Scan1[4] = sensor.distance();; wait(2); lcd.printString("Scan 1 Done",0,0); lcd.refresh(); wait(2); // required to stop Black screen issue} lcd.clear();lcd.refresh(); lcd.printString("Second Scan",0,0); 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(); Buzzer.play(300,120); lcd.printString("X",15,1); lcd.refresh(); Scan2[0] = sensor.distance(); wait(2); Buzzer.play(200,120); lcd.printString("X",15,2);lcd.refresh(); Scan2[1] = sensor.distance(); wait(2); Buzzer.play(200,120); lcd.printString("X",15,3);lcd.refresh(); Scan2[2] = sensor.distance(); wait(2); Buzzer.play(200,120); lcd.printString("X",15,4);lcd.refresh(); Scan2[3] = sensor.distance(); wait(2); Buzzer.play(200,120); lcd.printString("X",15,5);lcd.refresh(); Scan2[4] = sensor.distance(); lcd.printString("Scan 2 Done",0,0); lcd.refresh(); wait(2); // required to stop Black screen issue} lcd.clear();lcd.refresh(); lcd.printString("Third Scan",0,0); 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(); 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(); Buzzer.play(300,120); lcd.printString("X",30,1); lcd.refresh(); Scan3[0] = sensor.distance(); wait(2); Buzzer.play(200,120); lcd.printString("X",30,2);lcd.refresh(); Scan3[1] = sensor.distance(); wait(2); Buzzer.play(200,120); lcd.printString("X",30,3);lcd.refresh(); Scan3[2] = sensor.distance(); wait(2); Buzzer.play(200,120); lcd.printString("X",30,4);lcd.refresh(); Scan3[3] = sensor.distance(); wait(2); Buzzer.play(200,120); lcd.printString("X",30,5);lcd.refresh(); Scan3[4] = sensor.distance(); lcd.printString("Scan 3 Done",0,0); lcd.refresh(); wait(2); // required to stop Black screen issue} lcd.printString("Fourth Scan",0,0); 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(); 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(); 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(); Buzzer.play(300,120); lcd.printString("X",45,1); lcd.refresh(); Scan4[0] = sensor.distance(); wait(2); Buzzer.play(200,120); lcd.printString("X",45,2);lcd.refresh(); Scan4[1] = sensor.distance(); wait(2); Buzzer.play(200,120); lcd.printString("X",45,3);lcd.refresh(); Scan4[2] = sensor.distance(); wait(2); Buzzer.play(200,120); lcd.printString("X",45,4);lcd.refresh(); Scan4[3] = sensor.distance(); wait(2); Buzzer.play(200,120); lcd.printString("X",45,5);lcd.refresh(); Scan4[4] = sensor.distance(); lcd.printString("Scan 4 Done",0,0); lcd.refresh(); wait(2); lcd.printString("Fifth Scan",0,0); 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(); 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(); 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(); 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(); Buzzer.play(300,120); lcd.printString("X",60,1); lcd.refresh(); Scan3[0] = sensor.distance(); wait(2); Buzzer.play(200,120); lcd.printString("X",60,2);lcd.refresh(); Scan3[1] = sensor.distance(); wait(2); Buzzer.play(200,120); lcd.printString("X",60,3);lcd.refresh(); Scan3[2] = sensor.distance(); wait(2); Buzzer.play(200,120); lcd.printString("X",60,4);lcd.refresh(); Scan3[3] = sensor.distance(); wait(2); Buzzer.play(200,120); lcd.printString("X",60,5);lcd.refresh(); Scan3[4] = sensor.distance(); lcd.printString("Scan 5 Done",0,0); lcd.refresh(); g_ButtonAPress=0; break; //////////////////////////////////////////////////////////////////////////// case 2: g_ButtonAPress= 2; long secondScan[10]; secondScan[5] = sensor.distance(); printf("Distance : %d cm", secondScan[5]); lcd.clear(); lcd.printString("2nd Scan up down",0,0); lcd.drawLine(0,10,80,10,2); break; //////////////////////////////////////////////////////////////////// case 3: g_ButtonAPress= 3; lcd.clear(); lcd.printString("Menu 3",0,0); long us = sensor.distance(); printf("Distance : %d cm",us); lcd.refresh(); wait_ms(50); //required to stop Black screen issue break; } } /* int button_counter; if (g_buttonA_flag){ button_counter = button_counter +1; //case (test) g_buttonA_flag = 0; // if it has, clear the flag // send message over serial port - can observe in CoolTerm etc. printf("Button A pressed %f\n", button_counter); } if (g_buttonB_flag){ g_buttonB_flag = 0; // if it has, clear the flag // send message over serial port - can observe in CoolTerm etc. printf("Button B pressed\n"); } if (g_buttonX_flag){ g_buttonX_flag = 0; // if it has, clear the flag // swap direction when button has been pressed // (could just use ! but want this to be explicit to aid understanding) if (direction == UP) { direction = DOWN; } else { direction = UP; } // send message over serial port - can observe in CoolTerm etc. printf("Button X pressed\n"); lcd.clear(); lcd.printString("Button Pressed!",0,0); lcd.refresh(); wait(1); } if (g_buttonY_flag){ g_buttonY_flag = 0; // if it has, clear the flag // send message over serial port - can observe in CoolTerm etc. printf("Button Y pressed\n"); } Buzzer.play(200,120); wait_ms(5); Buzzer.play(200,120); long distanced = sensor.distance(); if (distanced >= 400 || distanced <= 2) { printf("Out of range"); //Calling dummy function 05/01/22 int answer = cube(2); printf("%f\n",answer); wait(1.0); } else { printf("Distance : %d cm",distanced); wait(1.0); // 1 sec } lcd.drawCircle(WIDTH/2,HEIGHT/2,distanced,FILL_BLACK); //lcd.refresh must be used to update the lcd Display lcd.refresh(); wait(5.0); //these are default settings so not strictly needed lcd.normalMode(); // normal colour mode lcd.setBrightness(0.5); // put LED backlight on 50% lcd.clear(); lcd.printString("Hello, World!",0,0); Vector2D coord = joystick.get_coord(); lcd.refresh(); printf("Coord = %f,%f\n",coord.x,coord.y); char buffer[14]; Vector2D mapped_coord = joystick.get_mapped_coord(); printf("Mapped coord = %f,%f\n",mapped_coord.x,mapped_coord.y); int length = sprintf(buffer,"T = %2f",coord.x); //it is important the format specifier ensures the length will fit in the buffer if (length <= 14) // if string will fit on display (assuming printing at x=0) lcd.printString(buffer,0,1); // display on screen lcd.refresh(); lcd.clear(); //times by 50 to try get the point moving across screen float x50 = mapped_coord.x*5; float y50 = mapped_coord.y*8; //to see what the values are printf(" *50 = %f,%f\n",x50,y50); //example of how to draw circles lcd.printChar('o',WIDTH/2,HEIGHT/2); lcd.refresh(); float mag = joystick.get_mag(); float angle = joystick.get_angle(); printf("Mag = %f Angle = %f\n",mag,angle); Direction d = joystick.get_direction(); printf("Direction = %i\n",d); if (joystick.button_pressed() ) { printf("Button Pressed\n"); wait(5); } } } */ } int buttonCountA(){ g_ButtonAPress++; if (g_ButtonAPress>3){ g_ButtonAPress= 0; } return g_ButtonAPress; } int buttonCountB(){ g_ButtonBPress++; if (g_ButtonBPress>3){ g_ButtonBPress= 0; } return g_ButtonBPress; } //Button A event-triggered interrupt void buttonA_isr() { long distanced = sensor.distance(); buttonCountA(); g_buttonA_flag = 1; // set flag in ISR printf("press count = %i\n",g_ButtonAPress); // lcd.clear(); //lcd.printString("Button A Pressed",0,0); // lcd.refresh(); // set flag in ISR } //Button B event-triggered interrupt void buttonB_isr() { buttonCountB(); g_buttonB_flag = 1; // set flag in ISR lcd.clear(); lcd.printString("Button B Pressed",0,0); lcd.refresh(); // set flag in ISR printf("press count = %i\n",g_ButtonBPress); } //Button X event-triggered interrupt void buttonX_isr() { g_buttonX_flag = 1; // set flag in ISR lcd.clear(); lcd.printString("Button X Pressed",0,0); lcd.refresh(); // set flag in ISR } //Button Y event-triggered interrupt void buttonY_isr() { g_buttonY_flag = 1; // set flag in ISR lcd.clear(); lcd.printString("Button Y Pressed",0,0); lcd.refresh(); // set flag in ISR } //Button Start event-triggered interrupt void buttonStart_isr() { g_buttonStart_flag = 1; // set flag in ISR lcd.clear(); lcd.printString("Button Start Pressed",0,0); lcd.refresh(); // set flag in ISR } //Button Back event-triggered interrupt void buttonBack_isr() { g_buttonBack_flag = 1; // set flag in ISR lcd.clear(); lcd.printString("Button Back Pressed",0,0); lcd.refresh(); // set flag in ISR } //Button Left event-triggered interrupt void buttonLeft_isr() { g_buttonLeft_flag = 1; // set flag in ISR lcd.clear(); lcd.printString("Button Left Pressed",0,0); lcd.refresh(); // set flag in ISR } //Button Right event-triggered interrupt void buttonRight_isr() { g_buttonRight_flag = 1; // set flag in ISR lcd.clear(); lcd.printString("Button Right Pressed",0,0); lcd.refresh(); // set flag in ISR }