Advanced - Ultraschallsensor mit LED

Erstellt von Patrick Dietrich
Benötigtes Material
  • Arduino Uno
  • Ultraschallsensor (HC-SR04)
  • großes Breadboard
  • 11x MM-Kabel
  • 4 verschiedenfarbige LED (rot, gelb, grün, blau)
Als PDF
PDF-Download
Arbeitsblatt
PDF-Download erweitert
Erweitertes Arbeitsblatt

Beschreibung

Im Folgenden soll ein Ultraschallsensor (siehe AB Ultraschallsensor) mit vier LED’s (siehe AB Led ansteuern) verbunden werden und je nach Entfernung eines Objektes soll eine andere LED aufleuchten.

Verkabelung

HC-SR04ArduinoSonstiges
VCC5V
GNDGNDüber das Breadboard
Trig2
Echo3
LEDArduinoGND am Breadboard
GELB8über seitlichen Leisten
ROT9über seitlichen Leisten
BLAU10über seitlichen Leisten
GRÜN11über seitlichen Leisten
Schaltplan

Schaltplan

Code

// Angeschlossene LEDs.
int LED_GELB  = 8;
int LED_ROT   = 9;
int LED_BLAU  = 10;
int LED_GRUEN = 11;

// Pins für den Sensor.
int TRIG_PIN = 2;
int ECHO_PIN = 3;

void setup() {
  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
  pinMode(LED_GELB, OUTPUT);
  pinMode(LED_ROT, OUTPUT);
  pinMode(LED_BLAU, OUTPUT);
  pinMode(LED_GRUEN, OUTPUT);
}

void loop() {
  // Speichern, wie lange der Schall unterwegs ist.
  long zeit;
  // Speichern des gemessenen Abstandes.
  long abstand;

  // Wir messen den Abstand zum nächsten Objekt.
  digitalWrite(TRIG_PIN, LOW);  // Lautsprecher aus.
  delay(2);
  digitalWrite(TRIG_PIN, HIGH);  // Lautsprecher gibt Ton aus.
  delay(10);
  digitalWrite(TRIG_PIN, LOW);     // Lautsprecher aus.
  zeit = pulseIn(ECHO_PIN, HIGH);  // Hier wird gemessen, wann das Mikrofon den
                                   // Ton hört.
  abstand = zeit * 0.034 / 2;      // Umrechnung des Abstands von Zeit in
                                   // Zentimeter.

  if (abstand < 25) {  // Wenn der Abstand kleiner als 25 Zentimeter ist...
    digitalWrite(LED_ROT, HIGH);  // ... schalte die rote LED an,
    // und alle anderen LEDs aus.
    digitalWrite(LED_GELB, LOW);
    digitalWrite(LED_BLAU, LOW);
    digitalWrite(LED_GRUEN, LOW);
  } else if (abstand < 100) {      // Größer als 25 cm und kleiner als 1m...
    digitalWrite(LED_GELB, HIGH);  // ... schalte die gelbe LED an,
    // und alle anderen LEDs aus.
    digitalWrite(LED_ROT, LOW);
    digitalWrite(LED_BLAU, LOW);
    digitalWrite(LED_GRUEN, LOW);
  } else if (abstand < 200) {       // Größer als 1m und kleiner als 2m...
    digitalWrite(LED_GRUEN, HIGH);  // ... schalte die grüne LED an,
    // und alle anderen LEDs aus.
    digitalWrite(LED_ROT, LOW);
    digitalWrite(LED_BLAU, LOW);
    digitalWrite(LED_GELB, LOW);
  } else if (abstand < 300) {      // Größer als 2m und kleiner als 3m...
    digitalWrite(LED_BLAU, HIGH);  // ... schalte die blaue LED an,
    // und alle anderen LEDs aus.
    digitalWrite(LED_ROT, LOW);
    digitalWrite(LED_GELB, LOW);
    digitalWrite(LED_GRUEN, LOW);
  } else {  // Sonst, wenn die Entfernung größer als 3m, schalte alle LEDs aus.
    digitalWrite(LED_GELB, LOW);
    digitalWrite(LED_ROT, LOW);
    digitalWrite(LED_BLAU, LOW);
    digitalWrite(LED_GRUEN, LOW);
  }
}

Aufgaben

Wie misst ein Ultraschallsensor die Entfernung zu einem Hindernis?

Erkläre was der Echo- und Triggerpin sind und wie sie den Abstand messen.

Was ist bei der LED die Anode und was die Kathode?

  • Die Anode ist der Pluspol und das lange Bein der LED.
  • Die Kathode ist der Minuspol und das kurze Bein der LED.

Häufige Fragen und Probleme

Wieso leuchten einige LEDs nicht?

  • Alle Anschlüsse überprüft und richtig verkabelt?
  • Der Abstand ist wohl nicht klein/groß genug, um in einen der Fälle zu springen und die LED zum Leuchten zu bringen. Gehe etwas näher heran/weiter weg.

Meine LEDs springen während des Leuchtens immer hin und her, was bedeutet das?

Deine Messbahn ist wohl nicht ganz frei von Hindernissen, welche der Sensor als solche erkennt und deshalb eine wechselnde Entfernung angibt. Sorge für eine freie Messbahn, um, vor allem für die grüne und blaue LED, genauere Ergebnisse zu erzielen. Stehe zudem gerade und ruhig beim Messen oder stelle das Gerät auf eine feste Unterlage, denn schon durch leichtes Ruckeln werden andere Bereiche erkannt und somit andere Werte gemessen.

Das Material und dessen Inhalte sind - sofern nicht anders angegeben - lizenziert unter der Creative Commons Lizenz CC BY-NC-SA 4.0 (für den vollständigen Lizenztext siehe https://creativecommons.org/licenses/by-sa/4.0/legalcode )