Overview: The project is simple interactive game which utilized accelerometer to reading real time data and convert data into score. The project has one main cpp file and four header files. Four header files contain functions and variables to run the project.

Dependencies:   MMA8452 N5110 PowerControl beep mbed

Committer:
stevenle93
Date:
Sun May 10 17:21:39 2015 +0000
Revision:
9:522f9311ff4b
Parent:
8:aebb468546c5
Changes: all header file are documented, changing in debounce function of all the buttons, little change with condition of putting mbed into sleep mode.;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
stevenle93 2:57d1ed1f0ad3 1 /**
stevenle93 9:522f9311ff4b 2 @file Clock.h
stevenle93 9:522f9311ff4b 3 @brief Header file of a count down clock containing Ticker on RTC and display time on N5110 Nokia Screen
stevenle93 9:522f9311ff4b 4 @brief Revision 1.0
stevenle93 9:522f9311ff4b 5 @author Huynh Minh Tuan Le
stevenle93 9:522f9311ff4b 6 @date April 2015
stevenle93 2:57d1ed1f0ad3 7 */
stevenle93 2:57d1ed1f0ad3 8
stevenle93 2:57d1ed1f0ad3 9 #ifndef CLOCK_H
stevenle93 2:57d1ed1f0ad3 10 #define CLOCK_H
stevenle93 2:57d1ed1f0ad3 11
stevenle93 2:57d1ed1f0ad3 12 #include "mbed.h"
stevenle93 2:57d1ed1f0ad3 13 #include "N5110.h"
stevenle93 2:57d1ed1f0ad3 14 #include "MMA8452.h"
stevenle93 5:c0a58a6916f2 15 #include "beep.h"
stevenle93 2:57d1ed1f0ad3 16
stevenle93 9:522f9311ff4b 17 Ticker timer; ///<Ticker object for the count down clock. Called as a timer
stevenle93 9:522f9311ff4b 18 int CClock; ///<A variable for storing clock value in seconds.
stevenle93 9:522f9311ff4b 19 /**
stevenle93 9:522f9311ff4b 20 @namespace Flashing led.
stevenle93 9:522f9311ff4b 21 @brief A led to give a notification when the game is in last 10s.
stevenle93 9:522f9311ff4b 22 */
stevenle93 9:522f9311ff4b 23 DigitalOut led(p22); ///<A variable of the flashing led.
stevenle93 9:522f9311ff4b 24 /**
stevenle93 9:522f9311ff4b 25 @namespace Knightrunner leds.
stevenle93 9:522f9311ff4b 26 */
stevenle93 9:522f9311ff4b 27 BusOut leds(LED1, LED2, LED3, LED4); ///<A variable for outputing a set of four on-board leds.
stevenle93 9:522f9311ff4b 28 /**
stevenle93 9:522f9311ff4b 29 @namespace Beep sound.
stevenle93 9:522f9311ff4b 30 */
stevenle93 9:522f9311ff4b 31 Beep beep(p26); ///<An output analgoue signal of a piezzo buzzer.
stevenle93 3:1974db5993ef 32
stevenle93 9:522f9311ff4b 33 int timerFlag = 0; ///<A flag for timer ticker object.
stevenle93 8:aebb468546c5 34
stevenle93 9:522f9311ff4b 35 void timerExpired() ///Function of setting flag for timer.
stevenle93 8:aebb468546c5 36 {
stevenle93 8:aebb468546c5 37 timerFlag = 1; //Set flag for timer of the countdown
stevenle93 8:aebb468546c5 38 }
stevenle93 8:aebb468546c5 39
stevenle93 9:522f9311ff4b 40 ///Clock Class
stevenle93 8:aebb468546c5 41 class Clock
stevenle93 8:aebb468546c5 42 {
stevenle93 8:aebb468546c5 43 public:
stevenle93 9:522f9311ff4b 44 /**
stevenle93 9:522f9311ff4b 45 * The function that makes a LED flash.
stevenle93 9:522f9311ff4b 46 */
stevenle93 8:aebb468546c5 47 void flashLed();
stevenle93 9:522f9311ff4b 48 /**
stevenle93 9:522f9311ff4b 49 * The function that display LEDs on the embed.
stevenle93 9:522f9311ff4b 50 */
stevenle93 8:aebb468546c5 51 void knightrunner();
stevenle93 9:522f9311ff4b 52 /**
stevenle93 9:522f9311ff4b 53 * The count down function occur during the game.
stevenle93 9:522f9311ff4b 54 * The clock start from 60s to 0s.
stevenle93 9:522f9311ff4b 55 * In the last 10s of the clock, the function will flash an LED and generate alerting sound.
stevenle93 9:522f9311ff4b 56 */
stevenle93 8:aebb468546c5 57 void countDown();
stevenle93 9:522f9311ff4b 58 /**
stevenle93 9:522f9311ff4b 59 * The function that display "Time Out" message on the Nokia screen
stevenle93 9:522f9311ff4b 60 * and run funtion knightrunner.
stevenle93 9:522f9311ff4b 61 */
stevenle93 8:aebb468546c5 62 void timeout();
stevenle93 8:aebb468546c5 63 };
stevenle93 8:aebb468546c5 64
stevenle93 8:aebb468546c5 65 void Clock::knightrunner()
stevenle93 3:1974db5993ef 66 {
stevenle93 3:1974db5993ef 67 int t = 5;
stevenle93 8:aebb468546c5 68 while(t > 0) {
stevenle93 3:1974db5993ef 69
stevenle93 3:1974db5993ef 70 for(int i=1; i<=8; i=i*2) {
stevenle93 3:1974db5993ef 71 leds = i;
stevenle93 3:1974db5993ef 72 wait (0.05);
stevenle93 3:1974db5993ef 73 }
stevenle93 3:1974db5993ef 74 for(int j=4; j>=2; j=j/2) {
stevenle93 3:1974db5993ef 75 leds = j;
stevenle93 3:1974db5993ef 76 wait(0.05);
stevenle93 3:1974db5993ef 77 }
stevenle93 3:1974db5993ef 78 t = t - 2;
stevenle93 3:1974db5993ef 79 }
stevenle93 3:1974db5993ef 80 }
stevenle93 3:1974db5993ef 81
stevenle93 8:aebb468546c5 82 void Clock::flashLed()
stevenle93 3:1974db5993ef 83 {
stevenle93 3:1974db5993ef 84 led =!led;
stevenle93 3:1974db5993ef 85 }
stevenle93 3:1974db5993ef 86
stevenle93 3:1974db5993ef 87 void Clock::countDown()
stevenle93 2:57d1ed1f0ad3 88 {
stevenle93 3:1974db5993ef 89 if (timerFlag) {
stevenle93 3:1974db5993ef 90 timerFlag = 0;
stevenle93 3:1974db5993ef 91 if (CClock > 10) {
stevenle93 3:1974db5993ef 92 CClock = CClock - 1;
stevenle93 3:1974db5993ef 93 char Clockbuffer[14];
stevenle93 3:1974db5993ef 94 sprintf(Clockbuffer," %d", CClock);
stevenle93 2:57d1ed1f0ad3 95 lcd.printString(Clockbuffer,33,2);
stevenle93 3:1974db5993ef 96 } else if (CClock > 0) {
stevenle93 3:1974db5993ef 97 CClock = CClock - 1;
stevenle93 3:1974db5993ef 98 char Clockbuffer[14];
stevenle93 3:1974db5993ef 99 sprintf(Clockbuffer," %d", CClock);
stevenle93 3:1974db5993ef 100 lcd.printString(Clockbuffer,39,2);
stevenle93 5:c0a58a6916f2 101 beep.beep(1000,0.2);
stevenle93 5:c0a58a6916f2 102 wait(0.1);
stevenle93 5:c0a58a6916f2 103 beep.beep(10000,0.2);
stevenle93 5:c0a58a6916f2 104 wait(0.1);
stevenle93 5:c0a58a6916f2 105 beep.beep(600,0.2);
stevenle93 3:1974db5993ef 106 flashLed();
stevenle93 2:57d1ed1f0ad3 107 }
stevenle93 3:1974db5993ef 108 }
stevenle93 3:1974db5993ef 109 }
stevenle93 3:1974db5993ef 110
stevenle93 3:1974db5993ef 111 void Clock::timeout()
stevenle93 3:1974db5993ef 112 {
stevenle93 3:1974db5993ef 113 lcd.clear();
stevenle93 3:1974db5993ef 114 lcd.printString("Time Out",16,3);
stevenle93 3:1974db5993ef 115 knightrunner();
stevenle93 3:1974db5993ef 116 CClock = CClock - 1;
stevenle93 3:1974db5993ef 117 leds = 0;
stevenle93 2:57d1ed1f0ad3 118 }
stevenle93 2:57d1ed1f0ad3 119
stevenle93 2:57d1ed1f0ad3 120 #endif