Dependencies: MMA8452 N5110 PowerControl beep mbed
Clock.h@8:aebb468546c5, 2015-05-09 (annotated)
- Committer:
- stevenle93
- Date:
- Sat May 09 22:59:15 2015 +0000
- Revision:
- 8:aebb468546c5
- Parent:
- 5:c0a58a6916f2
- Child:
- 9:522f9311ff4b
Change: detach the tickers after the game.;
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 | 5:c0a58a6916f2 | 13 | #include "beep.h" |
stevenle93 | 2:57d1ed1f0ad3 | 14 | |
stevenle93 | 3:1974db5993ef | 15 | Ticker timer; |
stevenle93 | 2:57d1ed1f0ad3 | 16 | int CClock; |
stevenle93 | 3:1974db5993ef | 17 | DigitalOut led(p22); |
stevenle93 | 3:1974db5993ef | 18 | BusOut leds(LED1, LED2, LED3, LED4); |
stevenle93 | 5:c0a58a6916f2 | 19 | Beep beep(p26); |
stevenle93 | 3:1974db5993ef | 20 | |
stevenle93 | 8:aebb468546c5 | 21 | int timerFlag = 0; |
stevenle93 | 8:aebb468546c5 | 22 | |
stevenle93 | 8:aebb468546c5 | 23 | void timerExpired() |
stevenle93 | 8:aebb468546c5 | 24 | { |
stevenle93 | 8:aebb468546c5 | 25 | timerFlag = 1; //Set flag for timer of the countdown |
stevenle93 | 8:aebb468546c5 | 26 | } |
stevenle93 | 8:aebb468546c5 | 27 | |
stevenle93 | 8:aebb468546c5 | 28 | class Clock |
stevenle93 | 8:aebb468546c5 | 29 | { |
stevenle93 | 8:aebb468546c5 | 30 | public: |
stevenle93 | 8:aebb468546c5 | 31 | void flashLed(); |
stevenle93 | 8:aebb468546c5 | 32 | void knightrunner(); |
stevenle93 | 8:aebb468546c5 | 33 | void countDown(); |
stevenle93 | 8:aebb468546c5 | 34 | void timeout(); |
stevenle93 | 8:aebb468546c5 | 35 | }; |
stevenle93 | 8:aebb468546c5 | 36 | |
stevenle93 | 8:aebb468546c5 | 37 | void Clock::knightrunner() |
stevenle93 | 3:1974db5993ef | 38 | { |
stevenle93 | 3:1974db5993ef | 39 | int t = 5; |
stevenle93 | 8:aebb468546c5 | 40 | while(t > 0) { |
stevenle93 | 3:1974db5993ef | 41 | |
stevenle93 | 3:1974db5993ef | 42 | for(int i=1; i<=8; i=i*2) { |
stevenle93 | 3:1974db5993ef | 43 | leds = i; |
stevenle93 | 3:1974db5993ef | 44 | wait (0.05); |
stevenle93 | 3:1974db5993ef | 45 | } |
stevenle93 | 3:1974db5993ef | 46 | for(int j=4; j>=2; j=j/2) { |
stevenle93 | 3:1974db5993ef | 47 | leds = j; |
stevenle93 | 3:1974db5993ef | 48 | wait(0.05); |
stevenle93 | 3:1974db5993ef | 49 | } |
stevenle93 | 3:1974db5993ef | 50 | t = t - 2; |
stevenle93 | 3:1974db5993ef | 51 | } |
stevenle93 | 3:1974db5993ef | 52 | } |
stevenle93 | 3:1974db5993ef | 53 | |
stevenle93 | 8:aebb468546c5 | 54 | void Clock::flashLed() |
stevenle93 | 3:1974db5993ef | 55 | { |
stevenle93 | 3:1974db5993ef | 56 | led =!led; |
stevenle93 | 3:1974db5993ef | 57 | } |
stevenle93 | 3:1974db5993ef | 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 | CClock = CClock - 1; |
stevenle93 | 3:1974db5993ef | 70 | char Clockbuffer[14]; |
stevenle93 | 3:1974db5993ef | 71 | sprintf(Clockbuffer," %d", CClock); |
stevenle93 | 3:1974db5993ef | 72 | lcd.printString(Clockbuffer,39,2); |
stevenle93 | 5:c0a58a6916f2 | 73 | beep.beep(1000,0.2); |
stevenle93 | 5:c0a58a6916f2 | 74 | wait(0.1); |
stevenle93 | 5:c0a58a6916f2 | 75 | beep.beep(10000,0.2); |
stevenle93 | 5:c0a58a6916f2 | 76 | wait(0.1); |
stevenle93 | 5:c0a58a6916f2 | 77 | beep.beep(600,0.2); |
stevenle93 | 3:1974db5993ef | 78 | flashLed(); |
stevenle93 | 2:57d1ed1f0ad3 | 79 | } |
stevenle93 | 3:1974db5993ef | 80 | } |
stevenle93 | 3:1974db5993ef | 81 | } |
stevenle93 | 3:1974db5993ef | 82 | |
stevenle93 | 3:1974db5993ef | 83 | void Clock::timeout() |
stevenle93 | 3:1974db5993ef | 84 | { |
stevenle93 | 3:1974db5993ef | 85 | lcd.clear(); |
stevenle93 | 3:1974db5993ef | 86 | lcd.printString("Time Out",16,3); |
stevenle93 | 3:1974db5993ef | 87 | knightrunner(); |
stevenle93 | 3:1974db5993ef | 88 | CClock = CClock - 1; |
stevenle93 | 3:1974db5993ef | 89 | leds = 0; |
stevenle93 | 2:57d1ed1f0ad3 | 90 | } |
stevenle93 | 2:57d1ed1f0ad3 | 91 | |
stevenle93 | 2:57d1ed1f0ad3 | 92 | #endif |