Mit Hilfe eines Arduinos und einem Ultraschallsensors, wie zum Beispiel einem HC-SR04, ist es möglich die Entfernung eines Objektes zum Sensor zu bestimmen.
Um die relative Entfernung des Objektes zu ermitteln wir die Geschwindigkeit zur Ausbreitung des Schalls in der Luft benötigt. Im Beispielcode verwenden wir 343 m/s als konstante Ausbreitung in trockener Luft bei 20°C gemäß Wikipedia.
Folgende Materialien werden benötigt:
Der HC-SR04 besitzt 4 Anschlüsse. Am VCC liegt die Versorgungsspannung von 5V an. Am GND liegt der GND (0V) des Arduinos an. Der Anschluss Trig ist der Ausgang zum senden des Pings, der Anschluss Echo ist der Eingang zum Empfangen des zurückgeworfenen Echos.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
int hc04Trig = 9; // Trig an Pin 9 int hc04Echo = 8; // Echo an Pin 8 float v= 343; //Konstante Ausbreitung des Schalls bei trockener Luft 20°C void setup() { pinMode(hc04Trig, OUTPUT); pinMode(hc04Echo, INPUT); Serial.begin(115200); } float Abstand(){ /*Ping senden*/ digitalWrite(hc04Trig, LOW); delayMicroseconds(3); digitalWrite(hc04Trig, HIGH); delayMicroseconds(3); digitalWrite(hc04Trig, LOW); /* Echo empfangen und umrechnung in Abstand*/ float pingtime = pulseIn(hc04Echo, HIGH); pingtime = pingtime / 1000 / 1000 / 2; // us in s, halbieren aufgrund Hin- und Rückweg float distance = pingtime * v; //Abstand ermitteln return distance * 100; // Rückgabe in cm } void loop() { int d = Abstand(); Serial.print(d); Serial.println(" cm"); delay(500); } |