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/Menu.cpp
- Committer:
- lukeocarwright
- Date:
- 2020-05-08
- Revision:
- 12:7a399a476cfd
- Parent:
- 8:f305ea78b2b1
- Child:
- 13:27300c533dd1
File content as of revision 12:7a399a476cfd:
#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); submenu++; } if (s==-1) { printsubwaveforms(lcd); submenu--; } 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 return(-1); } 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 return(1); } wait_ms(200); //debounce } else { return(0); } } int Menu::scroll_check (Gamepad &pad) { return(pad.get_direction()); //checks for stick }