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
Clock.h@9:522f9311ff4b, 2015-05-10 (annotated)
- 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?
User | Revision | Line number | New 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 |