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
Revision 16:14c231624f3e, committed 2020-05-19
- Comitter:
- lukeocarwright
- Date:
- Tue May 19 21:45:58 2020 +0000
- Parent:
- 15:1c67f064278e
- Child:
- 17:358987e9f30e
- Commit message:
- Added settings Menu. Fixed skipping menus bug.
Changed in this revision
--- a/Menu/Menu.cpp Tue May 19 18:38:33 2020 +0000
+++ b/Menu/Menu.cpp Tue May 19 21:45:58 2020 +0000
@@ -15,12 +15,12 @@
// PUBLIC methods---------------------------------------------------------------
void Menu::mainmenu(N5110 &lcd, Gamepad &pad) //main menu
{
-
- menusize=3;
+ menusize=4;
g_selecty=10;
submenu=1; //initialises starting point
printmainmenu(lcd); //prints menu to display
int menuflag=1; //sets flag
+ pad.reset_buttons();
while (menuflag==1) {
s=scroll(lcd, pad, submenu, menusize);
if (s==1) {
@@ -53,6 +53,10 @@
subcredits(lcd, pad);
break;
}
+ if (submenu==4) { //credits subemnu launch
+ subsettings(lcd, pad);
+ break;
+ }
}
}
@@ -61,11 +65,12 @@
menusize=3;
g_selecty=10;
submenu=1; //initialises starting point
- menuflag=1; //resets flag
+ int menuflag=1; //resets flag
printf("Waveforms menu \n");
lcd.clear(); //clear buffer
lcd.printString("Waveforms:",3,0);
printsubwaveforms(lcd);
+ pad.reset_buttons();
while (menuflag==1) { //looped
s=scroll(lcd,pad,submenu,menusize);
//printf("S= %d",s);
@@ -109,6 +114,7 @@
lcd.clear();
lcd.printString("Instructions:",3,0);
subunavailiable(lcd); //currently unused
+ pad.reset_buttons();
while (menuflag==1) {
if (pad.B_pressed()) {
// printf("B pressed\n");
@@ -134,6 +140,7 @@
lcd.printString("Cartwright",13,4);
lcd.refresh(); //refresh buffer
menuflag=1; //sets flag
+ pad.reset_buttons();
while (menuflag==1) {
if (pad.B_pressed()) { //go back menu
// printf("B pressed\n");
@@ -147,6 +154,123 @@
mainmenu(lcd,pad);
}
}
+void Menu::subsettings(N5110 &lcd, Gamepad &pad)
+{
+ menusize=3;
+ g_selecty=10;
+ submenu=1; //initialises starting point
+ menuflag=1; //resets flag
+ printf("Settings menu \n");
+ lcd.clear(); //clear buffer
+ printsubsettings(lcd);
+ pad.reset_buttons();
+ while (menuflag==1) { //looped
+ s=scroll(lcd,pad,submenu,menusize);
+ //printf("S= %d",s);
+ if (s==1) {
+ printsubsettings(lcd);
+ submenu++;
+ wait_ms(200);
+ }
+ if (s==-1) {
+ printsubsettings(lcd);
+ submenu--;
+ wait_ms(200);
+ }
+ if (pad.A_pressed()) { //go back menu
+ // printf("A pressed\n");
+ printf("Submenu: %d selected\n", submenu); //debug
+ wait_ms(200); //debounce
+ menuflag=0; //sets flag
+ }
+ if (pad.B_pressed()) { //go back menu
+ // printf("B pressed\n");
+ printf("Main Menu selected\n"); //debug
+ submenu=0;
+ wait_ms(200); //debounce
+ menuflag=0; //sets flag
+ }
+ }
+
+ if(submenu==0) { //allows main selected
+ mainmenu(lcd,pad);
+ }
+ if(submenu==1) { //allows volume selected
+ volumerun(lcd,pad);
+ }
+ if(submenu==2) { //allows MIDI selected
+ MIDIsettings(lcd,pad);
+ }
+ if(submenu==3) { //allows contrast selected
+ contrastrun(lcd,pad);
+ }
+}
+
+void Menu::volumerun(N5110 &lcd, Gamepad &pad)
+{
+ menuflag=1; //sets flag
+ printf("Volume Settings \n");
+ lcd.clear();
+ lcd.printString("Volume:",3,0);
+ subunavailiable(lcd); //currently unused
+ pad.reset_buttons();
+ while (menuflag==1) {
+ if (pad.B_pressed()) {
+ // printf("B pressed\n");
+ printf("Main Menu selected\n");
+ submenu=0;
+ wait_ms(200); //debounce
+ menuflag=0; //sets flag
+ }
+ }
+ if(submenu==0) { //allows main menu select
+ subsettings(lcd,pad);
+ }
+}
+
+void Menu::MIDIsettings(N5110 &lcd, Gamepad &pad)
+{
+ menuflag=1; //sets flag
+ printf("MIDI Settings \n");
+ lcd.clear();
+ lcd.printString("MIDI:",3,0);
+ subunavailiable(lcd); //currently unused
+ pad.reset_buttons();
+ while (menuflag==1) {
+ if (pad.B_pressed()) {
+ // printf("B pressed\n");
+ printf("Back Menu\n");
+ submenu=0;
+ wait_ms(200); //debounce
+ menuflag=0; //sets flag
+ }
+ }
+ if(submenu==0) { //allows main menu select
+ 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);
+ subunavailiable(lcd); //currently unused
+ pad.reset_buttons();
+ while (menuflag==1) {
+ if (pad.B_pressed()) {
+ // printf("B pressed\n");
+ printf("Back Menu\n");
+ submenu=0;
+ wait_ms(200); //debounce
+ menuflag=0; //sets flag
+ }
+ }
+ if(submenu==0) { //allows main menu select
+ subsettings(lcd,pad);
+ }
+}
//Private Methods--------------------------------------------------------------
void Menu::printmainmenu(N5110 &lcd) //prints main menu
@@ -159,6 +283,7 @@
lcd.printString("Waveforms",3,1);
lcd.printString("Instructions",3,2);
lcd.printString("Credits",3,3);
+ lcd.printString("Settings",3,4);
lcd.refresh(); //updates display
}
void Menu::printsubwaveforms(N5110 &lcd)//prints subwaveforms menu
@@ -174,6 +299,19 @@
lcd.refresh(); //updates display
}
+void Menu::printsubsettings(N5110 &lcd)//prints settings menu
+{
+ printf("Printing Settings menu\n");
+ lcd.clear();
+ lcd.drawRect(78,g_selecty,5,5,FILL_BLACK); //prints select box at y value
+ lcd.printString("Settings:",3,0); //title print
+ //SUBMENU TITLES
+ lcd.printString("Volume",3,1);
+ lcd.printString("MIDI",3,2);
+ lcd.printString("Contrast",3,3);
+ lcd.refresh(); //updates display
+}
+
void Menu::subunavailiable(N5110 &lcd) //for currently undeveloped menu
{
printf("sub unavailiable\n");
--- a/Menu/Menu.h Tue May 19 18:38:33 2020 +0000
+++ b/Menu/Menu.h Tue May 19 21:45:58 2020 +0000
@@ -31,7 +31,11 @@
void subwaveforms(N5110 &lcd, Gamepad &pad);
void subinstructions(N5110 &lcd, Gamepad &pad);
void subcredits(N5110 &lcd, Gamepad &pad);
+ void subsettings(N5110 &lcd, Gamepad &pad);
int scroll(N5110 &lcd, Gamepad &pad, int submenu, int menusize);
+ void volumerun(N5110 &lcd, Gamepad &pad);
+ void MIDIsettings(N5110 &lcd, Gamepad &pad);
+ void contrastrun(N5110 &lcd, Gamepad &pad);
private: //---------------------------------------------------------------------
//variables
@@ -45,6 +49,7 @@
//Methods
void printmainmenu(N5110 &lcd); //prints menu
void printsubwaveforms(N5110 &lcd); //prints subwaveforms menu
+ void printsubsettings(N5110 &lcd); //prints settings submenu
void subunavailiable(N5110 &lcd); //prints error for sub
int scroll_check(Gamepad &pad);
};
--- a/main.cpp Tue May 19 18:38:33 2020 +0000 +++ b/main.cpp Tue May 19 21:45:58 2020 +0000 @@ -16,7 +16,7 @@ add Menu functionality from front.cpp front.h warning sort Settings tab -ADSR (functionaluty) +ADSR (functionaluty) (adjust stops sound) MIDI LEDS INSTALL */