Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
DigitakClock.cpp@1:3c9a2c4733fa, 2015-06-26 (annotated)
- Committer:
- takashikojo
- Date:
- Fri Jun 26 08:00:03 2015 +0000
- Revision:
- 1:3c9a2c4733fa
- Parent:
- 0:ae969dd370ab
- Child:
- 2:c374349d4902
Add blink mode
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| takashikojo | 0:ae969dd370ab | 1 | #include "mbed.h" |
| takashikojo | 0:ae969dd370ab | 2 | #include "DigitalClock.h" |
| takashikojo | 0:ae969dd370ab | 3 | #if 0 |
| takashikojo | 0:ae969dd370ab | 4 | FourDigitLED led( |
| takashikojo | 0:ae969dd370ab | 5 | /* Segment 0 - 6, Dot */ D11,D6, D3, D1, D0, D10,D4, D2 , |
| takashikojo | 0:ae969dd370ab | 6 | /* Digit 1 - 4 */ D5, D7, D9, D12 |
| takashikojo | 0:ae969dd370ab | 7 | ) ; |
| takashikojo | 0:ae969dd370ab | 8 | #endif |
| takashikojo | 0:ae969dd370ab | 9 | DigitalClock::DigitalClock (PinName seg0, PinName seg1, PinName seg2, PinName seg3, |
| takashikojo | 0:ae969dd370ab | 10 | PinName seg4, PinName seg5, PinName seg6, PinName dot, |
| takashikojo | 0:ae969dd370ab | 11 | PinName digit0, PinName digit1, PinName digit2, PinName digit3 |
| takashikojo | 0:ae969dd370ab | 12 | ) : |
| takashikojo | 0:ae969dd370ab | 13 | FourDigitLED(seg0, seg1, seg2, seg3, seg4, seg5, seg6, dot, digit0, digit1, digit2, digit3) |
| takashikojo | 0:ae969dd370ab | 14 | { |
| takashikojo | 0:ae969dd370ab | 15 | maxHour = 24 ; |
| takashikojo | 1:3c9a2c4733fa | 16 | blink = false ; |
| takashikojo | 0:ae969dd370ab | 17 | } ; |
| takashikojo | 0:ae969dd370ab | 18 | |
| takashikojo | 0:ae969dd370ab | 19 | DigitalClock::~DigitalClock(void){ } ; |
| takashikojo | 0:ae969dd370ab | 20 | |
| takashikojo | 0:ae969dd370ab | 21 | void DigitalClock::start(void) { |
| takashikojo | 0:ae969dd370ab | 22 | Second.attach(this, &DigitalClock::flashLED, 1.0) ; |
| takashikojo | 0:ae969dd370ab | 23 | } |
| takashikojo | 0:ae969dd370ab | 24 | |
| takashikojo | 0:ae969dd370ab | 25 | void DigitalClock::stop(void) { |
| takashikojo | 0:ae969dd370ab | 26 | Second.detach() ; |
| takashikojo | 0:ae969dd370ab | 27 | } |
| takashikojo | 0:ae969dd370ab | 28 | |
| takashikojo | 0:ae969dd370ab | 29 | bool DigitalClock::setLED(int h, int m) { |
| takashikojo | 0:ae969dd370ab | 30 | if(((h >= 0)&&(h<maxHour)) && ((m >= 0)&&(m<60))){ |
| takashikojo | 0:ae969dd370ab | 31 | setNum(3, h/10) ; |
| takashikojo | 0:ae969dd370ab | 32 | setNum(2, h%10) ; |
| takashikojo | 0:ae969dd370ab | 33 | setNum(1, m/10) ; |
| takashikojo | 0:ae969dd370ab | 34 | setNum(0, m%10) ; |
| takashikojo | 0:ae969dd370ab | 35 | return true ; |
| takashikojo | 0:ae969dd370ab | 36 | } |
| takashikojo | 0:ae969dd370ab | 37 | return false ; |
| takashikojo | 0:ae969dd370ab | 38 | } |
| takashikojo | 0:ae969dd370ab | 39 | |
| takashikojo | 0:ae969dd370ab | 40 | void DigitalClock::flashLED(void) { |
| takashikojo | 0:ae969dd370ab | 41 | #define JST (9*60*60) |
| takashikojo | 0:ae969dd370ab | 42 | struct tm local; |
| takashikojo | 0:ae969dd370ab | 43 | time_t ctTime; |
| takashikojo | 1:3c9a2c4733fa | 44 | |
| takashikojo | 1:3c9a2c4733fa | 45 | basePulse = ! basePulse ; |
| takashikojo | 1:3c9a2c4733fa | 46 | if(blink && basePulse){ |
| takashikojo | 1:3c9a2c4733fa | 47 | setNum(3, -1) ; setNum(2, -1) ; setNum(1, -1) ; setNum(0, -1) ; |
| takashikojo | 1:3c9a2c4733fa | 48 | return ; |
| takashikojo | 1:3c9a2c4733fa | 49 | } |
| takashikojo | 1:3c9a2c4733fa | 50 | |
| takashikojo | 0:ae969dd370ab | 51 | ctTime = time(NULL) + JST ; |
| takashikojo | 0:ae969dd370ab | 52 | local = *localtime(&ctTime); |
| takashikojo | 0:ae969dd370ab | 53 | setLED(local.tm_hour, local.tm_min) ; |
| takashikojo | 0:ae969dd370ab | 54 | } |
| takashikojo | 0:ae969dd370ab | 55 | |
| takashikojo | 1:3c9a2c4733fa | 56 | void DigitalClock::setBlink(bool sw) |
| takashikojo | 1:3c9a2c4733fa | 57 | { |
| takashikojo | 1:3c9a2c4733fa | 58 | blink = sw ; |
| takashikojo | 1:3c9a2c4733fa | 59 | } |
| takashikojo | 1:3c9a2c4733fa | 60 | |
| takashikojo | 0:ae969dd370ab | 61 | int DigitalClock::setNum(int d, int n){ |
| takashikojo | 0:ae969dd370ab | 62 | return FourDigitLED::setNum(d, n) ; |
| takashikojo | 0:ae969dd370ab | 63 | } |
| takashikojo | 0:ae969dd370ab | 64 | |
| takashikojo | 0:ae969dd370ab | 65 | int DigitalClock::setDot(int d, bool n){ |
| takashikojo | 0:ae969dd370ab | 66 | return FourDigitLED::setDot(d, n) ; |
| takashikojo | 0:ae969dd370ab | 67 | } |