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:
- 8:f305ea78b2b1
- Child:
- 12:7a399a476cfd
diff -r 33cb5f2db1ee -r f305ea78b2b1 Menu/Menu.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Menu/Menu.cpp Tue May 05 16:46:01 2020 +0000 @@ -0,0 +1,206 @@ +#include "mbed.h" +#include "Menu.h" + +//objects +Front front; + +//constructor/destructor +Menu::Menu() +{ +} +Menu::~Menu() +{ +} + +// PUBLIC methods--------------------------------------------------------------- +void Menu::mainmenu(N5110 &lcd, Gamepad &pad) //main menu +{ + menusize=3; + g_selecty=10; + submenu=1; //initialises starting point + printmainmenu(lcd); //prints menu to display + int menuflag=1; //sets flag + while (menuflag==1) { + s=scroll(lcd, pad); + if (s==1) { + printmainmenu(lcd); + } + if ( pad.A_pressed()) { //selects + // printf("A pressed\n"); + printf("SubMenu %d selected\n", submenu); + wait_ms(200); //debounce + menuflag=0; + } + } + while (1) { + if (submenu==1) { //waveform submenu launch + subwaveforms(lcd, pad, submenu); + break; + } + if (submenu==2) { //instructions submenu launch + subinstructions(lcd,pad); + break; + } + if (submenu==3) { //credits subemnu launch + subcredits(lcd, pad); + break; + } + } +} + +void Menu::subwaveforms(N5110 &lcd, Gamepad &pad, int submenu) //waveforms sub +{ + menusize=3; + g_selecty=10; + submenu=1; //initialises starting point + menuflag=1; //resets flag + printf("Waveforms menu \n"); + lcd.clear(); //clear buffer + lcd.printString("Waveforms:",3,0); + printsubwaveforms(lcd); + while (menuflag==1) { //looped + s=scroll(lcd,pad); + if (s==1) { + printsubwaveforms(lcd); + } + 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 waveform selected + front.frontrun(lcd,pad,submenu); + } +} + + +void Menu::subinstructions(N5110 &lcd, Gamepad &pad) //instruction sub +{ + menuflag=1; //sets flag + printf("Instructions menu \n"); + lcd.clear(); + lcd.printString("Instructions:",3,0); + subunavailiable(lcd); //currently unused + 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 + mainmenu(lcd,pad); + } +} + + +void Menu::subcredits(N5110 &lcd, Gamepad &pad) //credits sub menu +{ + printf("Credits \n"); + lcd.clear(); + lcd.printString("Credits",22,0); //prints credits to screen + lcd.printString("Coded,Produced",0,1); + lcd.printString("+ Built by",10,2); + lcd.printString("Luke",30,3); + lcd.printString("Cartwright",13,4); + lcd.refresh(); //refresh buffer + menuflag=1; //sets flag + while (menuflag==1) { + if (pad.B_pressed()) { //go back menu + // printf("B pressed\n"); + printf("Main Menu selected\n"); + submenu=0; + wait_ms(200); //debounce + menuflag=0; //sets flag + } + } + if(submenu==0) { //back to main + mainmenu(lcd,pad); + } +} + + +//Private Methods-------------------------------------------------------------- +void Menu::printmainmenu(N5110 &lcd) //prints main menu +{ + printf("Printing Main Menu \n"); + lcd.clear(); //clears current buffer + lcd.drawRect(78,g_selecty,5,5,FILL_BLACK); //prints select box at y value + lcd.printString("MAIN MENU",3,0); //title print + //SUBMENU TITLES + lcd.printString("Waveforms",3,1); + lcd.printString("Instructions",3,2); + lcd.printString("Credits",3,3); + lcd.refresh(); //updates display +} +void Menu::printsubwaveforms(N5110 &lcd)//prints subwaveforms menu +{ + 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 + //SUBMENU TITLES + lcd.printString("Sine",3,1); + lcd.printString("Triangle",3,2); + lcd.printString("Square",3,3); + lcd.refresh(); //updates display +} + +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) //checks srolling +{ + int d=scroll_check(pad); + if(d != 0) { + if (d==5) { //N scrolls up + //printf("N \n"); //debug + g_selecty=g_selecty+8; //line size=8 + submenu++; + if (submenu > menusize) { //3 items in menu stops overflow + submenu = submenu-1; + g_selecty = g_selecty-8; + } + //printmainmenu(lcd); //reprints main + //prntf("SubMenu= %d\n", submenu); //debug + } + if (d==1) { //S scrolls down + //printf("S \n"); + g_selecty=g_selecty-8; + submenu=submenu-1; + if (submenu <=0) { //stops overflow + submenu = submenu+1; + g_selecty = g_selecty+8; + } + //printmainmenu(lcd); //reprints menu + //printf("SubMenu= %d\n", submenu); //debug + } + wait_ms(200); //debounce + return(1); + } else { + return(0); + } +} +int Menu::scroll_check (Gamepad &pad) +{ + return(pad.get_direction()); //checks for stick +} \ No newline at end of file