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

Committer:
stefan1691
Date:
Wed Apr 29 18:38:30 2015 +0000
Revision:
2:e11bc343329d
Parent:
1:128f2b08a419
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.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
stefan1691 2:e11bc343329d 1 /** 6.4 Motor mittels Tasten vor-, rückwärts, Stop laufen lassen und Poti benützen um die Geschwindigkeit einzustellen.
stefan1691 2:e11bc343329d 2 Erweitert um Abstandssensor wo vor einem Hindernis stoppt.
marcel1691 0:5d64a3e741ec 3 */
marcel1691 0:5d64a3e741ec 4
marcel1691 0:5d64a3e741ec 5 #include "mbed.h"
marcel1691 0:5d64a3e741ec 6 #include "Motor.h"
stefan1691 2:e11bc343329d 7 #include "ultrasonic.h"
marcel1691 0:5d64a3e741ec 8
marcel1691 0:5d64a3e741ec 9 // vor-/rueckwaerts - beide = Notstop
stefan1691 1:128f2b08a419 10 DigitalIn button1( A1 );
stefan1691 1:128f2b08a419 11 DigitalIn button2( A2 );
marcel1691 0:5d64a3e741ec 12
marcel1691 0:5d64a3e741ec 13 // Geschwindigkeit
marcel1691 0:5d64a3e741ec 14 AnalogIn poti ( A0 );
marcel1691 0:5d64a3e741ec 15
marcel1691 0:5d64a3e741ec 16 // Motor an M01
marcel1691 0:5d64a3e741ec 17 Motor m1(D3, D2, D4); // PWM, Vorwaerts, Rueckwarts
marcel1691 0:5d64a3e741ec 18
stefan1691 2:e11bc343329d 19 // aktueller Abstand
stefan1691 2:e11bc343329d 20 int distance;
stefan1691 2:e11bc343329d 21
stefan1691 2:e11bc343329d 22 void dist(int d)
stefan1691 2:e11bc343329d 23 {
stefan1691 2:e11bc343329d 24 // Abhandlung der Entfernung
stefan1691 2:e11bc343329d 25 printf("Entfernung %dmm\n", d);
stefan1691 2:e11bc343329d 26 distance = d;
stefan1691 2:e11bc343329d 27 }
stefan1691 2:e11bc343329d 28
stefan1691 2:e11bc343329d 29 ultrasonic mu(D5, D6, .1, 1, &dist); // setzt den Trigger Pin auf D5, den Echo Pin auf D6
stefan1691 2:e11bc343329d 30 // liefert all 0.1 Sekunden einen neuen Wert mit einem
stefan1691 2:e11bc343329d 31 // Timeout von 1 Sekunden. Fuer die Ausgabe des Wertes
stefan1691 2:e11bc343329d 32 // wird die Funktion dist aufgerufen.
stefan1691 2:e11bc343329d 33
stefan1691 2:e11bc343329d 34 /** Hauptprogramm */
marcel1691 0:5d64a3e741ec 35 int main()
marcel1691 0:5d64a3e741ec 36 {
stefan1691 2:e11bc343329d 37 mu.startUpdates(); // Start der Abstandsmessung
marcel1691 0:5d64a3e741ec 38 while (true)
marcel1691 0:5d64a3e741ec 39 {
marcel1691 0:5d64a3e741ec 40 if ( button1 == 0 && button2 == 0 )
marcel1691 0:5d64a3e741ec 41 m1.speed( 0.0f );
marcel1691 0:5d64a3e741ec 42 else if ( button1 == 0 )
marcel1691 0:5d64a3e741ec 43 m1.speed( poti );
marcel1691 0:5d64a3e741ec 44 else if ( button2 == 0 )
marcel1691 0:5d64a3e741ec 45 m1.speed( poti * -1.0f );
stefan1691 2:e11bc343329d 46
stefan1691 2:e11bc343329d 47 mu.checkDistance(); // Pooling vom Distanzmesser, sollte moeglichst oft erfolgen
stefan1691 2:e11bc343329d 48 // 70 mm vor einem Hindernis - Stopp!
stefan1691 2:e11bc343329d 49 if ( distance < 70 )
stefan1691 2:e11bc343329d 50 m1.speed( 0.0f );
stefan1691 2:e11bc343329d 51
marcel1691 0:5d64a3e741ec 52 wait(0.2f);
marcel1691 0:5d64a3e741ec 53 }
marcel1691 0:5d64a3e741ec 54 }