ELEC2645 (2019/20) / Mbed 2 deprecated el18loc_final

Dependencies:   mbed

Committer:
lukeocarwright
Date:
Sat May 09 13:45:23 2020 +0000
Revision:
13:27300c533dd1
Parent:
12:7a399a476cfd
Child:
14:9cfe0041cc4e
ADSR faders moving

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