/*Dieser Sketch misst die Entfernung zu einem Hindernis mit einem Ultraschallsensor HC-SR04 und zeigt sie im Serial Monitor an.
Wenn die Entfernung unter 30cm ist, ertoent der Buzzer (Piezo-Summer).
Der Buzzer ist ein Passive Buzzer, man kann unterschiedliche Tonsignal-Frequenzen programmieren*/
void setup()
{
/*Programmiere die Arduino-Anschluesse D2, D4 und A5=D19 als Ausgang oder Eingang*/
pinMode(2, OUTPUT); //Signal Trig zum HC-SR04
pinMode(19, INPUT); //Signal Echo vom HC-SR04
pinMode(4, OUTPUT); //Tonsignal zum Buzzer
/*Starte die serielle Kommunikation (Baudrate 9600), damit man sich die Werte am Serial Monitor ansehen kann*/
Serial.begin (9600);
}
void loop()
{
/*Zunaechst werden einige Variablen definiert*/
long dauer=0; // in der Variablen "dauer" wird die Zeit gespeichert, die eine Schallwelle bis zur Reflektion und zurueck benoetigt
long entfernung=0; // in der Variablen "entfernung" soll die berechnete Entfernung gespeichert werden
/*Dieser Programmteil ermittelt die Entferung zu einem Hindernis*/
digitalWrite(2, LOW); //Hier nimmt man die Spannung fuer kurze Zeit vom Trig-Pin, fuer ein rauschfreies Signal beim Senden
delay(5); //...fuer die Dauer 5 Millisekunden
digitalWrite(2, HIGH); //Ein HIGH-Signal wird zum Trig-Eingang des HC-SR04 gesendet
delayMicroseconds(15); //Die Dauer muss mindestens 10 Mikrosekunden sein, hier gewaehlt 15
digitalWrite(2, LOW); //Wenn das Trig-Signal wieder auf LOW geht, sendet der HC-SR04 Ultraschallwellen aus (8 mal, Frequenz 40kHz)
dauer = pulseIn(19, HIGH); //Der Arduino zaehlt die Zeit in Mikrosekunden, bis der reflektierte Schall zum Ultraschallsensor zurueckkehrt
entfernung = (dauer/2) * 0.03432; //Nun wird aus der Zeit die Entfernung in cm berechnet (Bsp.: 10ms entspricht Entfernung 170cm)
Serial.print(entfernung); //Der Wert der Entfernung wird an den Serial Monitor uebergeben
Serial.println(" cm"); //Hinter dem Wert der Entfernung soll die Einheit "cm" angegeben sowie die Anzeigezeile gewechselt werden (CR)
if (entfernung < 30) //Wenn der Wert fuer die Entfernung unter 30 cm betraegt dann...
{
tone(4,1000,1000); //...sende Signal zum Buzzer (Arduino erzeugt an D4 einen Ton 1000Hz fuer Dauer 1000ms)
}
else //und wenn das nicht so ist...
{
digitalWrite(4,LOW); //...dann kein Ton
}
delay(1000); //Aller 1000 Millisekunden ein neuer Messvorgang
}