Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Menu.cpp
00001 #include "mbed.h" 00002 #include "Menu.h" 00003 00004 //objects 00005 Front front; 00006 00007 //constructor/destructor 00008 Menu::Menu() 00009 { 00010 } 00011 Menu::~Menu() 00012 { 00013 } 00014 00015 // PUBLIC methods--------------------------------------------------------------- 00016 void Menu::mainmenu(N5110 &lcd, Gamepad &pad) //main menu 00017 { 00018 g_selecty=10; //POSITION OF SELECT BOX 00019 submenu=menuflag=1; //Variables Init 00020 menusize=4; 00021 printmainmenu(lcd); //prints menu to display 00022 pad.reset_buttons();//elimnates Prev Button Press 00023 while (menuflag==1) { 00024 s=scroll(lcd, pad, submenu, menusize); //Performs Scroll 00025 if (s==1) { 00026 printmainmenu(lcd); 00027 submenu++; //Increase Menu Selected 00028 wait_ms(200); 00029 } else if (s==-1) { 00030 printmainmenu(lcd); 00031 submenu--; //Decrease menu Selected 00032 wait_ms(200); 00033 } 00034 if ( pad.A_pressed()) { //selects 00035 //printf("SubMenu %d selected\n", submenu); 00036 wait_ms(200); //debounce 00037 menuflag=0;//exits 00038 } 00039 } 00040 switch (submenu) { 00041 case 1: 00042 subwaveforms(lcd,pad); 00043 case 2: 00044 subinstructions(lcd,pad); 00045 case 3: 00046 subsettings(lcd,pad); 00047 case 4: 00048 subcredits(lcd,pad); 00049 } 00050 } 00051 00052 void Menu::subwaveforms(N5110 &lcd, Gamepad &pad) //waveforms sub 00053 { 00054 while (1) { 00055 g_selecty=10; //initialises Global var 00056 submenu=menuflag=1; //initialises Variables 00057 menusize=3; 00058 //printf("Waveforms menu \n"); //Debug 00059 printsubwaveforms(lcd); //Prints Screen 00060 pad.reset_buttons(); 00061 while (menuflag==1) { //looped 00062 s=scroll(lcd,pad,submenu,menusize); 00063 if (s==1) { 00064 printsubwaveforms(lcd); //Prints Waveform sub 00065 submenu++; //increases selected sub 00066 wait_ms(200); //debounce 00067 } else if (s==-1) { 00068 printsubwaveforms(lcd); 00069 submenu--; 00070 wait_ms(200); 00071 } 00072 if (pad.A_pressed()) { //Select 00073 //printf("Submenu: %d selected\n", submenu); //debug 00074 wait_ms(200); //debounce 00075 menuflag=0; //sets flag 00076 } 00077 if (pad.B_pressed()) { //go back menu 00078 //printf("Main Menu selected\n"); //debug 00079 submenu=0; 00080 wait_ms(200); //debounce 00081 menuflag=0; //sets flag 00082 } 00083 } 00084 if(submenu==0) { //allows main selected 00085 mainmenu(lcd,pad); 00086 break; 00087 } 00088 if(submenu>=1) { //allows waveform selected 00089 front.frontrun(lcd,pad,submenu); 00090 } 00091 mainmenu(lcd,pad); 00092 break; 00093 } 00094 } 00095 00096 void Menu::subinstructions(N5110 &lcd, Gamepad &pad) //instruction sub 00097 { 00098 menuflag=1; //sets flag 00099 //printf("Instructions menu \n"); 00100 lcd.clear(); //LCD setup 00101 lcd.printString("Instructions:",2,0); 00102 lcd.printString("See attached",3,1); 00103 lcd.printString("User Manual",3,2); 00104 pad.reset_buttons(); 00105 lcd.refresh(); 00106 while (menuflag==1) { 00107 if (pad.B_pressed()) { //returns to main menu 00108 // printf("B pressed\n"); 00109 //printf("Main Menu selected\n"); 00110 submenu=0; 00111 wait_ms(200); //debounce 00112 menuflag=0; //sets flag 00113 } 00114 } 00115 if(submenu==0) { //allows main menu select 00116 mainmenu(lcd,pad); 00117 } 00118 } 00119 00120 void Menu::subsettings(N5110 &lcd, Gamepad &pad) 00121 { 00122 g_selecty=10; //Global Var initial value 00123 submenu=menuflag=1; //initialises Variables 00124 menusize=4; 00125 //printf("Settings menu \n"); 00126 printsubsettings(lcd); //prints to LCD 00127 pad.reset_buttons(); //Stops Buttons from prev menu 00128 while (menuflag==1) { //looped 00129 s=scroll(lcd,pad,submenu,menusize); 00130 if (s==1) { 00131 printsubsettings(lcd); 00132 submenu++; 00133 wait_ms(200); 00134 } else if (s==-1) { 00135 printsubsettings(lcd); 00136 submenu--; 00137 wait_ms(200); 00138 } 00139 if (pad.A_pressed()) { //select menu 00140 //printf("Submenu: %d selected\n", submenu); //debug 00141 wait_ms(200); //debounce 00142 menuflag=0; //sets flag 00143 } 00144 if (pad.B_pressed()) { //go back menu 00145 //printf("Main Menu selected\n"); //debug 00146 submenu=0; 00147 wait_ms(200); //debounce 00148 menuflag=0; //sets flag 00149 } 00150 } 00151 switch (submenu) { //submenu select 00152 case 0: mainmenu(lcd,pad); //returns to main 00153 case 1: volumerun(lcd,pad); 00154 case 2: backlightrun(lcd,pad); 00155 case 3: contrastrun(lcd,pad); 00156 case 4: inverse_mode(lcd,pad); 00157 } 00158 } 00159 00160 void Menu::subcredits(N5110 &lcd, Gamepad &pad) //credits sub menu 00161 { 00162 //printf("Credits \n"); 00163 lcd.clear(); 00164 lcd.printString("Credits",22,0); //prints credits to screen 00165 lcd.printString("Coded,Produced",0,1); 00166 lcd.printString("+ Built by",10,2); 00167 lcd.printString("Luke",30,3); 00168 lcd.printString("Cartwright",13,4); 00169 lcd.refresh(); //refresh buffer 00170 menuflag=1; //sets flag 00171 pad.reset_buttons(); 00172 while (menuflag==1) { 00173 if (pad.B_pressed()) { //go back menu 00174 //printf("Main Menu selected\n"); 00175 submenu=0; 00176 wait_ms(200); //debounce 00177 menuflag=0; //sets flag 00178 } 00179 } 00180 if(submenu==0) { //back to main 00181 mainmenu(lcd,pad); 00182 } 00183 } 00184 00185 int Menu::scroll(N5110 &lcd, Gamepad &pad, int submenu, int menusize) //checks srolling 00186 { 00187 int d=scroll_check(pad); 00188 if(d != 0) { 00189 if (d==1) { //N scrolls up 00190 //printf("N \n"); //debug 00191 submenu--; 00192 g_selecty=g_selecty-8; //line size=8 00193 if (submenu<=0) { //stops overflow 00194 submenu++; 00195 g_selecty = g_selecty+8; //moves select box 00196 return(0); 00197 } 00198 //printf("SubMenu= %d\n", submenu); //debug 00199 return(-1); 00200 } 00201 if (d==5) { //S scrolls down 00202 //printf("S \n"); 00203 submenu++; 00204 g_selecty=g_selecty+8; //movews select box 00205 if (submenu >menusize) { //stops overflow 00206 submenu--; 00207 g_selecty = g_selecty-8; 00208 return(0); 00209 } 00210 //printf("SubMenu= %d\n", submenu); //debug 00211 return(1); 00212 } 00213 wait_ms(200); //debounce 00214 } 00215 return(0); 00216 } 00217 00218 void Menu::volumerun(N5110 &lcd, Gamepad &pad) 00219 { 00220 //printf("Volume Settings \n"); 00221 menuflag=1; //sets flag 00222 lcd.clear(); //Sets Up LCD 00223 lcd.printString("Volume:",3,0); 00224 lcd.printString("Use screw",3,1); 00225 lcd.printString("potentiometer",3,2); 00226 lcd.printString("on rear",3,3); 00227 lcd.refresh(); 00228 pad.reset_buttons(); 00229 while (menuflag==1) { 00230 if (pad.B_pressed()) { 00231 // printf("B pressed\n"); 00232 printf("Main Menu selected\n"); 00233 submenu=0; 00234 wait_ms(200); //debounce 00235 menuflag=0; //sets flag 00236 } 00237 } 00238 if(submenu==0) { //allows main menu select 00239 subsettings(lcd,pad); 00240 } 00241 } 00242 00243 void Menu::backlightrun(N5110 &lcd, Gamepad &pad) 00244 { 00245 lcd.clear(); //sets up LCD 00246 lcd.printString("Backlight:",3,0); 00247 lcd.printString("Press A to",3,1); 00248 lcd.printString("toggle",3,2); 00249 lcd.refresh(); 00250 menuflag=1; 00251 toggle=true; 00252 while (menuflag==1) { 00253 if (pad.A_pressed()) { 00254 if (toggle==true) { 00255 lcd.backLightOn(); 00256 toggle=false; 00257 } else if (toggle==false) { 00258 lcd.backLightOff(); 00259 toggle=true; 00260 } 00261 wait_ms(500);//debounce 00262 } 00263 if (pad.B_pressed()) { 00264 menuflag=0; //alows loop exit 00265 } 00266 } 00267 wait_ms(500);//debounce 00268 pad.reset_buttons(); 00269 subsettings(lcd,pad); //launches setting menu 00270 } 00271 00272 void Menu::contrastrun(N5110 &lcd, Gamepad &pad) 00273 { 00274 menuflag=1; //sets flag 00275 //printf("Contrast Settings \n"); 00276 contrast=0.5; //initialises 00277 pad.reset_buttons(); 00278 printcontrast(lcd,contrast); 00279 while (menuflag==1) { //looped 00280 s=scroll(lcd,pad,10,20); 00281 if (s!=s_1) { 00282 //printf("S= %d",s); 00283 if (s==1) { 00284 contrast=contrast+0.05f; 00285 lcd.setContrast(contrast); 00286 //printf("CONTRAST UP\n"); 00287 } else if (s==-1) { 00288 contrast=contrast-0.05f; 00289 lcd.setContrast(contrast); 00290 //printf("CONTRAST DOWN\n"); 00291 } 00292 printcontrast(lcd,contrast); 00293 wait_ms(200); 00294 } 00295 if (pad.B_pressed()) { //go back menu 00296 //printf("Settings Menu selected\n"); //debug 00297 lcd.clear(); 00298 lcd.printString("Contrast Set",3,3); 00299 lcd.refresh(); 00300 wait_ms(900); //debounce + display 00301 menuflag=0; //sets flag 00302 } 00303 s=s_1; 00304 } 00305 subsettings(lcd,pad); 00306 } 00307 00308 void Menu::inverse_mode(N5110 &lcd, Gamepad &pad) 00309 { 00310 lcd.clear(); //Sets up LCD 00311 lcd.printString("Inverse Mode:",3,0); 00312 lcd.printString("Press A to",3,1); 00313 lcd.printString("toggle",3,2); 00314 lcd.refresh(); 00315 menuflag=1;// initial value 00316 toggle=true; 00317 while (menuflag==1) { 00318 if (pad.A_pressed()) { 00319 if (toggle==true) { 00320 lcd.normalMode(); 00321 toggle=false; 00322 } else if (toggle==false) { 00323 lcd.inverseMode(); 00324 toggle=true; 00325 } 00326 wait_ms(500);//debounce 00327 } 00328 if (pad.B_pressed()) { 00329 menuflag=0;//allows loop exit 00330 } 00331 } 00332 wait_ms(500);//debounce 00333 pad.reset_buttons(); 00334 subsettings(lcd,pad);//launches setting submenu 00335 } 00336 00337 //Private Methods-------------------------------------------------------------- 00338 void Menu::printmainmenu(N5110 &lcd) //prints main menu 00339 { 00340 //printf("Printing Main Menu \n"); 00341 lcd.clear(); //clears current buffer 00342 lcd.drawRect(78,g_selecty,5,5,FILL_BLACK); //prints select box at y value 00343 lcd.printString("MAIN MENU",3,0); //title print 00344 //SUBMENU TITLES 00345 lcd.printString("Waveforms",3,1); 00346 lcd.printString("Instructions",3,2); 00347 lcd.printString("Settings",3,3); 00348 lcd.printString("Credits",3,4); 00349 lcd.refresh(); //updates display 00350 } 00351 00352 void Menu::printsubwaveforms(N5110 &lcd) //prints subwaveforms menu 00353 { 00354 //printf("Printing Waveforms menu\n"); 00355 lcd.clear(); //clears current buffer 00356 lcd.drawRect(78,g_selecty,5,5,FILL_BLACK); //prints select box at y value 00357 lcd.printString("WAVEFORMS:",3,0); //title print 00358 //SUBMENU TITLES 00359 lcd.printString("Sine",3,1); 00360 lcd.printString("Triangle",3,2); 00361 lcd.printString("Square",3,3); 00362 lcd.refresh(); //updates display 00363 } 00364 00365 void Menu::printsubsettings(N5110 &lcd) //prints settings menu 00366 { 00367 //printf("Printing Settings menu\n"); 00368 lcd.clear(); 00369 lcd.drawRect(78,g_selecty,5,5,FILL_BLACK); //prints select box at y value 00370 lcd.printString("Settings:",3,0); //title print 00371 //SUBMENU TITLES 00372 lcd.printString("Volume",3,1); 00373 lcd.printString("Backlight",3,2); 00374 lcd.printString("Contrast",3,3); 00375 lcd.printString("Inverse Mode",3,4); 00376 lcd.refresh(); //updates display 00377 } 00378 00379 void Menu::printcontrast(N5110 &lcd, float contrast) //prints contrast edit screen 00380 { 00381 lcd.clear(); 00382 lcd.printString("Contrast:",3,0);//title print 00383 lcd.printString("VISIBILITY",12,3); 00384 lcd.refresh(); 00385 } 00386 00387 int Menu::scroll_check (Gamepad &pad) 00388 { 00389 return(pad.get_direction()); //checks for stick 00390 }
Generated on Wed Jul 13 2022 21:50:34 by
