
Video
Schaltplan

Quellcode
1int echoPin = 6;
2int trigPin = 7;
3int maxDistance = 100;
4int minDistance = 3;
5
6void setup() {
7 pinMode(trigPin, OUTPUT);
8 pinMode(echoPin, INPUT);
9 Serial.begin(9600);
10}
11
12void loop() {
13 digitalWrite(trigPin, HIGH);
14 delayMicroseconds(10);
15 digitalWrite(trigPin, LOW);
16
17 unsigned long duration = pulseIn(echoPin, HIGH);
18 double totalPath = (double)duration * 0.034;
19 int distance = totalPath / 2;
20
21 if (distance > minDistance && distance < maxDistance) {
22 Serial.print("Distance: ");
23 Serial.print(distance);
24 Serial.println("cm");
25 }
26
27 delay(500);
28}FAQ
Wie misst der HC-SR04 die Entfernung?▾
Der Sensor sendet eine Schallwelle mit einer Frequenz von 40 kHz aus und misst die Laufzeit des Echos. Schall breitet sich in der Luft mit einer Geschwindigkeit von etwa 343 m/s aus; die Entfernung wird mit der Formel „Entfernung = Zeit × 0,0343 / 2“ in Zentimeter umgerechnet (die Division durch 2 berücksichtigt den Hin- und Rückweg).
Was ist die kürzeste und die längste Entfernung, die er messen kann?▾
In der Praxis misst das Gerät Entfernungen zwischen etwa 2 cm und 400 cm. Bei Entfernungen unter 2 cm sowie bei sehr großen Entfernungen oder auf schallabsorbierenden Oberflächen (Stoff, Schaumstoff) können die Messwerte fehlerhaft sein oder den Wert 0 anzeigen.
Manchmal werden Werte von 0 oder sehr große Werte angezeigt – warum?▾
Wenn kein Echo zurückkommt, läuft „pulseIn“ ab. Stelle sicher, dass der Sensor auf eine ebene und harte Oberfläche gerichtet ist, warte zwischen den Messungen mindestens 60 ms und filtere fehlerhafte Messwerte im Code heraus.
Kann ich es mit dem ESP32 verwenden?▾
Der HC-SR04 wird mit 5 V betrieben und der ECHO-Pin liefert eine Ausgangsspannung von 5 V. Da der ESP32 mit 3,3-V-Logik arbeitet, musst du einen Spannungsteiler (z. B. 1 kΩ + 2 kΩ) in die ECHO-Leitung einbauen oder das 3,3-V-kompatible Modell HC-SR04P verwenden.
