LED Digital Clock
Diff: DigitakClock.cpp
- Revision:
- 3:ad3301aff314
- Parent:
- 2:c374349d4902
- Child:
- 4:3b57eeb896a2
--- a/DigitakClock.cpp Wed Jul 01 22:04:21 2015 +0000 +++ b/DigitakClock.cpp Sun Jul 05 11:33:40 2015 +0000 @@ -24,7 +24,7 @@ blink = 0 ; optionActive = false ; optionCount = 0 ; - optNum = 0 ; + updateLED = true ; for(int j=0; j<AC_OPTION_NUM; j++) for(int i=0; i<4; i++)optVal[j][i] = 0x0 ; } ; @@ -32,11 +32,11 @@ DigitalClock::~DigitalClock(void){ } ; void DigitalClock::start(void) { - Second.attach(this, &DigitalClock::flashLED, 0.15) ; + updateLED = true ; } void DigitalClock::stop(void) { - Second.detach() ; + updateLED = false ; } bool DigitalClock::setLED(int h, int m) { @@ -73,17 +73,7 @@ if(optionActive) { optionCount ++ ; if(optionCount < optNum){ - SET_PTN(optionCount) ; /* - if (((optionCount)% optNum) == 0){ - for(int i=0; i<4; i++)setPtn(i, optVal[0][i], 0x7f) ; - } else if(((optionCount) % optNum) == 1){ - for(int i=0; i<4; i++)setPtn(i, optVal[1][i], 0x7f) ; - } else if(((optionCount/2) % 8) == 2){ - for(int i=0; i<4; i++)setPtn(i, optVal[2][i], 0x7f) ; - } else if((((optionCount/2) % 8) == 3) && (optVal[3][0] != 0x0)) { - for(int i=0; i<4; i++)setPtn(i, optVal[3][i], 0x7f) ; - } else setLED(local.tm_hour, local.tm_min) ; - } else*/ + SET_PTN(optionCount) ; } else { setLED(local.tm_hour, local.tm_min) ; } @@ -92,6 +82,7 @@ } else setLED(local.tm_hour, local.tm_min) ; } + void DigitalClock::setBlink(bool sw) { blink = sw ; @@ -103,4 +94,17 @@ for(int j=0; j<4; j++)optVal[index][j] = v[j] ; optTimes[index] = times ; optNum = max(optNum, index+1) ; +} + +static int pollCount = 0 ; +void DigitalClock::poll(void) +{ +#define PER_200mSEC(count)((count%200)==0) +#define PER_5mSEC(count) ((count%5)==0) + + pollCount++ ; + if(updateLED && PER_200mSEC(pollCount)) + flashLED() ; + if(PER_5mSEC(pollCount)) + scanDigit() ; } \ No newline at end of file