/*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 }