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@12:7a399a476cfd, 2020-05-08 (annotated)
- Committer:
- lukeocarwright
- Date:
- Fri May 08 20:08:36 2020 +0000
- Revision:
- 12:7a399a476cfd
- Parent:
- 8:f305ea78b2b1
- Child:
- 13:27300c533dd1
Added suitable title screen
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lukeocarwright | 8:f305ea78b2b1 | 1 | #include "mbed.h" |
lukeocarwright | 8:f305ea78b2b1 | 2 | #include "Menu.h" |
lukeocarwright | 8:f305ea78b2b1 | 3 | |
lukeocarwright | 8:f305ea78b2b1 | 4 | //objects |
lukeocarwright | 8:f305ea78b2b1 | 5 | Front front; |
lukeocarwright | 8:f305ea78b2b1 | 6 | |
lukeocarwright | 8:f305ea78b2b1 | 7 | //constructor/destructor |
lukeocarwright | 8:f305ea78b2b1 | 8 | Menu::Menu() |
lukeocarwright | 8:f305ea78b2b1 | 9 | { |
lukeocarwright | 8:f305ea78b2b1 | 10 | } |
lukeocarwright | 8:f305ea78b2b1 | 11 | Menu::~Menu() |
lukeocarwright | 8:f305ea78b2b1 | 12 | { |
lukeocarwright | 8:f305ea78b2b1 | 13 | } |
lukeocarwright | 8:f305ea78b2b1 | 14 | |
lukeocarwright | 8:f305ea78b2b1 | 15 | // PUBLIC methods--------------------------------------------------------------- |
lukeocarwright | 8:f305ea78b2b1 | 16 | void Menu::mainmenu(N5110 &lcd, Gamepad &pad) //main menu |
lukeocarwright | 8:f305ea78b2b1 | 17 | { |
lukeocarwright | 8:f305ea78b2b1 | 18 | menusize=3; |
lukeocarwright | 8:f305ea78b2b1 | 19 | g_selecty=10; |
lukeocarwright | 8:f305ea78b2b1 | 20 | submenu=1; //initialises starting point |
lukeocarwright | 8:f305ea78b2b1 | 21 | printmainmenu(lcd); //prints menu to display |
lukeocarwright | 8:f305ea78b2b1 | 22 | int menuflag=1; //sets flag |
lukeocarwright | 8:f305ea78b2b1 | 23 | while (menuflag==1) { |
lukeocarwright | 8:f305ea78b2b1 | 24 | s=scroll(lcd, pad); |
lukeocarwright | 8:f305ea78b2b1 | 25 | if (s==1) { |
lukeocarwright | 8:f305ea78b2b1 | 26 | printmainmenu(lcd); |
lukeocarwright | 8:f305ea78b2b1 | 27 | } |
lukeocarwright | 8:f305ea78b2b1 | 28 | if ( pad.A_pressed()) { //selects |
lukeocarwright | 8:f305ea78b2b1 | 29 | // printf("A pressed\n"); |
lukeocarwright | 8:f305ea78b2b1 | 30 | printf("SubMenu %d selected\n", submenu); |
lukeocarwright | 8:f305ea78b2b1 | 31 | wait_ms(200); //debounce |
lukeocarwright | 8:f305ea78b2b1 | 32 | menuflag=0; |
lukeocarwright | 8:f305ea78b2b1 | 33 | } |
lukeocarwright | 8:f305ea78b2b1 | 34 | } |
lukeocarwright | 8:f305ea78b2b1 | 35 | while (1) { |
lukeocarwright | 8:f305ea78b2b1 | 36 | if (submenu==1) { //waveform submenu launch |
lukeocarwright | 8:f305ea78b2b1 | 37 | subwaveforms(lcd, pad, submenu); |
lukeocarwright | 8:f305ea78b2b1 | 38 | break; |
lukeocarwright | 8:f305ea78b2b1 | 39 | } |
lukeocarwright | 8:f305ea78b2b1 | 40 | if (submenu==2) { //instructions submenu launch |
lukeocarwright | 8:f305ea78b2b1 | 41 | subinstructions(lcd,pad); |
lukeocarwright | 8:f305ea78b2b1 | 42 | break; |
lukeocarwright | 8:f305ea78b2b1 | 43 | } |
lukeocarwright | 8:f305ea78b2b1 | 44 | if (submenu==3) { //credits subemnu launch |
lukeocarwright | 8:f305ea78b2b1 | 45 | subcredits(lcd, pad); |
lukeocarwright | 8:f305ea78b2b1 | 46 | break; |
lukeocarwright | 8:f305ea78b2b1 | 47 | } |
lukeocarwright | 8:f305ea78b2b1 | 48 | } |
lukeocarwright | 8:f305ea78b2b1 | 49 | } |
lukeocarwright | 8:f305ea78b2b1 | 50 | |
lukeocarwright | 8:f305ea78b2b1 | 51 | void Menu::subwaveforms(N5110 &lcd, Gamepad &pad, int submenu) //waveforms sub |
lukeocarwright | 8:f305ea78b2b1 | 52 | { |
lukeocarwright | 8:f305ea78b2b1 | 53 | menusize=3; |
lukeocarwright | 8:f305ea78b2b1 | 54 | g_selecty=10; |
lukeocarwright | 8:f305ea78b2b1 | 55 | submenu=1; //initialises starting point |
lukeocarwright | 8:f305ea78b2b1 | 56 | menuflag=1; //resets flag |
lukeocarwright | 8:f305ea78b2b1 | 57 | printf("Waveforms menu \n"); |
lukeocarwright | 8:f305ea78b2b1 | 58 | lcd.clear(); //clear buffer |
lukeocarwright | 8:f305ea78b2b1 | 59 | lcd.printString("Waveforms:",3,0); |
lukeocarwright | 8:f305ea78b2b1 | 60 | printsubwaveforms(lcd); |
lukeocarwright | 8:f305ea78b2b1 | 61 | while (menuflag==1) { //looped |
lukeocarwright | 8:f305ea78b2b1 | 62 | s=scroll(lcd,pad); |
lukeocarwright | 8:f305ea78b2b1 | 63 | if (s==1) { |
lukeocarwright | 8:f305ea78b2b1 | 64 | printsubwaveforms(lcd); |
lukeocarwright | 12:7a399a476cfd | 65 | submenu++; |
lukeocarwright | 8:f305ea78b2b1 | 66 | } |
lukeocarwright | 12:7a399a476cfd | 67 | if (s==-1) { |
lukeocarwright | 12:7a399a476cfd | 68 | printsubwaveforms(lcd); |
lukeocarwright | 12:7a399a476cfd | 69 | submenu--; |
lukeocarwright | 12:7a399a476cfd | 70 | } |
lukeocarwright | 8:f305ea78b2b1 | 71 | if (pad.A_pressed()) { //go back menu |
lukeocarwright | 8:f305ea78b2b1 | 72 | // printf("A pressed\n"); |
lukeocarwright | 8:f305ea78b2b1 | 73 | printf("Submenu: %d selected\n", submenu); //debug |
lukeocarwright | 8:f305ea78b2b1 | 74 | wait_ms(200); //debounce |
lukeocarwright | 8:f305ea78b2b1 | 75 | menuflag=0; //sets flag |
lukeocarwright | 8:f305ea78b2b1 | 76 | } |
lukeocarwright | 8:f305ea78b2b1 | 77 | if (pad.B_pressed()) { //go back menu |
lukeocarwright | 8:f305ea78b2b1 | 78 | // printf("B pressed\n"); |
lukeocarwright | 8:f305ea78b2b1 | 79 | printf("Main Menu selected\n"); //debug |
lukeocarwright | 8:f305ea78b2b1 | 80 | submenu=0; |
lukeocarwright | 8:f305ea78b2b1 | 81 | wait_ms(200); //debounce |
lukeocarwright | 8:f305ea78b2b1 | 82 | menuflag=0; //sets flag |
lukeocarwright | 8:f305ea78b2b1 | 83 | } |
lukeocarwright | 8:f305ea78b2b1 | 84 | } |
lukeocarwright | 8:f305ea78b2b1 | 85 | |
lukeocarwright | 8:f305ea78b2b1 | 86 | if(submenu==0) { //allows main selected |
lukeocarwright | 8:f305ea78b2b1 | 87 | mainmenu(lcd,pad); |
lukeocarwright | 8:f305ea78b2b1 | 88 | } |
lukeocarwright | 8:f305ea78b2b1 | 89 | if(submenu>=1) { //allows waveform selected |
lukeocarwright | 8:f305ea78b2b1 | 90 | front.frontrun(lcd,pad,submenu); |
lukeocarwright | 8:f305ea78b2b1 | 91 | } |
lukeocarwright | 8:f305ea78b2b1 | 92 | } |
lukeocarwright | 8:f305ea78b2b1 | 93 | |
lukeocarwright | 8:f305ea78b2b1 | 94 | |
lukeocarwright | 8:f305ea78b2b1 | 95 | void Menu::subinstructions(N5110 &lcd, Gamepad &pad) //instruction sub |
lukeocarwright | 8:f305ea78b2b1 | 96 | { |
lukeocarwright | 8:f305ea78b2b1 | 97 | menuflag=1; //sets flag |
lukeocarwright | 8:f305ea78b2b1 | 98 | printf("Instructions menu \n"); |
lukeocarwright | 8:f305ea78b2b1 | 99 | lcd.clear(); |
lukeocarwright | 8:f305ea78b2b1 | 100 | lcd.printString("Instructions:",3,0); |
lukeocarwright | 8:f305ea78b2b1 | 101 | subunavailiable(lcd); //currently unused |
lukeocarwright | 8:f305ea78b2b1 | 102 | while (menuflag==1) { |
lukeocarwright | 8:f305ea78b2b1 | 103 | if (pad.B_pressed()) { |
lukeocarwright | 8:f305ea78b2b1 | 104 | // printf("B pressed\n"); |
lukeocarwright | 8:f305ea78b2b1 | 105 | printf("Main Menu selected\n"); |
lukeocarwright | 8:f305ea78b2b1 | 106 | submenu=0; |
lukeocarwright | 8:f305ea78b2b1 | 107 | wait_ms(200); //debounce |
lukeocarwright | 8:f305ea78b2b1 | 108 | menuflag=0; //sets flag |
lukeocarwright | 8:f305ea78b2b1 | 109 | } |
lukeocarwright | 8:f305ea78b2b1 | 110 | } |
lukeocarwright | 8:f305ea78b2b1 | 111 | if(submenu==0) { //allows main menu select |
lukeocarwright | 8:f305ea78b2b1 | 112 | mainmenu(lcd,pad); |
lukeocarwright | 8:f305ea78b2b1 | 113 | } |
lukeocarwright | 8:f305ea78b2b1 | 114 | } |
lukeocarwright | 8:f305ea78b2b1 | 115 | |
lukeocarwright | 8:f305ea78b2b1 | 116 | |
lukeocarwright | 8:f305ea78b2b1 | 117 | void Menu::subcredits(N5110 &lcd, Gamepad &pad) //credits sub menu |
lukeocarwright | 8:f305ea78b2b1 | 118 | { |
lukeocarwright | 8:f305ea78b2b1 | 119 | printf("Credits \n"); |
lukeocarwright | 8:f305ea78b2b1 | 120 | lcd.clear(); |
lukeocarwright | 8:f305ea78b2b1 | 121 | lcd.printString("Credits",22,0); //prints credits to screen |
lukeocarwright | 8:f305ea78b2b1 | 122 | lcd.printString("Coded,Produced",0,1); |
lukeocarwright | 8:f305ea78b2b1 | 123 | lcd.printString("+ Built by",10,2); |
lukeocarwright | 8:f305ea78b2b1 | 124 | lcd.printString("Luke",30,3); |
lukeocarwright | 8:f305ea78b2b1 | 125 | lcd.printString("Cartwright",13,4); |
lukeocarwright | 8:f305ea78b2b1 | 126 | lcd.refresh(); //refresh buffer |
lukeocarwright | 8:f305ea78b2b1 | 127 | menuflag=1; //sets flag |
lukeocarwright | 8:f305ea78b2b1 | 128 | while (menuflag==1) { |
lukeocarwright | 8:f305ea78b2b1 | 129 | if (pad.B_pressed()) { //go back menu |
lukeocarwright | 8:f305ea78b2b1 | 130 | // printf("B pressed\n"); |
lukeocarwright | 8:f305ea78b2b1 | 131 | printf("Main Menu selected\n"); |
lukeocarwright | 8:f305ea78b2b1 | 132 | submenu=0; |
lukeocarwright | 8:f305ea78b2b1 | 133 | wait_ms(200); //debounce |
lukeocarwright | 8:f305ea78b2b1 | 134 | menuflag=0; //sets flag |
lukeocarwright | 8:f305ea78b2b1 | 135 | } |
lukeocarwright | 8:f305ea78b2b1 | 136 | } |
lukeocarwright | 8:f305ea78b2b1 | 137 | if(submenu==0) { //back to main |
lukeocarwright | 8:f305ea78b2b1 | 138 | mainmenu(lcd,pad); |
lukeocarwright | 8:f305ea78b2b1 | 139 | } |
lukeocarwright | 8:f305ea78b2b1 | 140 | } |
lukeocarwright | 8:f305ea78b2b1 | 141 | |
lukeocarwright | 8:f305ea78b2b1 | 142 | |
lukeocarwright | 8:f305ea78b2b1 | 143 | //Private Methods-------------------------------------------------------------- |
lukeocarwright | 8:f305ea78b2b1 | 144 | void Menu::printmainmenu(N5110 &lcd) //prints main menu |
lukeocarwright | 8:f305ea78b2b1 | 145 | { |
lukeocarwright | 8:f305ea78b2b1 | 146 | printf("Printing Main Menu \n"); |
lukeocarwright | 8:f305ea78b2b1 | 147 | lcd.clear(); //clears current buffer |
lukeocarwright | 8:f305ea78b2b1 | 148 | lcd.drawRect(78,g_selecty,5,5,FILL_BLACK); //prints select box at y value |
lukeocarwright | 8:f305ea78b2b1 | 149 | lcd.printString("MAIN MENU",3,0); //title print |
lukeocarwright | 8:f305ea78b2b1 | 150 | //SUBMENU TITLES |
lukeocarwright | 8:f305ea78b2b1 | 151 | lcd.printString("Waveforms",3,1); |
lukeocarwright | 8:f305ea78b2b1 | 152 | lcd.printString("Instructions",3,2); |
lukeocarwright | 8:f305ea78b2b1 | 153 | lcd.printString("Credits",3,3); |
lukeocarwright | 8:f305ea78b2b1 | 154 | lcd.refresh(); //updates display |
lukeocarwright | 8:f305ea78b2b1 | 155 | } |
lukeocarwright | 8:f305ea78b2b1 | 156 | void Menu::printsubwaveforms(N5110 &lcd)//prints subwaveforms menu |
lukeocarwright | 8:f305ea78b2b1 | 157 | { |
lukeocarwright | 8:f305ea78b2b1 | 158 | printf("Printing Waveforms menu\n"); |
lukeocarwright | 8:f305ea78b2b1 | 159 | lcd.clear(); //clears current buffer |
lukeocarwright | 8:f305ea78b2b1 | 160 | lcd.drawRect(78,g_selecty,5,5,FILL_BLACK); //prints select box at y value |
lukeocarwright | 8:f305ea78b2b1 | 161 | lcd.printString("WAVEFORMS:",3,0); //title print |
lukeocarwright | 8:f305ea78b2b1 | 162 | //SUBMENU TITLES |
lukeocarwright | 8:f305ea78b2b1 | 163 | lcd.printString("Sine",3,1); |
lukeocarwright | 8:f305ea78b2b1 | 164 | lcd.printString("Triangle",3,2); |
lukeocarwright | 8:f305ea78b2b1 | 165 | lcd.printString("Square",3,3); |
lukeocarwright | 8:f305ea78b2b1 | 166 | lcd.refresh(); //updates display |
lukeocarwright | 8:f305ea78b2b1 | 167 | } |
lukeocarwright | 8:f305ea78b2b1 | 168 | |
lukeocarwright | 8:f305ea78b2b1 | 169 | void Menu::subunavailiable(N5110 &lcd) //for currently undeveloped menu |
lukeocarwright | 8:f305ea78b2b1 | 170 | { |
lukeocarwright | 8:f305ea78b2b1 | 171 | printf("sub unavailiable\n"); |
lukeocarwright | 8:f305ea78b2b1 | 172 | lcd.printString("Unavailiable",3,1); |
lukeocarwright | 8:f305ea78b2b1 | 173 | lcd.refresh(); |
lukeocarwright | 8:f305ea78b2b1 | 174 | } |
lukeocarwright | 8:f305ea78b2b1 | 175 | |
lukeocarwright | 8:f305ea78b2b1 | 176 | int Menu::scroll(N5110 &lcd, Gamepad &pad) //checks srolling |
lukeocarwright | 8:f305ea78b2b1 | 177 | { |
lukeocarwright | 8:f305ea78b2b1 | 178 | int d=scroll_check(pad); |
lukeocarwright | 8:f305ea78b2b1 | 179 | if(d != 0) { |
lukeocarwright | 8:f305ea78b2b1 | 180 | if (d==5) { //N scrolls up |
lukeocarwright | 8:f305ea78b2b1 | 181 | //printf("N \n"); //debug |
lukeocarwright | 8:f305ea78b2b1 | 182 | g_selecty=g_selecty+8; //line size=8 |
lukeocarwright | 8:f305ea78b2b1 | 183 | submenu++; |
lukeocarwright | 8:f305ea78b2b1 | 184 | if (submenu > menusize) { //3 items in menu stops overflow |
lukeocarwright | 8:f305ea78b2b1 | 185 | submenu = submenu-1; |
lukeocarwright | 8:f305ea78b2b1 | 186 | g_selecty = g_selecty-8; |
lukeocarwright | 8:f305ea78b2b1 | 187 | } |
lukeocarwright | 8:f305ea78b2b1 | 188 | //printmainmenu(lcd); //reprints main |
lukeocarwright | 8:f305ea78b2b1 | 189 | //prntf("SubMenu= %d\n", submenu); //debug |
lukeocarwright | 12:7a399a476cfd | 190 | return(-1); |
lukeocarwright | 8:f305ea78b2b1 | 191 | } |
lukeocarwright | 8:f305ea78b2b1 | 192 | if (d==1) { //S scrolls down |
lukeocarwright | 8:f305ea78b2b1 | 193 | //printf("S \n"); |
lukeocarwright | 8:f305ea78b2b1 | 194 | g_selecty=g_selecty-8; |
lukeocarwright | 8:f305ea78b2b1 | 195 | submenu=submenu-1; |
lukeocarwright | 8:f305ea78b2b1 | 196 | if (submenu <=0) { //stops overflow |
lukeocarwright | 8:f305ea78b2b1 | 197 | submenu = submenu+1; |
lukeocarwright | 8:f305ea78b2b1 | 198 | g_selecty = g_selecty+8; |
lukeocarwright | 8:f305ea78b2b1 | 199 | } |
lukeocarwright | 8:f305ea78b2b1 | 200 | //printmainmenu(lcd); //reprints menu |
lukeocarwright | 8:f305ea78b2b1 | 201 | //printf("SubMenu= %d\n", submenu); //debug |
lukeocarwright | 12:7a399a476cfd | 202 | return(1); |
lukeocarwright | 8:f305ea78b2b1 | 203 | } |
lukeocarwright | 8:f305ea78b2b1 | 204 | wait_ms(200); //debounce |
lukeocarwright | 12:7a399a476cfd | 205 | |
lukeocarwright | 8:f305ea78b2b1 | 206 | } else { |
lukeocarwright | 8:f305ea78b2b1 | 207 | return(0); |
lukeocarwright | 8:f305ea78b2b1 | 208 | } |
lukeocarwright | 8:f305ea78b2b1 | 209 | } |
lukeocarwright | 8:f305ea78b2b1 | 210 | int Menu::scroll_check (Gamepad &pad) |
lukeocarwright | 8:f305ea78b2b1 | 211 | { |
lukeocarwright | 8:f305ea78b2b1 | 212 | return(pad.get_direction()); //checks for stick |
lukeocarwright | 8:f305ea78b2b1 | 213 | } |