← Alle Lektionen

Lektion 5: Parksensor mit Ultraschall

mittel

Der Arduino misst per Ultraschall, wie nah etwas vor ihm ist — und warnt mit LED und Pieptoenen, wenn es zu nah wird.

Bauteile: HC-SR04 LED (einzeln) Piezo-Summer (Buzzer) Breadboard (Steckbrett) Jumperkabel-Set

Was ihr macht

Neu in dieser Lektion: Du arbeitest zum ersten Mal mit einem
Sensor, der Zeit misst. Der HC-SR04 sendet einen kurzen
Ultraschall-Impuls und wartet auf das Echo — aus der Laufzeit
berechnet der Arduino den Abstand.

So funktioniert der Sensor

Der HC-SR04 hat zwei "Augen": eins sendet, eins empfaengt.
Du gibst auf TRIG einen kurzen Puls (10 Mikrosekunden HIGH),
der Sensor schickt einen Ultraschall-Knall los. Sobald das Echo
zurueckkommt, geht ECHO kurz auf HIGH — und der Arduino misst
mit pulseIn(), wie lange das gedauert hat.

Aus der Laufzeit und der Schallgeschwindigkeit (343 m/s)
berechnet ihr den Abstand in cm.

Was ihr macht

  1. Bau die Schaltung auf:
  2. HC-SR04: VCC an 5V, GND an GND, TRIG an Pin 9, ECHO an Pin 10
  3. Gruene LED an Pin 12 gegen GND
  4. Rote LED an Pin 11 gegen GND
  5. Piezo-Summer (B26) an Pin 8 und GND
  6. Lade den Sketch hoch und oeffne den Seriellen Monitor.
    Du siehst die gemessenen Abstaende live.
  7. Teste: Halt die Hand vor den Sensor, geh naeher ran. Ab welcher
    Entfernung wird die rote LED an? Wie schnell piept es bei 5 cm?
  8. Spiel mit den Schwellwerten im Code (< 10 und < 30):
  9. Stell sie so ein, dass die rote LED erst bei 5 cm angeht
  10. Was passiert, wenn du den Bereich auf "weniger als 50 cm = nah" aenderst?
  11. Anhalte-Trick: Statt delay(150) nimm delay(50) und sieh dir an,
    wie das Piepen schneller wird. Warum eigentlich? Was kann der Arduino
    in dieser Zeit nicht?

Frei weiter denken

  • Drei statt zwei Stufen: gruen / gelb / rot — wie im richtigen Auto
  • Ton-Frequenz mit dem Abstand verknuepfen (tone(buzzer, 2000 - cm*30))
  • Display dazu (LCD oder OLED), das die Zahl in cm zeigt
  • "Stiller Modus" per Taster: nur LEDs, kein Ton

So sieht der Aufbau aus

Aufbau-Bild folgt
Wokwi-Vorschau ↗

Der Sketch

Lest den Code in Ruhe durch — die Kommentare hinter // sagen euch, was jede Zeile macht.

// L5 Parksensor mit Ultraschall (HC-SR04)
// Der Sensor misst, wie weit ein Objekt entfernt ist.
// Je naeher es kommt, desto haeufiger piept der Buzzer.

const int trigPin     = 9;    // sendet den Ultraschall-Impuls
const int echoPin     = 10;   // empfaengt das Echo
const int ledGruenPin = 12;   // alles ok
const int ledRotPin   = 11;   // zu nah!
const int buzzerPin   = 8;    // Piezo-Summer

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

// Misst den Abstand in cm. Liefert 0, wenn kein Echo zurueckkommt.
long abstandCm() {
  // 10-Mikrosekunden-Puls auf TRIG -> Sensor sendet
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  // Laufzeit am ECHO messen (in Mikrosekunden)
  long laufzeit = pulseIn(echoPin, HIGH, 30000);

  // Schallgeschwindigkeit ca. 0,0343 cm/Mikrosekunde
  // Hin + zurueck -> halbieren
  return laufzeit * 0.0343 / 2;
}

void loop() {
  long cm = abstandCm();

  Serial.print("Abstand: ");
  Serial.print(cm);
  Serial.println(" cm");

  if (cm > 0 && cm < 10) {
    // sehr nah: rote LED + schneller Piepton
    digitalWrite(ledRotPin, HIGH);
    digitalWrite(ledGruenPin, LOW);
    tone(buzzerPin, 1000, 100);
    delay(150);
  } else if (cm < 30) {
    // mittlere Naehe: beide LEDs + langsamer Piepton
    digitalWrite(ledRotPin, HIGH);
    digitalWrite(ledGruenPin, HIGH);
    tone(buzzerPin, 800, 100);
    delay(400);
  } else {
    // weit weg oder kein Echo: nur gruen, kein Ton
    digitalWrite(ledRotPin, LOW);
    digitalWrite(ledGruenPin, HIGH);
    noTone(buzzerPin);
    delay(200);
  }
}
Festgefahren? KI-Tipps Troubleshooting Bauteile-Datenbank
Wokwi-Simulator — wenn euer realer Aufbau nicht laeuft, koennt ihr im Online-Simulator vergleichen. Im Wokwi oeffnen ↗
Hilfe (klick wenn ihr nicht weiterkommt)

Wenn der Wert immer 0 ist: Pruef, ob TRIG und ECHO am richtigen Pin sind und ob VCC wirklich an 5V haengt. Pin-Reihenfolge am HC-SR04: VCC - TRIG - ECHO - GND.

Wenn der Compiler 'trigPin was not declared' o.ae. meldet, obwohl die Zeile da steht: Beim Kopieren aus dem Browser sind manchmal unsichtbare Zeichen mit reingerutscht. Benutzt den Kopier-Knopf rechts oben am Code-Block — der liefert sauberen Text. Oder tippt die Zeile von Hand neu.

Wenn der Buzzer dauerpiept: Schau im Code nach den Schwellwerten — vielleicht ist cm < 10 immer wahr, weil ein anderes Objekt zu nah steht.

Schallgeschwindigkeit: ca. 343 m/s = 0,0343 cm/Mikrosekunde. Das Echo legt den Weg zweimal zurueck (hin + zurueck) — deshalb im Code die Division durch 2.

← L4: Eure Idee — das Projekt-Interview L6: Temperatur messen mit dem TMP36 →