Dependents:
IF-SmartClock
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
|
}
|