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: Front/Front.cpp
- Revision:
- 13:27300c533dd1
- Parent:
- 8:f305ea78b2b1
- Child:
- 14:9cfe0041cc4e
--- a/Front/Front.cpp Fri May 08 20:08:36 2020 +0000 +++ b/Front/Front.cpp Sat May 09 13:45:23 2020 +0000 @@ -75,27 +75,82 @@ void Front::frontrun(N5110 &lcd, Gamepad &pad, int submenu) { - frontsetup(lcd, pad, submenu); + frontsetup(lcd, pad, submenu, true); menuflag=1; + used=1; + a=17; + d=17; + s=17; + r=17; while (menuflag==1) { - if (pad.start_pressed()) { //go back menu - // printf("start pressed\n"); - printf("Waveforms Sub selected\n"); //debug - wait_ms(200); //debounce - menuflag=0; //sets flag + dir=pad.get_direction(); + if (dir!=dir_1) { + printf("dir =%d\n",dir); //debug + if(dir==3) { + used++; + if (used>4) { + used=4; + } + } + if (dir==7) { + used--; + if(used<1) { + used=1; + } + } + if (dir==1) { + if (used==1) { + a=incrament_adsr(used,a,1); + } + if (used==2) { + d=incrament_adsr(used,d,1); + } + if (used==3) { + s=incrament_adsr(used,s,1); + } + if (used==4) { + r=incrament_adsr(used,r,1); + } + } + + if (dir==5) { + if (used==1) { + a=incrament_adsr(used,a,-1); + } + if (used==2) { + d=incrament_adsr(used,d,-1); + } + if (used==3) { + s=incrament_adsr(used,s,-1); + } + if (used==4) { + r=incrament_adsr(used,r,-1); + } + } + + + if (pad.start_pressed()) { //go back menu + // printf("start pressed\n"); + printf("Waveforms Sub selected\n"); //debug + wait_ms(200); //debounce + menuflag=0; //sets flag + } + frontsetup(lcd,pad,submenu,false); + printsliders(lcd,a,d,s,r,used); + wait_ms(200); } + dir=dir_1; } } //PRIVATE----------------------------------------------------------------------- -void Front::frontsetup(N5110 &lcd, Gamepad &pad, int submenu) +void Front::frontsetup(N5110 &lcd, Gamepad &pad, int submenu, bool initial) { - a=17; //range from 1->35 - d=17; - s=17; - r=17; + if (initial==true) { + printsliders(lcd,17,17,17,17,1); + } lcd.clear(); lcd.printString("A D S R",3,5); printfader(lcd,3,3); @@ -104,17 +159,55 @@ printfader(lcd,39,3); lcd.drawRect(50,3,30,8,FILL_TRANSPARENT); printwav(lcd,submenu); - printsliders(lcd,a,d,s,r); lcd.refresh(); - + } -void Front::printsliders(N5110 &lcd, int a, int d, int s, int r) +void Front::printsliders(N5110 &lcd, int a, int d, int s, int r, int used) { - lcd.drawRect(3,37-a,5,2,FILL_BLACK); - lcd.drawRect(15,37-d,5,2,FILL_BLACK); - lcd.drawRect(27,37-s,5,2,FILL_BLACK); - lcd.drawRect(39,37-r,5,2,FILL_BLACK); + if(used==0) { + printslider(lcd,3,a,false); + printslider(lcd,15,d,false); + printslider(lcd,27,s,false); + printslider(lcd,39,r,false); + } + if(used==1) { + printslider(lcd,3,a,true); + printslider(lcd,15,d,false); + printslider(lcd,27,s,false); + printslider(lcd,39,r,false); + } + if(used==2) { + printslider(lcd,3,a,false); + printslider(lcd,15,d,true); + printslider(lcd,27,s,false); + printslider(lcd,39,r,false); + } + if(used==3) { + printslider(lcd,3,a,false); + printslider(lcd,15,d,false); + printslider(lcd,27,s,true); + printslider(lcd,39,r,false); + } + if(used==4) { + printslider(lcd,3,a,false); + printslider(lcd,15,d,false); + printslider(lcd,27,s,false); + printslider(lcd,39,r,true); + } + lcd.refresh(); } + +void Front::printslider(N5110 &lcd, int x_val, int y_val, bool use) +{ + if (use==true) { + lcd.drawRect(x_val,37-y_val,5,2,FILL_BLACK); + } + if (use==false) { + lcd.drawRect(x_val,37-y_val,5,1,FILL_BLACK); + } +} + + void Front::printfader(N5110 &lcd, int x, int y) { // x origin, y origin, rows, cols, sprite @@ -135,4 +228,21 @@ // x origin, y origin, rows, cols, sprite lcd.drawSprite(51,4,6,28,(int *)square_wav); } +} + +int Front::incrament_adsr(int used, int adsr, int ud) +{ + if (ud==1) { + adsr++; + if (adsr>35) { + adsr--; + } + } + if (ud==-1) { + adsr--; + if (adsr<1) { + adsr++; + } + } + return(adsr); } \ No newline at end of file