Two pushbuttons with two callbacks

Dependencies:   PinDetect mbed

Fork of Pushbutton_Debounce_Interrupt by jim hamblen

Revision:
1:768b8bd42e33
Parent:
0:cc87c48aa43c
diff -r cc87c48aa43c -r 768b8bd42e33 main.cpp
--- a/main.cpp	Tue Sep 20 14:06:28 2011 +0000
+++ b/main.cpp	Tue Jan 29 02:34:03 2013 +0000
@@ -8,34 +8,45 @@
 DigitalOut myled3(LED3);
 DigitalOut myled4(LED4);
 
-PinDetect pb(p8);
+PinDetect pb1(p8);
+PinDetect pb2(p7);
 // SPST Pushbutton debounced count demo using interrupts and callback
 // no external PullUp resistor needed
 // Pushbutton from P8 to GND.
+// Second Pushbutton from P7 to GND.
 // A pb hit generates an interrupt and activates the callback function
 // after the switch is debounced
 
 // Global count variable
 int volatile count=0;
 
-// Callback routine is interrupt activated by a debounced pb hit
-void pb_hit_callback (void) {
+// Callback routine is interrupt activated by a debounced pb1 hit
+void pb1_hit_callback (void) {
     count++;
     myled4 = count & 0x01;
     myled3 = (count & 0x02)>>1;
     myled2 = (count & 0x04)>>2;
 }
+// Callback routine is interrupt activated by a debounced pb2 hit
+void pb2_hit_callback (void) {
+    count--;
+    myled4 = count & 0x01;
+    myled3 = (count & 0x02)>>1;
+    myled2 = (count & 0x04)>>2;
+}
 int main() {
 
-    // Use internal pullup for pushbutton
-    pb.mode(PullUp);
+    // Use internal pullups for pushbutton
+    pb1.mode(PullUp);    
+    pb2.mode(PullUp);
     // Delay for initial pullup to take effect
     wait(.01);
-    // Setup Interrupt callback function for a pb hit
-    pb.attach_deasserted(&pb_hit_callback);
-    // Start sampling pb input using interrupts
-    pb.setSampleFrequency();
-
+    // Setup Interrupt callback functions for a pb hit
+    pb1.attach_deasserted(&pb1_hit_callback);
+    pb2.attach_deasserted(&pb2_hit_callback);
+    // Start sampling pb inputs using interrupts
+    pb1.setSampleFrequency();
+    pb2.setSampleFrequency();
     //Blink myled in main routine forever while responding to pb changes
     // via interrupts that activate the callback counter function
     while (1) {