Dependencies: MMA8452 N5110 PowerControl beep mbed
Clock.h@3:1974db5993ef, 2015-05-04 (annotated)
- Committer:
- stevenle93
- Date:
- Mon May 04 15:55:32 2015 +0000
- Revision:
- 3:1974db5993ef
- Parent:
- 2:57d1ed1f0ad3
- Child:
- 5:c0a58a6916f2
The changes include: FSM for game menu, gamerule() has three difficulties, difference Ticker for clock count down and time interval for reading sensor data.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
stevenle93 | 2:57d1ed1f0ad3 | 1 | /** |
stevenle93 | 2:57d1ed1f0ad3 | 2 | @ file Clock.h |
stevenle93 | 2:57d1ed1f0ad3 | 3 | |
stevenle93 | 2:57d1ed1f0ad3 | 4 | @ brief Header file of a count down clock containing Ticker on RTC and display time on N5110 Nokia Screen |
stevenle93 | 2:57d1ed1f0ad3 | 5 | */ |
stevenle93 | 2:57d1ed1f0ad3 | 6 | |
stevenle93 | 2:57d1ed1f0ad3 | 7 | #ifndef CLOCK_H |
stevenle93 | 2:57d1ed1f0ad3 | 8 | #define CLOCK_H |
stevenle93 | 2:57d1ed1f0ad3 | 9 | |
stevenle93 | 2:57d1ed1f0ad3 | 10 | #include "mbed.h" |
stevenle93 | 2:57d1ed1f0ad3 | 11 | #include "N5110.h" |
stevenle93 | 2:57d1ed1f0ad3 | 12 | #include "MMA8452.h" |
stevenle93 | 2:57d1ed1f0ad3 | 13 | |
stevenle93 | 3:1974db5993ef | 14 | Ticker timer; |
stevenle93 | 2:57d1ed1f0ad3 | 15 | int CClock; |
stevenle93 | 3:1974db5993ef | 16 | DigitalOut led(p22); |
stevenle93 | 3:1974db5993ef | 17 | BusOut leds(LED1, LED2, LED3, LED4); |
stevenle93 | 3:1974db5993ef | 18 | |
stevenle93 | 3:1974db5993ef | 19 | void knightrunner() |
stevenle93 | 3:1974db5993ef | 20 | { |
stevenle93 | 3:1974db5993ef | 21 | int t = 5; |
stevenle93 | 3:1974db5993ef | 22 | while(t > 0){ |
stevenle93 | 3:1974db5993ef | 23 | |
stevenle93 | 3:1974db5993ef | 24 | for(int i=1; i<=8; i=i*2) { |
stevenle93 | 3:1974db5993ef | 25 | leds = i; |
stevenle93 | 3:1974db5993ef | 26 | wait (0.05); |
stevenle93 | 3:1974db5993ef | 27 | } |
stevenle93 | 3:1974db5993ef | 28 | for(int j=4; j>=2; j=j/2) { |
stevenle93 | 3:1974db5993ef | 29 | leds = j; |
stevenle93 | 3:1974db5993ef | 30 | wait(0.05); |
stevenle93 | 3:1974db5993ef | 31 | } |
stevenle93 | 3:1974db5993ef | 32 | t = t - 2; |
stevenle93 | 3:1974db5993ef | 33 | } |
stevenle93 | 3:1974db5993ef | 34 | } |
stevenle93 | 3:1974db5993ef | 35 | |
stevenle93 | 3:1974db5993ef | 36 | void flashLed() |
stevenle93 | 3:1974db5993ef | 37 | { |
stevenle93 | 3:1974db5993ef | 38 | led =!led; |
stevenle93 | 3:1974db5993ef | 39 | } |
stevenle93 | 3:1974db5993ef | 40 | |
stevenle93 | 3:1974db5993ef | 41 | int timerFlag = 0; |
stevenle93 | 3:1974db5993ef | 42 | |
stevenle93 | 3:1974db5993ef | 43 | void timerExpired() |
stevenle93 | 3:1974db5993ef | 44 | { |
stevenle93 | 3:1974db5993ef | 45 | timerFlag = 1; //Set flag for timer of the countdown |
stevenle93 | 3:1974db5993ef | 46 | } |
stevenle93 | 2:57d1ed1f0ad3 | 47 | |
stevenle93 | 2:57d1ed1f0ad3 | 48 | class Clock |
stevenle93 | 2:57d1ed1f0ad3 | 49 | { |
stevenle93 | 2:57d1ed1f0ad3 | 50 | private: |
stevenle93 | 2:57d1ed1f0ad3 | 51 | |
stevenle93 | 2:57d1ed1f0ad3 | 52 | Ticker timer; |
stevenle93 | 2:57d1ed1f0ad3 | 53 | |
stevenle93 | 2:57d1ed1f0ad3 | 54 | public: |
stevenle93 | 3:1974db5993ef | 55 | void countDown(); |
stevenle93 | 3:1974db5993ef | 56 | void timeout(); |
stevenle93 | 2:57d1ed1f0ad3 | 57 | }; |
stevenle93 | 2:57d1ed1f0ad3 | 58 | |
stevenle93 | 3:1974db5993ef | 59 | void Clock::countDown() |
stevenle93 | 2:57d1ed1f0ad3 | 60 | { |
stevenle93 | 3:1974db5993ef | 61 | if (timerFlag) { |
stevenle93 | 3:1974db5993ef | 62 | timerFlag = 0; |
stevenle93 | 3:1974db5993ef | 63 | if (CClock > 10) { |
stevenle93 | 3:1974db5993ef | 64 | CClock = CClock - 1; |
stevenle93 | 3:1974db5993ef | 65 | char Clockbuffer[14]; |
stevenle93 | 3:1974db5993ef | 66 | sprintf(Clockbuffer," %d", CClock); |
stevenle93 | 2:57d1ed1f0ad3 | 67 | lcd.printString(Clockbuffer,33,2); |
stevenle93 | 3:1974db5993ef | 68 | } else if (CClock > 0) { |
stevenle93 | 3:1974db5993ef | 69 | //lcd.clear(); |
stevenle93 | 3:1974db5993ef | 70 | CClock = CClock - 1; |
stevenle93 | 3:1974db5993ef | 71 | char Clockbuffer[14]; |
stevenle93 | 3:1974db5993ef | 72 | sprintf(Clockbuffer," %d", CClock); |
stevenle93 | 3:1974db5993ef | 73 | lcd.printString(Clockbuffer,39,2); |
stevenle93 | 3:1974db5993ef | 74 | flashLed(); |
stevenle93 | 2:57d1ed1f0ad3 | 75 | } |
stevenle93 | 3:1974db5993ef | 76 | } |
stevenle93 | 3:1974db5993ef | 77 | } |
stevenle93 | 3:1974db5993ef | 78 | |
stevenle93 | 3:1974db5993ef | 79 | void Clock::timeout() |
stevenle93 | 3:1974db5993ef | 80 | { |
stevenle93 | 3:1974db5993ef | 81 | lcd.clear(); |
stevenle93 | 3:1974db5993ef | 82 | lcd.printString("Time Out",16,3); |
stevenle93 | 3:1974db5993ef | 83 | knightrunner(); |
stevenle93 | 3:1974db5993ef | 84 | CClock = CClock - 1; |
stevenle93 | 3:1974db5993ef | 85 | leds = 0; |
stevenle93 | 2:57d1ed1f0ad3 | 86 | } |
stevenle93 | 2:57d1ed1f0ad3 | 87 | |
stevenle93 | 2:57d1ed1f0ad3 | 88 | #endif |