LED Digital Clock

Dependents:   IF-SmartClock

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