6.4 Motor mittels Tasten vor-, rückwärts, Stop laufen lassen und Poti benützen um die Geschwindigkeit einzustellen. Erweitert um Abstandssensor wo vor einem Hindernis stoppt.

Dependencies:   HC_SR04_Ultrasonic_Library mbed

Fork of 1-06-03-Uebung by smd.iotkit1.ch

Revision:
2:e11bc343329d
Parent:
1:128f2b08a419
--- a/main.cpp	Wed Apr 29 18:27:11 2015 +0000
+++ b/main.cpp	Wed Apr 29 18:38:30 2015 +0000
@@ -1,8 +1,10 @@
-/** 6.3 Motor mittels Tasten vor-, rückwärts, Stop laufen lassen und Poti benützen um die Geschwindigkeit einzustellen.
+/** 6.4 Motor mittels Tasten vor-, rückwärts, Stop laufen lassen und Poti benützen um die Geschwindigkeit einzustellen.
+    Erweitert um Abstandssensor wo vor einem Hindernis stoppt.
 */
 
 #include "mbed.h"
 #include "Motor.h"
+#include "ultrasonic.h"
 
 // vor-/rueckwaerts - beide = Notstop
 DigitalIn button1( A1 );
@@ -14,8 +16,25 @@
 // Motor an M01
 Motor m1(D3, D2, D4); // PWM, Vorwaerts, Rueckwarts
 
+// aktueller Abstand                                        
+int distance;                                                                                
+
+void dist(int d)
+{
+    // Abhandlung der Entfernung
+    printf("Entfernung %dmm\n", d);
+    distance = d;
+}
+
+ultrasonic mu(D5, D6, .1, 1, &dist);    // setzt den Trigger Pin auf D5, den Echo Pin auf D6
+                                        // liefert all 0.1 Sekunden einen neuen Wert mit einem
+                                        // Timeout von 1 Sekunden. Fuer die Ausgabe des Wertes
+                                        // wird die Funktion dist aufgerufen.
+
+/** Hauptprogramm */
 int main()
 {
+    mu.startUpdates();                  // Start der Abstandsmessung
     while (true) 
     {
         if  ( button1 == 0 && button2 == 0 )
@@ -24,6 +43,12 @@
             m1.speed( poti );
         else if ( button2 == 0 )
             m1.speed( poti * -1.0f );
+
+        mu.checkDistance();             // Pooling vom Distanzmesser, sollte moeglichst oft erfolgen
+        // 70 mm vor einem Hindernis - Stopp!
+        if  ( distance < 70 )
+            m1.speed( 0.0f );
+                       
         wait(0.2f);
     }
 }
\ No newline at end of file