ELEC2645 (2019/20) / Mbed 2 deprecated el18loc_final

Dependencies:   mbed

Committer:
lukeocarwright
Date:
Tue May 05 16:46:01 2020 +0000
Revision:
8:f305ea78b2b1
Child:
12:7a399a476cfd
Added Sliders to Faders ready for GUI.

Who changed what in which revision?

UserRevisionLine numberNew 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 8:f305ea78b2b1 65 }
lukeocarwright 8:f305ea78b2b1 66 if (pad.A_pressed()) { //go back menu
lukeocarwright 8:f305ea78b2b1 67 // printf("A pressed\n");
lukeocarwright 8:f305ea78b2b1 68 printf("Submenu: %d selected\n", submenu); //debug
lukeocarwright 8:f305ea78b2b1 69 wait_ms(200); //debounce
lukeocarwright 8:f305ea78b2b1 70 menuflag=0; //sets flag
lukeocarwright 8:f305ea78b2b1 71 }
lukeocarwright 8:f305ea78b2b1 72 if (pad.B_pressed()) { //go back menu
lukeocarwright 8:f305ea78b2b1 73 // printf("B pressed\n");
lukeocarwright 8:f305ea78b2b1 74 printf("Main Menu selected\n"); //debug
lukeocarwright 8:f305ea78b2b1 75 submenu=0;
lukeocarwright 8:f305ea78b2b1 76 wait_ms(200); //debounce
lukeocarwright 8:f305ea78b2b1 77 menuflag=0; //sets flag
lukeocarwright 8:f305ea78b2b1 78 }
lukeocarwright 8:f305ea78b2b1 79 }
lukeocarwright 8:f305ea78b2b1 80
lukeocarwright 8:f305ea78b2b1 81 if(submenu==0) { //allows main selected
lukeocarwright 8:f305ea78b2b1 82 mainmenu(lcd,pad);
lukeocarwright 8:f305ea78b2b1 83 }
lukeocarwright 8:f305ea78b2b1 84 if(submenu>=1) { //allows waveform selected
lukeocarwright 8:f305ea78b2b1 85 front.frontrun(lcd,pad,submenu);
lukeocarwright 8:f305ea78b2b1 86 }
lukeocarwright 8:f305ea78b2b1 87 }
lukeocarwright 8:f305ea78b2b1 88
lukeocarwright 8:f305ea78b2b1 89
lukeocarwright 8:f305ea78b2b1 90 void Menu::subinstructions(N5110 &lcd, Gamepad &pad) //instruction sub
lukeocarwright 8:f305ea78b2b1 91 {
lukeocarwright 8:f305ea78b2b1 92 menuflag=1; //sets flag
lukeocarwright 8:f305ea78b2b1 93 printf("Instructions menu \n");
lukeocarwright 8:f305ea78b2b1 94 lcd.clear();
lukeocarwright 8:f305ea78b2b1 95 lcd.printString("Instructions:",3,0);
lukeocarwright 8:f305ea78b2b1 96 subunavailiable(lcd); //currently unused
lukeocarwright 8:f305ea78b2b1 97 while (menuflag==1) {
lukeocarwright 8:f305ea78b2b1 98 if (pad.B_pressed()) {
lukeocarwright 8:f305ea78b2b1 99 // printf("B pressed\n");
lukeocarwright 8:f305ea78b2b1 100 printf("Main Menu selected\n");
lukeocarwright 8:f305ea78b2b1 101 submenu=0;
lukeocarwright 8:f305ea78b2b1 102 wait_ms(200); //debounce
lukeocarwright 8:f305ea78b2b1 103 menuflag=0; //sets flag
lukeocarwright 8:f305ea78b2b1 104 }
lukeocarwright 8:f305ea78b2b1 105 }
lukeocarwright 8:f305ea78b2b1 106 if(submenu==0) { //allows main menu select
lukeocarwright 8:f305ea78b2b1 107 mainmenu(lcd,pad);
lukeocarwright 8:f305ea78b2b1 108 }
lukeocarwright 8:f305ea78b2b1 109 }
lukeocarwright 8:f305ea78b2b1 110
lukeocarwright 8:f305ea78b2b1 111
lukeocarwright 8:f305ea78b2b1 112 void Menu::subcredits(N5110 &lcd, Gamepad &pad) //credits sub menu
lukeocarwright 8:f305ea78b2b1 113 {
lukeocarwright 8:f305ea78b2b1 114 printf("Credits \n");
lukeocarwright 8:f305ea78b2b1 115 lcd.clear();
lukeocarwright 8:f305ea78b2b1 116 lcd.printString("Credits",22,0); //prints credits to screen
lukeocarwright 8:f305ea78b2b1 117 lcd.printString("Coded,Produced",0,1);
lukeocarwright 8:f305ea78b2b1 118 lcd.printString("+ Built by",10,2);
lukeocarwright 8:f305ea78b2b1 119 lcd.printString("Luke",30,3);
lukeocarwright 8:f305ea78b2b1 120 lcd.printString("Cartwright",13,4);
lukeocarwright 8:f305ea78b2b1 121 lcd.refresh(); //refresh buffer
lukeocarwright 8:f305ea78b2b1 122 menuflag=1; //sets flag
lukeocarwright 8:f305ea78b2b1 123 while (menuflag==1) {
lukeocarwright 8:f305ea78b2b1 124 if (pad.B_pressed()) { //go back menu
lukeocarwright 8:f305ea78b2b1 125 // printf("B pressed\n");
lukeocarwright 8:f305ea78b2b1 126 printf("Main Menu selected\n");
lukeocarwright 8:f305ea78b2b1 127 submenu=0;
lukeocarwright 8:f305ea78b2b1 128 wait_ms(200); //debounce
lukeocarwright 8:f305ea78b2b1 129 menuflag=0; //sets flag
lukeocarwright 8:f305ea78b2b1 130 }
lukeocarwright 8:f305ea78b2b1 131 }
lukeocarwright 8:f305ea78b2b1 132 if(submenu==0) { //back to main
lukeocarwright 8:f305ea78b2b1 133 mainmenu(lcd,pad);
lukeocarwright 8:f305ea78b2b1 134 }
lukeocarwright 8:f305ea78b2b1 135 }
lukeocarwright 8:f305ea78b2b1 136
lukeocarwright 8:f305ea78b2b1 137
lukeocarwright 8:f305ea78b2b1 138 //Private Methods--------------------------------------------------------------
lukeocarwright 8:f305ea78b2b1 139 void Menu::printmainmenu(N5110 &lcd) //prints main menu
lukeocarwright 8:f305ea78b2b1 140 {
lukeocarwright 8:f305ea78b2b1 141 printf("Printing Main Menu \n");
lukeocarwright 8:f305ea78b2b1 142 lcd.clear(); //clears current buffer
lukeocarwright 8:f305ea78b2b1 143 lcd.drawRect(78,g_selecty,5,5,FILL_BLACK); //prints select box at y value
lukeocarwright 8:f305ea78b2b1 144 lcd.printString("MAIN MENU",3,0); //title print
lukeocarwright 8:f305ea78b2b1 145 //SUBMENU TITLES
lukeocarwright 8:f305ea78b2b1 146 lcd.printString("Waveforms",3,1);
lukeocarwright 8:f305ea78b2b1 147 lcd.printString("Instructions",3,2);
lukeocarwright 8:f305ea78b2b1 148 lcd.printString("Credits",3,3);
lukeocarwright 8:f305ea78b2b1 149 lcd.refresh(); //updates display
lukeocarwright 8:f305ea78b2b1 150 }
lukeocarwright 8:f305ea78b2b1 151 void Menu::printsubwaveforms(N5110 &lcd)//prints subwaveforms menu
lukeocarwright 8:f305ea78b2b1 152 {
lukeocarwright 8:f305ea78b2b1 153 printf("Printing Waveforms menu\n");
lukeocarwright 8:f305ea78b2b1 154 lcd.clear(); //clears current buffer
lukeocarwright 8:f305ea78b2b1 155 lcd.drawRect(78,g_selecty,5,5,FILL_BLACK); //prints select box at y value
lukeocarwright 8:f305ea78b2b1 156 lcd.printString("WAVEFORMS:",3,0); //title print
lukeocarwright 8:f305ea78b2b1 157 //SUBMENU TITLES
lukeocarwright 8:f305ea78b2b1 158 lcd.printString("Sine",3,1);
lukeocarwright 8:f305ea78b2b1 159 lcd.printString("Triangle",3,2);
lukeocarwright 8:f305ea78b2b1 160 lcd.printString("Square",3,3);
lukeocarwright 8:f305ea78b2b1 161 lcd.refresh(); //updates display
lukeocarwright 8:f305ea78b2b1 162 }
lukeocarwright 8:f305ea78b2b1 163
lukeocarwright 8:f305ea78b2b1 164 void Menu::subunavailiable(N5110 &lcd) //for currently undeveloped menu
lukeocarwright 8:f305ea78b2b1 165 {
lukeocarwright 8:f305ea78b2b1 166 printf("sub unavailiable\n");
lukeocarwright 8:f305ea78b2b1 167 lcd.printString("Unavailiable",3,1);
lukeocarwright 8:f305ea78b2b1 168 lcd.refresh();
lukeocarwright 8:f305ea78b2b1 169 }
lukeocarwright 8:f305ea78b2b1 170
lukeocarwright 8:f305ea78b2b1 171 int Menu::scroll(N5110 &lcd, Gamepad &pad) //checks srolling
lukeocarwright 8:f305ea78b2b1 172 {
lukeocarwright 8:f305ea78b2b1 173 int d=scroll_check(pad);
lukeocarwright 8:f305ea78b2b1 174 if(d != 0) {
lukeocarwright 8:f305ea78b2b1 175 if (d==5) { //N scrolls up
lukeocarwright 8:f305ea78b2b1 176 //printf("N \n"); //debug
lukeocarwright 8:f305ea78b2b1 177 g_selecty=g_selecty+8; //line size=8
lukeocarwright 8:f305ea78b2b1 178 submenu++;
lukeocarwright 8:f305ea78b2b1 179 if (submenu > menusize) { //3 items in menu stops overflow
lukeocarwright 8:f305ea78b2b1 180 submenu = submenu-1;
lukeocarwright 8:f305ea78b2b1 181 g_selecty = g_selecty-8;
lukeocarwright 8:f305ea78b2b1 182 }
lukeocarwright 8:f305ea78b2b1 183 //printmainmenu(lcd); //reprints main
lukeocarwright 8:f305ea78b2b1 184 //prntf("SubMenu= %d\n", submenu); //debug
lukeocarwright 8:f305ea78b2b1 185 }
lukeocarwright 8:f305ea78b2b1 186 if (d==1) { //S scrolls down
lukeocarwright 8:f305ea78b2b1 187 //printf("S \n");
lukeocarwright 8:f305ea78b2b1 188 g_selecty=g_selecty-8;
lukeocarwright 8:f305ea78b2b1 189 submenu=submenu-1;
lukeocarwright 8:f305ea78b2b1 190 if (submenu <=0) { //stops overflow
lukeocarwright 8:f305ea78b2b1 191 submenu = submenu+1;
lukeocarwright 8:f305ea78b2b1 192 g_selecty = g_selecty+8;
lukeocarwright 8:f305ea78b2b1 193 }
lukeocarwright 8:f305ea78b2b1 194 //printmainmenu(lcd); //reprints menu
lukeocarwright 8:f305ea78b2b1 195 //printf("SubMenu= %d\n", submenu); //debug
lukeocarwright 8:f305ea78b2b1 196 }
lukeocarwright 8:f305ea78b2b1 197 wait_ms(200); //debounce
lukeocarwright 8:f305ea78b2b1 198 return(1);
lukeocarwright 8:f305ea78b2b1 199 } else {
lukeocarwright 8:f305ea78b2b1 200 return(0);
lukeocarwright 8:f305ea78b2b1 201 }
lukeocarwright 8:f305ea78b2b1 202 }
lukeocarwright 8:f305ea78b2b1 203 int Menu::scroll_check (Gamepad &pad)
lukeocarwright 8:f305ea78b2b1 204 {
lukeocarwright 8:f305ea78b2b1 205 return(pad.get_direction()); //checks for stick
lukeocarwright 8:f305ea78b2b1 206 }