![](/media/cache/group/ep_LV4vK4D.webp.50x50_q85.jpg)
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
main.cpp
- Committer:
- stefan1691
- Date:
- 2015-04-29
- Revision:
- 2:e11bc343329d
- Parent:
- 1:128f2b08a419
File content as of revision 2:e11bc343329d:
/** 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 ); DigitalIn button2( A2 ); // Geschwindigkeit AnalogIn poti ( A0 ); // 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 ) m1.speed( 0.0f ); else if ( button1 == 0 ) 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); } }