Entfernung messen


Aufgabe: Mit den Ultraschallsensor HC-SR04 und einem Arduino Mikrocontroller soll eine Entfernung gemessen und ab einem bestimmten Abstand gewarnt bzw. und angezeigt werden (z.B. mit dem serial-monitor oder auf dem Smartphone).


Wie funktioniert der Ultraschallsensor?

Der Sensor hat vier Anschlüsse: a) 5V(+) b) GND (–) c) echo d) trigger

Die Anschlüsse 5V und GND verstehen sich von selbst, sie versorgen den Sensor mit Energie.

Der Pin „trigger“ bekommt vom Mikrocontroller-Board ein kurzes Signal (5V), wodurch eine Schallwelle vom Ultraschallsensor ausgelöst wird. Sobald die Schallwelle gegen eine Wand oder sonstigen Gegenstand stößt, wird sie reflektiert und kommt irgendwann auch wieder zum Ultraschallsensor zurück. Sobald der Sensor diese zurückgekehrte Schallwelle erkennt, sendet der Sensor auf dem „echo“ Pin ein 5V Signal an das Mikrocontroller-Board. Dieser misst dann lediglich die Zeit zwischen dem Aussenden und der Rückkehr der Schallwelle und rechnet diese Zeit dann in eine Entfernung um.


int trigger=7;

int echo=6;

long dauer=0;

long entfernung=0;


void setup() {

Serial.begin (9600);

pinMode(trigger, OUTPUT);

pinMode(echo, INPUT); }


void loop() {

digitalWrite(trigger, LOW);

delay(5);

digitalWrite(trigger, HIGH);

delay(10);

digitalWrite(trigger, LOW);

dauer = pulseIn(echo, HIGH);

entfernung = (dauer/2) * 0.03432;

if (entfernung >= 500 || entfernung <= 0) {

Serial.println("Kein Messwert"); }

else {

Serial.print(entfernung);

Serial.println(" cm"); }

delay(1000);

}


Wenn ein Abstand unter 80cm gemessen wird, soll ein Piezo-Lautsprecher piepsen. Es müssen folgende Zeilen (jeweils an der richtigen Stelle) eingefügt werden.


int piezo=5;


pinMode(piezo, OUTPUT); //Der Piezo-Lautsprecher an Pin5 soll ein Ausgang


if (entfernung <= 80) {

digitalWrite(piezo,HIGH); }

else {

digitalWrite(piezo,LOW); }




Erweiterung: Rückfahrwarner

Mit diesem Code lässt sich ein Rückfahrwarner konstruieren. Am Pin12 wird zusätzlich zu dem bereits angeschlossenen Ultraschallsensor eine LED angeschlossen.


int LED=12;

pinMode(12, OUTPUT);


if (entfernung <= 40) {

digitalWrite(LED, HIGH);

delay(entfernung*3);

digitalWrite(LED, LOW);

delay(entfernung*3); }