Menu
CoddyTech

Ultraschall-Echozeit

Teil des Abschnitts Displays und Sensoren der Arduino-Journey von Coddy. Lektion 18 von 24.

Der HC-SR04 misst die Entfernung wie eine Fledermaus: Er sendet einen Klick aus, der für uns zu hoch ist, um ihn zu hören, und misst die Zeit bis zum Echo. Je weiter das Objekt entfernt ist, desto länger dauert es, bis das Echo zurückkommt.

Er hat zwei Signalpins. Ein kurzer HIGH-Impuls auf TRIG weist ihn an, einen Klick auszusenden. ECHO wird dann HIGH und bleibt HIGH, bis das Echo zurückkommt. Die Dauer dieses HIGH-Impulses entspricht also der Zeit, die der Schall gebraucht hat.

delayMicroseconds() wartet in Millionstelsekunden – kurz genug für den 10-Mikrosekunden-Triggerimpuls. pulseIn(pin, HIGH) wartet, bis der Pin HIGH wird, und gibt zurück, wie viele Mikrosekunden er HIGH geblieben ist. Wenn innerhalb einer Sekunde kein Impuls kommt, bricht die Funktion ab und gibt 0 zurück.

digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);     // der Triggerimpuls
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);

Ein Echo kann bis zu 38000 Mikrosekunden dauern – mehr, als ein int speichern kann. Speichere es daher in einem long.

challenge icon

Aufgabe

Mittel

TRIG ist an Pin 9 und ECHO an Pin 10. In loop():

  • einen 10 Mikrosekunden langen HIGH-Impuls an TRIG senden
  • das Echo mit pulseIn(echoPin, HIGH) messen
  • die Zeit mit Serial.println() ausgeben

Drücke Run, bewege das Objekt auf der Platine näher heran und weiter weg und klicke dann auf Check.

Probier es selbst

const int trigPin = 9;
const int echoPin = 10;

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.begin(9600);
}

void loop() {
  // einen 10-Mikrosekunden-Impuls an TRIG senden
  // die Dauer des Echos mit pulseIn() messen und ausgeben
  delay(200);
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Displays und Sensoren

Übe selbstständig: Arduino-Playground