Unser Roboter soll Hindernisse berührungslos erkennen können. Dazu gibt es preisgünstige Sensoren, die mit Ultraschall arbeiten. Wir gehen der Funktionsweise eines solchen Sensors auf den Grund und schauen, wie wir seine Signale mit dem Arduino verarbeiten können.
Um die Funktionsweise des Sensors besser zu verstehen, Müssen wir als Erstes das Datenblatt anschauen. Elec Freaks stellt auch einen User Guide zur Verfügung. Schaut Euch dasVideo an! Dann wird Vieles klar.
Der Anschluss an einen Arduino ist sehr einfach. Mit dem untenstehenden Sketch lässt sich die Funktionsweise leicht ergründen.
Abgesehen von der Stromversorgung müssen wir nur den Triggereingang und den Echoausgang des Sensors mit den betreffenden Pins des Arduinos verbinden.
Der einfache Sketch gibt uns den Abstand des Hindernisses in cm auf die serielle Konsole aus.
const int triggerPin = 7; const int echoPin = 8; void setup() { pinMode(triggerPin,OUTPUT); digitalWrite(triggerPin,LOW); Serial.begin(9600); } float distance() { // 10 mikrosekunden-Impuls erzeugen digitalWrite(triggerPin,HIGH); delayMicroseconds(10); digitalWrite(triggerPin,LOW); // Echozeit auslesen, Timeout 5 ms = 86 cm unsigned long zeit = pulseIn(echoPin,HIGH,5000); return zeit / 58.0; } void loop() { delay(1000); // 1 Messung pro Sekunde Serial.println(distance()); }
In Kürze werden wir den Sensor in den Roboter einbauen und mittels geschickter Programmierung dafür sorgen, dass der Roboter Kollisionen vermeiden kann.