int trigger=7; //Trigger-Pin auf Pin 7
int echo=6; //Echo-Pin auf Pin 6
long dauer=0; //Startzeitpunkt bei 0 Zeiteinheiten
long entfernung=0; // Start der Messung 0 Längeneinheiten
#define LEDrot 12
#define LEDgelb 11
#define LEDgrn 10
void setup()
{
Serial.begin (9600); //serieller Monitor
pinMode (trigger, OUTPUT); //Trigger-Pin als Output
pinMode (echo, INPUT); //Echo-Pin als Input
pinMode (LEDrot, OUTPUT);
pinMode (LEDgelb, OUTPUT);
pinMode (LEDgrn, OUTPUT);
}
void loop()
{
digitalWrite(trigger, HIGH); //Trigger-Pin sendet Ultraschallwelle aus
delay(10); //sendet für 10 Millisekunden
digitalWrite(trigger, LOW); //Trigger-Pin schaltet ab
dauer=pulseIn(echo, HIGH); //Zeit, bis die Welle zum Echo-Pin zurückkehrt
entfernung = (dauer/2) * 0.03432; //die Zeit geteilt durch zwei * Schallgeschwindigkeit
if (entfernung>=500 || entfernung <=0) //Eingrenzung des Messbereichs auf max. 5m/ und min. größer 0
{
Serial.println("kein Messwert"); //Fehlermeldung im seriellen Monitor
}
else
{
Serial.print(entfernung); // Ausgabe der Entfernung
Serial.println(" cm"); // Ausgabe der physikalische Einheit
}
if (entfernung<=10) //wenn näher als 10cm
{
Serial.println("Vorsicht!"); //Ausgabe "Vorsicht"
digitalWrite(LEDrot, HIGH); //rote LED an
}
else //andernfalls
{
digitalWrite(LEDrot, LOW); //rote LED aus
}
if (15 <= entfernung && entfernung <= 50) //15 <= Nahbereich >= 50
{
Serial.println("Nahbereich"); //Ausgabe "Nahbereich"
digitalWrite(LEDgelb, HIGH);
}
else
{
digitalWrite(LEDgelb, LOW);
}
if (51 <= entfernung && entfernung <= 150) //51 <= Freiraum >= 150
{
Serial.println("Freiraum");
digitalWrite(LEDgrn, HIGH);
}
else
{
digitalWrite(LEDgrn, LOW);
}
delay(1000); // Pause bis zur nächsten Messung
}