Blinky example with two pushbuttons

Dependencies:   mbed

Fork of mbed_blinky_low_power by Silicon Labs

Revision:
3:82208e3277e8
Parent:
0:b0927d62ef70
--- a/main.cpp	Wed Apr 29 21:23:49 2015 +0000
+++ b/main.cpp	Mon May 18 10:06:54 2015 +0000
@@ -1,15 +1,51 @@
 #include "mbed.h"
- 
-DigitalOut myled(LED1);
+
+DigitalOut myled0(LED0); 
+DigitalOut myled1(LED1);
+InterruptIn pb0(SW0);
+InterruptIn pb1(SW1);
+
 LowPowerTicker toggleTicker;
 
+float new_freq = 0.2f;
+bool  ledblink = true;
+
+
+// Callback for toggler
 void ledToggler(void) {
-    myled = !myled;
+    myled0 = !myled0 * ledblink;
+    myled1 = !myled1 * (1-ledblink);
+}
+
+// Callback for pushbutton interrupt
+void pb0_handler() {
+    ledblink = !ledblink;
+}
+
+void pb1_handler() {
+    if (ledblink) {
+        new_freq = new_freq/2;
+    }
+    else {
+        new_freq = new_freq*2;
+    }    
 }
  
 int main() {
-    toggleTicker.attach(&ledToggler, 0.2f);
+    float freq = 0.0f;
+    //Enable the PB-handler
+    pb0.rise(NULL);
+    pb0.fall(&pb0_handler);
+    
+    pb1.rise(NULL);
+    pb1.fall(&pb1_handler);
+    
     while(1) {
+        if (freq != new_freq) {
+            toggleTicker.detach();
+            toggleTicker.attach(&ledToggler, new_freq);
+            freq = new_freq;
+        }
         sleep();
     }
 }
\ No newline at end of file