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
Diff: Menu/Menu.cpp
- Revision:
- 31:cfdb014ff086
- Parent:
- 30:08cc4ec58d07
--- a/Menu/Menu.cpp Tue May 26 10:17:47 2020 +0000 +++ b/Menu/Menu.cpp Tue May 26 14:21:36 2020 +0000 @@ -1,8 +1,6 @@ #include "mbed.h" #include "Menu.h" -//Global Variables -volatile int g_mainmenu_flag; //objects Front front; @@ -17,29 +15,26 @@ // PUBLIC methods--------------------------------------------------------------- void Menu::mainmenu(N5110 &lcd, Gamepad &pad) //main menu { - g_mainmenu_flag=0; //Globals Init - g_selecty=10; + g_selecty=10; //POSITION OF SELECT BOX submenu=menuflag=1; //Variables Init menusize=4; printmainmenu(lcd); //prints menu to display pad.reset_buttons();//elimnates Prev Button Press while (menuflag==1) { - s=scroll(lcd, pad, submenu, menusize); + s=scroll(lcd, pad, submenu, menusize); //Performs Scroll if (s==1) { printmainmenu(lcd); - submenu++; + submenu++; //Increase Menu Selected wait_ms(200); - } - if (s==-1) { + } else if (s==-1) { printmainmenu(lcd); - submenu--; + submenu--; //Decrease menu Selected wait_ms(200); } if ( pad.A_pressed()) { //selects - // printf("A pressed\n"); //printf("SubMenu %d selected\n", submenu); wait_ms(200); //debounce - menuflag=0; + menuflag=0;//exits } } switch (submenu) { @@ -61,16 +56,15 @@ submenu=menuflag=1; //initialises Variables menusize=3; //printf("Waveforms menu \n"); //Debug - printsubwaveforms(lcd); + printsubwaveforms(lcd); //Prints Screen pad.reset_buttons(); while (menuflag==1) { //looped s=scroll(lcd,pad,submenu,menusize); if (s==1) { - printsubwaveforms(lcd); - submenu++; - wait_ms(200); - } - if (s==-1) { + printsubwaveforms(lcd); //Prints Waveform sub + submenu++; //increases selected sub + wait_ms(200); //debounce + } else if (s==-1) { printsubwaveforms(lcd); submenu--; wait_ms(200); @@ -103,16 +97,16 @@ { menuflag=1; //sets flag //printf("Instructions menu \n"); - lcd.clear(); + lcd.clear(); //LCD setup lcd.printString("Instructions:",2,0); lcd.printString("See attached",3,1); lcd.printString("User Manual",3,2); pad.reset_buttons(); lcd.refresh(); while (menuflag==1) { - if (pad.B_pressed()) { + if (pad.B_pressed()) { //returns to main menu // printf("B pressed\n"); - printf("Main Menu selected\n"); + //printf("Main Menu selected\n"); submenu=0; wait_ms(200); //debounce menuflag=0; //sets flag @@ -123,6 +117,46 @@ } } +void Menu::subsettings(N5110 &lcd, Gamepad &pad) +{ + g_selecty=10; //Global Var initial value + submenu=menuflag=1; //initialises Variables + menusize=4; + //printf("Settings menu \n"); + printsubsettings(lcd); //prints to LCD + pad.reset_buttons(); //Stops Buttons from prev menu + while (menuflag==1) { //looped + s=scroll(lcd,pad,submenu,menusize); + if (s==1) { + printsubsettings(lcd); + submenu++; + wait_ms(200); + } else if (s==-1) { + printsubsettings(lcd); + submenu--; + wait_ms(200); + } + if (pad.A_pressed()) { //select menu + //printf("Submenu: %d selected\n", submenu); //debug + wait_ms(200); //debounce + menuflag=0; //sets flag + } + if (pad.B_pressed()) { //go back menu + //printf("Main Menu selected\n"); //debug + submenu=0; + wait_ms(200); //debounce + menuflag=0; //sets flag + } + } + switch (submenu) { //submenu select + case 0: mainmenu(lcd,pad); //returns to main + case 1: volumerun(lcd,pad); + case 2: backlightrun(lcd,pad); + case 3: contrastrun(lcd,pad); + case 4: inverse_mode(lcd,pad); + } +} + void Menu::subcredits(N5110 &lcd, Gamepad &pad) //credits sub menu { //printf("Credits \n"); @@ -148,57 +182,44 @@ } } -void Menu::subsettings(N5110 &lcd, Gamepad &pad) +int Menu::scroll(N5110 &lcd, Gamepad &pad, int submenu, int menusize) //checks srolling { - g_selecty=10; - submenu=menuflag=1; //initialises Variables - menusize=4; - //printf("Settings menu \n"); - printsubsettings(lcd); - pad.reset_buttons(); - while (menuflag==1) { //looped - s=scroll(lcd,pad,submenu,menusize); - if (s==1) { - printsubsettings(lcd); - submenu++; - wait_ms(200); - } - if (s==-1) { - printsubsettings(lcd); + int d=scroll_check(pad); + if(d != 0) { + if (d==1) { //N scrolls up + //printf("N \n"); //debug submenu--; - wait_ms(200); + g_selecty=g_selecty-8; //line size=8 + if (submenu<=0) { //stops overflow + submenu++; + g_selecty = g_selecty+8; //moves select box + return(0); + } + //printf("SubMenu= %d\n", submenu); //debug + return(-1); } - if (pad.A_pressed()) { //go back menu - //printf("Submenu: %d selected\n", submenu); //debug - wait_ms(200); //debounce - menuflag=0; //sets flag + if (d==5) { //S scrolls down + //printf("S \n"); + submenu++; + g_selecty=g_selecty+8; //movews select box + if (submenu >menusize) { //stops overflow + submenu--; + g_selecty = g_selecty-8; + return(0); + } + //printf("SubMenu= %d\n", submenu); //debug + return(1); } - if (pad.B_pressed()) { //go back menu - //printf("Main Menu selected\n"); //debug - submenu=0; - wait_ms(200); //debounce - menuflag=0; //sets flag - } + wait_ms(200); //debounce } - switch (submenu) { - case 0: - mainmenu(lcd,pad); - case 1: - volumerun(lcd,pad); - case 2: - backlightrun(lcd,pad); - case 3: - contrastrun(lcd,pad); - case 4: - inverse_mode(lcd,pad); - } + return(0); } void Menu::volumerun(N5110 &lcd, Gamepad &pad) { //printf("Volume Settings \n"); menuflag=1; //sets flag - lcd.clear(); + lcd.clear(); //Sets Up LCD lcd.printString("Volume:",3,0); lcd.printString("Use screw",3,1); lcd.printString("potentiometer",3,2); @@ -219,81 +240,9 @@ } } -void Menu::inverse_mode(N5110 &lcd, Gamepad &pad) -{ - lcd.clear(); - lcd.printString("Inverse Mode:",3,0); - lcd.printString("Press A to",3,1); - lcd.printString("toggle",3,2); - lcd.refresh(); - menuflag=1; - toggle=true; - while (menuflag==1) { - if (pad.A_pressed()) { - if (toggle==true) { - lcd.normalMode(); - toggle=false; - } else if (toggle==false) { - lcd.inverseMode(); - toggle=true; - } - wait_ms(500);//debounce - } - if (pad.B_pressed()) { - menuflag=0; - } - } - wait_ms(500);//debounce - pad.reset_buttons(); - subsettings(lcd,pad); -} - -void Menu::contrastrun(N5110 &lcd, Gamepad &pad) -{ - menuflag=1; //sets flag - //printf("Contrast Settings \n"); - lcd.clear(); - lcd.printString("Contrast:",3,0); - contrast=0.5; - pad.reset_buttons(); - printcontrast(lcd,contrast); - while (menuflag==1) { //looped - s=scroll(lcd,pad,10,20); - if (s!=s_1) { - //printf("S= %d",s); - if (s==1) { - printcontrast(lcd,contrast); - contrast=contrast+0.05f; - lcd.setContrast(contrast); - //printf("CONTRAST UP\n"); - wait_ms(200); - } - if (s==-1) { - printcontrast(lcd,contrast); - contrast=contrast-0.05f; - lcd.setContrast(contrast); - //printf("CONTRAST DOWN\n"); - wait_ms(200); - } - } - if (pad.B_pressed()) { //go back menu - // printf("B pressed\n"); - //printf("Main Menu selected\n"); //debug - submenu=0; - lcd.clear(); - lcd.printString("Contrast Set",3,3); - lcd.refresh(); - wait_ms(900); //debounce + display - menuflag=0; //sets flag - } - s=s_1; - } - subsettings(lcd,pad); -} - void Menu::backlightrun(N5110 &lcd, Gamepad &pad) { - lcd.clear(); + lcd.clear(); //sets up LCD lcd.printString("Backlight:",3,0); lcd.printString("Press A to",3,1); lcd.printString("toggle",3,2); @@ -310,17 +259,81 @@ toggle=true; } wait_ms(500);//debounce - } if (pad.B_pressed()) { - menuflag=0; + menuflag=0; //alows loop exit } } wait_ms(500);//debounce pad.reset_buttons(); + subsettings(lcd,pad); //launches setting menu +} + +void Menu::contrastrun(N5110 &lcd, Gamepad &pad) +{ + menuflag=1; //sets flag + //printf("Contrast Settings \n"); + contrast=0.5; //initialises + pad.reset_buttons(); + printcontrast(lcd,contrast); + while (menuflag==1) { //looped + s=scroll(lcd,pad,10,20); + if (s!=s_1) { + //printf("S= %d",s); + if (s==1) { + contrast=contrast+0.05f; + lcd.setContrast(contrast); + //printf("CONTRAST UP\n"); + } else if (s==-1) { + contrast=contrast-0.05f; + lcd.setContrast(contrast); + //printf("CONTRAST DOWN\n"); + } + printcontrast(lcd,contrast); + wait_ms(200); + } + if (pad.B_pressed()) { //go back menu + //printf("Settings Menu selected\n"); //debug + lcd.clear(); + lcd.printString("Contrast Set",3,3); + lcd.refresh(); + wait_ms(900); //debounce + display + menuflag=0; //sets flag + } + s=s_1; + } subsettings(lcd,pad); } +void Menu::inverse_mode(N5110 &lcd, Gamepad &pad) +{ + lcd.clear(); //Sets up LCD + lcd.printString("Inverse Mode:",3,0); + lcd.printString("Press A to",3,1); + lcd.printString("toggle",3,2); + lcd.refresh(); + menuflag=1;// initial value + toggle=true; + while (menuflag==1) { + if (pad.A_pressed()) { + if (toggle==true) { + lcd.normalMode(); + toggle=false; + } else if (toggle==false) { + lcd.inverseMode(); + toggle=true; + } + wait_ms(500);//debounce + } + if (pad.B_pressed()) { + menuflag=0;//allows loop exit + } + } + wait_ms(500);//debounce + pad.reset_buttons(); + subsettings(lcd,pad);//launches setting submenu +} + //Private Methods-------------------------------------------------------------- void Menu::printmainmenu(N5110 &lcd) //prints main menu { @@ -338,7 +351,7 @@ void Menu::printsubwaveforms(N5110 &lcd) //prints subwaveforms menu { - printf("Printing Waveforms menu\n"); + //printf("Printing Waveforms menu\n"); lcd.clear(); //clears current buffer lcd.drawRect(78,g_selecty,5,5,FILL_BLACK); //prints select box at y value lcd.printString("WAVEFORMS:",3,0); //title print @@ -371,46 +384,6 @@ lcd.refresh(); } -void Menu::subunavailiable(N5110 &lcd) //for currently undeveloped menu -{ - //printf("sub unavailiable\n"); - lcd.printString("Unavailiable",3,1); - lcd.refresh(); -} - -int Menu::scroll(N5110 &lcd, Gamepad &pad, int submenu, int menusize) //checks srolling -{ - int d=scroll_check(pad); - if(d != 0) { - if (d==1) { //N scrolls up - //printf("N \n"); //debug - submenu--; - g_selecty=g_selecty-8; //line size=8 - if (submenu<=0) { //stops overflow - submenu++; - g_selecty = g_selecty+8; - return(0); - } - //printf("SubMenu= %d\n", submenu); //debug - return(-1); - } - if (d==5) { //S scrolls down - //printf("S \n"); - submenu++; - g_selecty=g_selecty+8; - if (submenu >menusize) { //stops overflow - submenu--; - g_selecty = g_selecty-8; - return(0); - } - //printf("SubMenu= %d\n", submenu); //debug - return(1); - } - wait_ms(200); //debounce - } - return(0); -} - int Menu::scroll_check (Gamepad &pad) { return(pad.get_direction()); //checks for stick