Entfernung messen



Aufgabe:

Mit dem Ultraschallsensor HC-SR04 und einem Arduino Mikrocontroller soll eine Entfernung gemessen und angezeigt werden. Die Anzeige erfolgt auf dem serial-monitor oder auf dem Smartphone.
Ab einem bestimmten Abstand wird gewarnt.


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 einen sonstigen Gegenstand stößt, wird sie reflektiert und kommt irgendwann auch wieder zum Ultraschallsensor zurück. Sobald der Sensor die 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 dem Empfang der Schallwelle und rechnet diese Zeit dann in eine Entfernung um.

Hinweis: die Schallgeschwindigkeit in Luft beträgt etwa 340 m/s.

Schaltplan

Das zugehörige Programm (genannt Sketch):

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 Pin 5 ist ein Ausgang

if (entfernung <= 80) {
(piezo,HIGH);
} else {
digitalWrite(piezo,LOW);
}



Erweiterung: Rückfahrwarner

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

Am Anfang:
int LED=12;

Im setup():
pinMode(12,OUTPUT);


Im loop():
if (entfernung <= 40) {
digitalWrite(LED,HIGH);
delay(entfernung*3);
digitalWrite(LED,LOW);
delay(entfernung*3);
}