ELEC2645 (2019/20) / Mbed 2 deprecated el18loc_final

Dependencies:   mbed

Committer:
lukeocarwright
Date:
Tue May 19 15:04:33 2020 +0000
Revision:
14:9cfe0041cc4e
Parent:
13:27300c533dd1
Child:
16:14c231624f3e
Actually make proper sound atlast. Checked Concert A against piano. included more preprocessor debug (SLOW TIME) for Debug if output check required w. printf

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lukeocarwright 8:f305ea78b2b1 1 #include "mbed.h"
lukeocarwright 8:f305ea78b2b1 2 #include "Menu.h"
lukeocarwright 8:f305ea78b2b1 3
lukeocarwright 8:f305ea78b2b1 4 //objects
lukeocarwright 8:f305ea78b2b1 5 Front front;
lukeocarwright 8:f305ea78b2b1 6
lukeocarwright 8:f305ea78b2b1 7 //constructor/destructor
lukeocarwright 8:f305ea78b2b1 8 Menu::Menu()
lukeocarwright 8:f305ea78b2b1 9 {
lukeocarwright 8:f305ea78b2b1 10 }
lukeocarwright 8:f305ea78b2b1 11 Menu::~Menu()
lukeocarwright 8:f305ea78b2b1 12 {
lukeocarwright 8:f305ea78b2b1 13 }
lukeocarwright 8:f305ea78b2b1 14
lukeocarwright 8:f305ea78b2b1 15 // PUBLIC methods---------------------------------------------------------------
lukeocarwright 8:f305ea78b2b1 16 void Menu::mainmenu(N5110 &lcd, Gamepad &pad) //main menu
lukeocarwright 8:f305ea78b2b1 17 {
lukeocarwright 14:9cfe0041cc4e 18
lukeocarwright 8:f305ea78b2b1 19 menusize=3;
lukeocarwright 8:f305ea78b2b1 20 g_selecty=10;
lukeocarwright 8:f305ea78b2b1 21 submenu=1; //initialises starting point
lukeocarwright 8:f305ea78b2b1 22 printmainmenu(lcd); //prints menu to display
lukeocarwright 8:f305ea78b2b1 23 int menuflag=1; //sets flag
lukeocarwright 8:f305ea78b2b1 24 while (menuflag==1) {
lukeocarwright 13:27300c533dd1 25 s=scroll(lcd, pad, submenu, menusize);
lukeocarwright 8:f305ea78b2b1 26 if (s==1) {
lukeocarwright 8:f305ea78b2b1 27 printmainmenu(lcd);
lukeocarwright 13:27300c533dd1 28 submenu++;
lukeocarwright 13:27300c533dd1 29 wait_ms(200);
lukeocarwright 13:27300c533dd1 30 }
lukeocarwright 13:27300c533dd1 31 if (s==-1) {
lukeocarwright 13:27300c533dd1 32 printmainmenu(lcd);
lukeocarwright 13:27300c533dd1 33 submenu--;
lukeocarwright 13:27300c533dd1 34 wait_ms(200);
lukeocarwright 8:f305ea78b2b1 35 }
lukeocarwright 8:f305ea78b2b1 36 if ( pad.A_pressed()) { //selects
lukeocarwright 8:f305ea78b2b1 37 // printf("A pressed\n");
lukeocarwright 8:f305ea78b2b1 38 printf("SubMenu %d selected\n", submenu);
lukeocarwright 8:f305ea78b2b1 39 wait_ms(200); //debounce
lukeocarwright 8:f305ea78b2b1 40 menuflag=0;
lukeocarwright 8:f305ea78b2b1 41 }
lukeocarwright 8:f305ea78b2b1 42 }
lukeocarwright 8:f305ea78b2b1 43 while (1) {
lukeocarwright 8:f305ea78b2b1 44 if (submenu==1) { //waveform submenu launch
lukeocarwright 13:27300c533dd1 45 subwaveforms(lcd, pad);
lukeocarwright 8:f305ea78b2b1 46 break;
lukeocarwright 8:f305ea78b2b1 47 }
lukeocarwright 8:f305ea78b2b1 48 if (submenu==2) { //instructions submenu launch
lukeocarwright 8:f305ea78b2b1 49 subinstructions(lcd,pad);
lukeocarwright 8:f305ea78b2b1 50 break;
lukeocarwright 8:f305ea78b2b1 51 }
lukeocarwright 8:f305ea78b2b1 52 if (submenu==3) { //credits subemnu launch
lukeocarwright 8:f305ea78b2b1 53 subcredits(lcd, pad);
lukeocarwright 8:f305ea78b2b1 54 break;
lukeocarwright 8:f305ea78b2b1 55 }
lukeocarwright 8:f305ea78b2b1 56 }
lukeocarwright 8:f305ea78b2b1 57 }
lukeocarwright 8:f305ea78b2b1 58
lukeocarwright 13:27300c533dd1 59 void Menu::subwaveforms(N5110 &lcd, Gamepad &pad) //waveforms sub
lukeocarwright 8:f305ea78b2b1 60 {
lukeocarwright 8:f305ea78b2b1 61 menusize=3;
lukeocarwright 8:f305ea78b2b1 62 g_selecty=10;
lukeocarwright 8:f305ea78b2b1 63 submenu=1; //initialises starting point
lukeocarwright 8:f305ea78b2b1 64 menuflag=1; //resets flag
lukeocarwright 8:f305ea78b2b1 65 printf("Waveforms menu \n");
lukeocarwright 8:f305ea78b2b1 66 lcd.clear(); //clear buffer
lukeocarwright 8:f305ea78b2b1 67 lcd.printString("Waveforms:",3,0);
lukeocarwright 8:f305ea78b2b1 68 printsubwaveforms(lcd);
lukeocarwright 8:f305ea78b2b1 69 while (menuflag==1) { //looped
lukeocarwright 13:27300c533dd1 70 s=scroll(lcd,pad,submenu,menusize);
lukeocarwright 13:27300c533dd1 71 //printf("S= %d",s);
lukeocarwright 8:f305ea78b2b1 72 if (s==1) {
lukeocarwright 8:f305ea78b2b1 73 printsubwaveforms(lcd);
lukeocarwright 12:7a399a476cfd 74 submenu++;
lukeocarwright 13:27300c533dd1 75 wait_ms(200);
lukeocarwright 8:f305ea78b2b1 76 }
lukeocarwright 12:7a399a476cfd 77 if (s==-1) {
lukeocarwright 12:7a399a476cfd 78 printsubwaveforms(lcd);
lukeocarwright 12:7a399a476cfd 79 submenu--;
lukeocarwright 13:27300c533dd1 80 wait_ms(200);
lukeocarwright 13:27300c533dd1 81 }
lukeocarwright 8:f305ea78b2b1 82 if (pad.A_pressed()) { //go back menu
lukeocarwright 8:f305ea78b2b1 83 // printf("A pressed\n");
lukeocarwright 8:f305ea78b2b1 84 printf("Submenu: %d selected\n", submenu); //debug
lukeocarwright 8:f305ea78b2b1 85 wait_ms(200); //debounce
lukeocarwright 8:f305ea78b2b1 86 menuflag=0; //sets flag
lukeocarwright 8:f305ea78b2b1 87 }
lukeocarwright 8:f305ea78b2b1 88 if (pad.B_pressed()) { //go back menu
lukeocarwright 8:f305ea78b2b1 89 // printf("B pressed\n");
lukeocarwright 8:f305ea78b2b1 90 printf("Main Menu selected\n"); //debug
lukeocarwright 8:f305ea78b2b1 91 submenu=0;
lukeocarwright 8:f305ea78b2b1 92 wait_ms(200); //debounce
lukeocarwright 8:f305ea78b2b1 93 menuflag=0; //sets flag
lukeocarwright 8:f305ea78b2b1 94 }
lukeocarwright 8:f305ea78b2b1 95 }
lukeocarwright 8:f305ea78b2b1 96
lukeocarwright 8:f305ea78b2b1 97 if(submenu==0) { //allows main selected
lukeocarwright 8:f305ea78b2b1 98 mainmenu(lcd,pad);
lukeocarwright 8:f305ea78b2b1 99 }
lukeocarwright 8:f305ea78b2b1 100 if(submenu>=1) { //allows waveform selected
lukeocarwright 8:f305ea78b2b1 101 front.frontrun(lcd,pad,submenu);
lukeocarwright 8:f305ea78b2b1 102 }
lukeocarwright 8:f305ea78b2b1 103 }
lukeocarwright 8:f305ea78b2b1 104
lukeocarwright 8:f305ea78b2b1 105 void Menu::subinstructions(N5110 &lcd, Gamepad &pad) //instruction sub
lukeocarwright 8:f305ea78b2b1 106 {
lukeocarwright 8:f305ea78b2b1 107 menuflag=1; //sets flag
lukeocarwright 8:f305ea78b2b1 108 printf("Instructions menu \n");
lukeocarwright 8:f305ea78b2b1 109 lcd.clear();
lukeocarwright 8:f305ea78b2b1 110 lcd.printString("Instructions:",3,0);
lukeocarwright 8:f305ea78b2b1 111 subunavailiable(lcd); //currently unused
lukeocarwright 8:f305ea78b2b1 112 while (menuflag==1) {
lukeocarwright 8:f305ea78b2b1 113 if (pad.B_pressed()) {
lukeocarwright 8:f305ea78b2b1 114 // printf("B pressed\n");
lukeocarwright 8:f305ea78b2b1 115 printf("Main Menu selected\n");
lukeocarwright 8:f305ea78b2b1 116 submenu=0;
lukeocarwright 8:f305ea78b2b1 117 wait_ms(200); //debounce
lukeocarwright 8:f305ea78b2b1 118 menuflag=0; //sets flag
lukeocarwright 8:f305ea78b2b1 119 }
lukeocarwright 8:f305ea78b2b1 120 }
lukeocarwright 8:f305ea78b2b1 121 if(submenu==0) { //allows main menu select
lukeocarwright 8:f305ea78b2b1 122 mainmenu(lcd,pad);
lukeocarwright 8:f305ea78b2b1 123 }
lukeocarwright 8:f305ea78b2b1 124 }
lukeocarwright 8:f305ea78b2b1 125
lukeocarwright 8:f305ea78b2b1 126 void Menu::subcredits(N5110 &lcd, Gamepad &pad) //credits sub menu
lukeocarwright 8:f305ea78b2b1 127 {
lukeocarwright 8:f305ea78b2b1 128 printf("Credits \n");
lukeocarwright 8:f305ea78b2b1 129 lcd.clear();
lukeocarwright 8:f305ea78b2b1 130 lcd.printString("Credits",22,0); //prints credits to screen
lukeocarwright 8:f305ea78b2b1 131 lcd.printString("Coded,Produced",0,1);
lukeocarwright 8:f305ea78b2b1 132 lcd.printString("+ Built by",10,2);
lukeocarwright 8:f305ea78b2b1 133 lcd.printString("Luke",30,3);
lukeocarwright 8:f305ea78b2b1 134 lcd.printString("Cartwright",13,4);
lukeocarwright 8:f305ea78b2b1 135 lcd.refresh(); //refresh buffer
lukeocarwright 8:f305ea78b2b1 136 menuflag=1; //sets flag
lukeocarwright 8:f305ea78b2b1 137 while (menuflag==1) {
lukeocarwright 8:f305ea78b2b1 138 if (pad.B_pressed()) { //go back menu
lukeocarwright 8:f305ea78b2b1 139 // printf("B pressed\n");
lukeocarwright 8:f305ea78b2b1 140 printf("Main Menu selected\n");
lukeocarwright 8:f305ea78b2b1 141 submenu=0;
lukeocarwright 8:f305ea78b2b1 142 wait_ms(200); //debounce
lukeocarwright 8:f305ea78b2b1 143 menuflag=0; //sets flag
lukeocarwright 8:f305ea78b2b1 144 }
lukeocarwright 8:f305ea78b2b1 145 }
lukeocarwright 8:f305ea78b2b1 146 if(submenu==0) { //back to main
lukeocarwright 8:f305ea78b2b1 147 mainmenu(lcd,pad);
lukeocarwright 8:f305ea78b2b1 148 }
lukeocarwright 8:f305ea78b2b1 149 }
lukeocarwright 8:f305ea78b2b1 150
lukeocarwright 8:f305ea78b2b1 151 //Private Methods--------------------------------------------------------------
lukeocarwright 8:f305ea78b2b1 152 void Menu::printmainmenu(N5110 &lcd) //prints main menu
lukeocarwright 8:f305ea78b2b1 153 {
lukeocarwright 8:f305ea78b2b1 154 printf("Printing Main Menu \n");
lukeocarwright 8:f305ea78b2b1 155 lcd.clear(); //clears current buffer
lukeocarwright 8:f305ea78b2b1 156 lcd.drawRect(78,g_selecty,5,5,FILL_BLACK); //prints select box at y value
lukeocarwright 8:f305ea78b2b1 157 lcd.printString("MAIN MENU",3,0); //title print
lukeocarwright 8:f305ea78b2b1 158 //SUBMENU TITLES
lukeocarwright 8:f305ea78b2b1 159 lcd.printString("Waveforms",3,1);
lukeocarwright 8:f305ea78b2b1 160 lcd.printString("Instructions",3,2);
lukeocarwright 8:f305ea78b2b1 161 lcd.printString("Credits",3,3);
lukeocarwright 8:f305ea78b2b1 162 lcd.refresh(); //updates display
lukeocarwright 8:f305ea78b2b1 163 }
lukeocarwright 8:f305ea78b2b1 164 void Menu::printsubwaveforms(N5110 &lcd)//prints subwaveforms menu
lukeocarwright 8:f305ea78b2b1 165 {
lukeocarwright 8:f305ea78b2b1 166 printf("Printing Waveforms menu\n");
lukeocarwright 8:f305ea78b2b1 167 lcd.clear(); //clears current buffer
lukeocarwright 8:f305ea78b2b1 168 lcd.drawRect(78,g_selecty,5,5,FILL_BLACK); //prints select box at y value
lukeocarwright 8:f305ea78b2b1 169 lcd.printString("WAVEFORMS:",3,0); //title print
lukeocarwright 8:f305ea78b2b1 170 //SUBMENU TITLES
lukeocarwright 8:f305ea78b2b1 171 lcd.printString("Sine",3,1);
lukeocarwright 8:f305ea78b2b1 172 lcd.printString("Triangle",3,2);
lukeocarwright 8:f305ea78b2b1 173 lcd.printString("Square",3,3);
lukeocarwright 8:f305ea78b2b1 174 lcd.refresh(); //updates display
lukeocarwright 8:f305ea78b2b1 175 }
lukeocarwright 8:f305ea78b2b1 176
lukeocarwright 8:f305ea78b2b1 177 void Menu::subunavailiable(N5110 &lcd) //for currently undeveloped menu
lukeocarwright 8:f305ea78b2b1 178 {
lukeocarwright 8:f305ea78b2b1 179 printf("sub unavailiable\n");
lukeocarwright 8:f305ea78b2b1 180 lcd.printString("Unavailiable",3,1);
lukeocarwright 8:f305ea78b2b1 181 lcd.refresh();
lukeocarwright 8:f305ea78b2b1 182 }
lukeocarwright 8:f305ea78b2b1 183
lukeocarwright 13:27300c533dd1 184 int Menu::scroll(N5110 &lcd, Gamepad &pad, int submenu, int menusize) //checks srolling
lukeocarwright 8:f305ea78b2b1 185 {
lukeocarwright 8:f305ea78b2b1 186 int d=scroll_check(pad);
lukeocarwright 8:f305ea78b2b1 187 if(d != 0) {
lukeocarwright 13:27300c533dd1 188 if (d==1) { //N scrolls up
lukeocarwright 13:27300c533dd1 189 printf("N \n"); //debug
lukeocarwright 13:27300c533dd1 190 submenu--;
lukeocarwright 13:27300c533dd1 191 g_selecty=g_selecty-8; //line size=8
lukeocarwright 13:27300c533dd1 192 if (submenu<=0) { //3 items in menu stops overflow
lukeocarwright 13:27300c533dd1 193 submenu++;
lukeocarwright 13:27300c533dd1 194 g_selecty = g_selecty+8;
lukeocarwright 13:27300c533dd1 195 return(0);
lukeocarwright 8:f305ea78b2b1 196 }
lukeocarwright 8:f305ea78b2b1 197 //printmainmenu(lcd); //reprints main
lukeocarwright 13:27300c533dd1 198 printf("SubMenu= %d\n", submenu); //debug
lukeocarwright 12:7a399a476cfd 199 return(-1);
lukeocarwright 8:f305ea78b2b1 200 }
lukeocarwright 13:27300c533dd1 201 if (d==5) { //S scrolls down
lukeocarwright 13:27300c533dd1 202 printf("S \n");
lukeocarwright 13:27300c533dd1 203 submenu++;
lukeocarwright 13:27300c533dd1 204 g_selecty=g_selecty+8;
lukeocarwright 13:27300c533dd1 205 if (submenu >menusize) { //stops overflow
lukeocarwright 13:27300c533dd1 206 submenu--;
lukeocarwright 13:27300c533dd1 207 g_selecty = g_selecty-8;
lukeocarwright 13:27300c533dd1 208 return(0);
lukeocarwright 8:f305ea78b2b1 209 }
lukeocarwright 8:f305ea78b2b1 210 //printmainmenu(lcd); //reprints menu
lukeocarwright 13:27300c533dd1 211 printf("SubMenu= %d\n", submenu); //debug
lukeocarwright 12:7a399a476cfd 212 return(1);
lukeocarwright 8:f305ea78b2b1 213 }
lukeocarwright 8:f305ea78b2b1 214 wait_ms(200); //debounce
lukeocarwright 12:7a399a476cfd 215
lukeocarwright 14:9cfe0041cc4e 216 }
lukeocarwright 13:27300c533dd1 217 return(0);
lukeocarwright 8:f305ea78b2b1 218 }
lukeocarwright 13:27300c533dd1 219
lukeocarwright 8:f305ea78b2b1 220 int Menu::scroll_check (Gamepad &pad)
lukeocarwright 8:f305ea78b2b1 221 {
lukeocarwright 8:f305ea78b2b1 222 return(pad.get_direction()); //checks for stick
lukeocarwright 8:f305ea78b2b1 223 }