Dependents:   IF-SmartClock

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?

UserRevisionLine numberNew 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 }