Implemented polling code to check button press and change speed of button flashing.

Fork of digitalInPolling_sample by William Marsh

Files at this revision

API Documentation at this revision

Comitter:
natgovor
Date:
Thu Feb 01 12:24:02 2018 +0000
Parent:
2:cd1fe8c29793
Commit message:
Implemented polling code to check button press and change the speed of button flashing.

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r cd1fe8c29793 -r 17c6a539bd7c main.cpp
--- a/main.cpp	Tue Jan 16 18:02:44 2018 +0000
+++ b/main.cpp	Thu Feb 01 12:24:02 2018 +0000
@@ -49,15 +49,42 @@
 /*  ---- Main function (default thread) ----
     Note that if this thread completes, nothing else works
  */
+enum states { flashing, timeToCheck }; // flsh thread states
 int main() {
-    led = 1 ;  // Initially off
+    int speed = 200;
+    states state = flashing;
+    int cycleCounter = 0;
+    led = 0; // LED is on by default
+    
     pollT.start(callback(polling));
 
     while(true) {
-        if (pressEvent) {
-            pressEvent = 0 ; // clear the event variable
-            led = !led ;
+        Thread::wait(100);
+        cycleCounter++;
+        
+        if (cycleCounter == 1) {
+            state = timeToCheck;
         }
-        Thread::wait(100) ;
+        
+        switch (state) {
+            case flashing:
+                if (cycleCounter == speed / 100) {
+                    led = !led;
+                    cycleCounter = 0;
+                }
+                break;
+            case timeToCheck:
+                if (pressEvent) {
+                    cycleCounter = 0;
+                    pressEvent = 0 ; // clear the event variable
+                    if (speed < 1000) {
+                        speed = speed + 200;
+                    } else {
+                        speed = 200;
+                    }
+                }
+                state = flashing;
+                break;
+        }
     }
 }
\ No newline at end of file