Einen Ultraschall-Distanzsensor wie den HC-SR04 kriegt man für kleines Geld. Der Sensor arbeitet zwischen 2 und 450cm und es lassen sich Distanzen mit einer Genauigkeit von bis zu 3mm ermuitteln.
Um damit Entfernungen bis zum nächsten reflektierenden Hindernis zu ermitteln, sendet man einen „Ping“ aus und ermittelt, wie lange es dauert, bis dieser wieder empfangen wird. Für den Arduino gibt es passende Libraries. Und in einem Sketch könnte die Ermittlung der Entfernung folgendermaßen geschehen:
int ping_Pin = 13;
int in_Pin = 12;
void setup() {
Serial.begin(9600);
}
void loop()
{
long duration, cm;
pinMode(ping_Pin, OUTPUT);
pinMode(in_Pin, INPUT);
//sauberen High-Puls von wenigen Mikrosekunden (10) absetzen
digitalWrite(ping_Pin, LOW);
delayMicroseconds(2);
digitalWrite(ping_Pin, HIGH);
delayMicroseconds(10);
digitalWrite(ping_Pin, LOW);
//Echo auswerten, Dauer in Länge konvertieren
duration = pulseIn(in_Pin, HIGH);
cm = microsecondsToCentimeters(duration);
//Zentimeter ausgeben
Serial.println(cm, DEC);
delay(100);
}
long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29 / 2;
}
Und schon läuft das Loop. Anhand der Schallgeschwindigkeit von 340 m/s (1/29us/cm) und der Dauer, bis wieder etwas am Eingangs-PIN ankommt, kann man also die zurückgelegte (doppelte) Wegstrecke und letztendlich den einfachen Abstand zum Objekt berechnen.