Code-Basis für Programm zum Taster-Entprellen

Dependencies:   SB1602E mbed

Fork of Laser-Distance by Stefan Kummer

Revision:
12:b436e51e86a8
Parent:
11:b68be9bd5754
Child:
13:87f9e63b2cfa
--- a/main.cpp	Mon Oct 01 09:17:01 2018 +0000
+++ b/main.cpp	Mon Oct 01 11:21:17 2018 +0000
@@ -3,7 +3,7 @@
 #define USE_I2C_2V8
 
 DigitalOut myled(P0_8); // 7=rot, 8=grün, 9=blau
-InterruptIn sw_o(P0_12);
+DigitalIn sw_o(P0_12);
 InterruptIn sw_b(P0_13);
 InterruptIn sw_g(P0_14);
 
@@ -12,8 +12,6 @@
 
 int count_o, count_b, count_g = 0;
 
-void orange();
-
 void blue(){
     count_b++;
     }
@@ -26,21 +24,22 @@
     sw_o.mode(PullUp);
     sw_b.mode(PullUp);
     sw_g.mode(PullUp);
-    sw_o.fall(&orange);
+
     sw_b.fall(&blue);
     sw_g.fall(&green);
+    wait(0.2);
     
+    int sw_o_old = 0;
+    int sw_o_new;
     
     lcd.printf(0, "Red Blue Green\r");    //  Parameter von printf auf LCD: Zeilennummer (0 or 1), string
     while(1) {
-
-        lcd.printf(1, "%d   %d   %d", count_o, count_b, count_g);
+        sw_o_new = sw_o;
+        if ((sw_o_new==0) && (sw_o_old==1)) count_o++;  // fallende Flanke: old=1 & new=0
+        sw_o_old = sw_o_new;
+        lcd.printf(1,1, "%d   %d   %d", count_o, count_b, count_g);
 
         myled = !myled;
 
     }
-}
-
-void orange() {
-    count_o++;
 }
\ No newline at end of file