A retro gaming programme, designed for use on a portable embedded system. Incorporates power saving techniques.

Dependencies:   ConfigFile N5110 PowerControl beep mbed

Files at this revision

API Documentation at this revision

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
         }
     }
 }