A retro gaming programme, designed for use on a portable embedded system. Incorporates power saving techniques.
Dependencies: ConfigFile N5110 PowerControl beep mbed
Revision 15:ff3eb0091453, committed 2015-04-17
- Comitter:
- el13drt
- Date:
- Fri Apr 17 20:23:31 2015 +0000
- Parent:
- 14:c2c969e1c6e8
- Child:
- 16:93ae2f311fd8
- Commit message:
- pre switch
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
tower.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Fri Apr 17 16:12:40 2015 +0000 +++ b/main.cpp Fri Apr 17 20:23:31 2015 +0000 @@ -12,28 +12,6 @@ #include <ctime> #include <cstdlib> -Ticker timer;//timer to read state of buttons every 0.25 seconds - -int buttonFlagA; -int buttonFlagB; - -void timerExpiredA() -{ - if(buttonA != 0) { - buttonFlagA = 1; - actionButtons(); - } -} - -void timerExpiredB() -{ - if(buttonB != 0) { - buttonFlagB = 1; - actionButtons(); - } -} - - int main() { ledR = 1;//power LED on @@ -49,23 +27,31 @@ int mainOption = 0;//counter for main menu int exitOption = 0;//counter for exit menu - timer.attach(&timerExpired, 0.25);//checks state of buttons + buttonA.mode(PullDown); + buttonB.mode(PullDown); + + timer.attach(&timerExpiredA, 0.1);//checks state of buttonA + timer2.attach(&timerExpiredB, 0.1);//checks state of buttonB while(1) { drawMainMenu();//draws main menu mainMenu(mainOption);//presents main menu options // if 'Play Game' selected - if ((mainOption == 0)&&(buttonA == 1)) { + if ((mainOption == 0)&&(buttonFlagA)) { + buttonFlagA = 0; game(exitFlag, exitOption);//actual game } // if 'Scores' selected - if((mainOption == 1)&&(buttonA == 1)) { + if((mainOption == 1)&&(buttonFlagA)) { + buttonFlagA = 0; scores(); } // if 'option' selected - if((mainOption == 2)&&(buttonA == 1)) { + if((mainOption == 2)&&(buttonFlagA)) { + buttonFlagA = 0; optionsMenu(); } + sleep(); } }
--- a/tower.h Fri Apr 17 16:12:40 2015 +0000 +++ b/tower.h Fri Apr 17 20:23:31 2015 +0000 @@ -5,6 +5,10 @@ // VCC,SCE,RST,D/C,MOSI,SCLK,LED - set pins for LCD N5110 lcd(p7,p8,p9,p10,p11,p13,p22); +// timers to check state of buttons +Ticker timer;//buttonA +Ticker timer2;//buttonB + // create buzzer objecct Beep buzzer(p21); @@ -21,12 +25,15 @@ // connections for joystick InterruptIn joyButton(p17);//Interrupt for ISR - AnalogIn xPot(p15); AnalogIn yPot(p16); // Globabl Variables ///////////////////////// +// timer flags to check state of buttons +int buttonFlagA = 0; +int buttonFlagB = 0; + // flag for joystick reading int printFlag = 0; @@ -99,6 +106,21 @@ // create struct variable Joystick joystick; +void timerExpiredA() +{ + if(buttonA == 1) { + buttonFlagA = 1; + serial.printf("flagA set\n"); + } +} + +void timerExpiredB() +{ + if(buttonB == 1) { + buttonFlagB = 1; + serial.printf("flagB set\n"); + } +} // set seed/randomise initial co-Ordinates void randomise() @@ -419,32 +441,10 @@ lcd.refresh(); } -// BEEP/LED when button is closed -void actionButtons() -{ - buttonA.mode(PullDown); - buttonB.mode(PullDown); - - if (buttonA != 0) { - ledY = 1; - buzzer.beep(1000,0.2);//frequeny/duration - serial.printf("buttonA\n");//print for debugging - } else { - ledY = 0; - } - if (buttonB != 0) { - ledY = 1; - buzzer.beep(400,0.2);//frequency/duration - serial.printf("buttonB\n");//print for debugging - } else { - ledY = 0; - } -} - // presents main menu options void mainMenu(int& mainOption) { - actionButtons();//set audible/light for button + //actionButtons();//set audible/light for button // joystick selection if (printFlag) {//if flag set, clear flag and print joystick values to serial port @@ -554,7 +554,7 @@ // presents exit menu options void exitMenu(int& exitOption) { - actionButtons(); + //actionButtons(); if (printFlag) {//if flag set, clear flag and print joystick values to serial port printFlag = 0; @@ -657,7 +657,7 @@ // present difficulty options void difficultyMenu(int& subOption) { - actionButtons(); + //actionButtons(); // joystick selection if (printFlag) {//if flag set, clear flag,print joystick values @@ -729,7 +729,7 @@ // present sound FX options void soundFXMenu(int& fxOption) { - actionButtons(); + //actionButtons(); // joystick selection if (printFlag) {//if flag set, clear flag,print joystick values @@ -792,7 +792,7 @@ // actual game void game(int& exitFlag, int& exitOption) { - actionButtons(); + //actionButtons(); lcd.clear();//clears screen backGround();//draw background @@ -804,7 +804,7 @@ if (length <= 14) //ensure length is smaller than screen lcd.printString(buffer,3,0);//display - actionButtons(); + //actionButtons(); pixelNinja();//set character hazards();//initiates hazards hazardFall();//increments hazards towards floor @@ -887,7 +887,7 @@ // 'exit' option YES if((buttonA == 1)&&(exitOption == 0)) { //returns to menu - actionButtons(); + // actionButtons(); lcd.clear();//clears screen resetGame();//resets scores/objects exitFlag = 1;//sets exit flag @@ -913,7 +913,7 @@ // high scores screen void scores() { - actionButtons(); + //actionButtons(); lcd.clear();//clear screen backGround();//set background lcd.printString("High Scores",10,0);//title @@ -935,7 +935,7 @@ lcd.printString(highScore3,5,4);//display while(1) { - actionButtons();//select + // actionButtons();//select // back to menu if(buttonB == 1) { @@ -948,52 +948,59 @@ // options menu void optionsMenu() { - actionButtons(); - drawOptionsMenu();//draws options menu - // counters for navigation int option = 0; int subOption = 0; int fxOption = 0; + //actionButtons(); + drawOptionsMenu();//draws options menu + // counters for navigation while(1) { - actionButtons(); + //actionButtons(); optionsMenu(option);//presents options ////////////////////// difficulty menu //////////////////////////////////// - if ((option == 0)&&(buttonA == 1)) { - actionButtons(); + if ((option == 0)&&(buttonFlagA)) { + buttonFlagA = 0;//reset flag + //actionButtons(); drawDifficultyMenu();//draws difficulty menu while(1) { - actionButtons(); + // actionButtons(); difficultyMenu(subOption);//presents difficulty options - if(buttonB != 0) { - lcd.clear(); - break; + if(buttonFlagB) { + buttonFlagB = 0;//reset flag + lcd.clear();//clear screen + break;//return back } } + drawOptionsMenu(); } ///////////////////// sound FX menu ////////////////////////////////////// - if((option ==1)&&(buttonA !=0)) { - actionButtons(); + if((option ==1)&&(buttonFlagA)) { + buttonFlagA = 0;//reset flag + //actionButtons(); drawSoundFXMenu();//draw menu while(1) { - actionButtons(); + // actionButtons(); soundFXMenu(fxOption); // back to options menu - if(buttonB !=0) { - lcd.clear(); - break; + if(buttonFlagB) { + buttonFlagB = 0;//reset flag + lcd.clear();//clear screen + break;//return back } } + drawOptionsMenu(); } // back to mainmenu - if(buttonB !=0) { - lcd.clear(); - break; + if(buttonFlagB) { + buttonFlagB = 0;//reset flag + lcd.clear();//clear + break;//return back } } }