/**************
Name: Ivan Ivanov
Datum: 16.04.2024
Übung: Ultraschallsensor
**********/
// Variablen definieren
#define PULSE_PIN 5
#define ECHO_PIN 6
#define BLAU_LED 7
#define GELB_LED 8
#define ROT_LED 9
long entf;
void setup()
{
pinMode(PULSE_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(BLAU_LED, OUTPUT);
pinMode(GELB_LED, OUTPUT);
pinMode(ROT_LED, OUTPUT);
Serial.begin(9600);
}
void loop()
{
digitalWrite(PULSE_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(PULSE_PIN, LOW);
long zeit = pulseIn(ECHO_PIN, HIGH);
// Schallgeschwindigkeit in der Luft bei 20°C und 50% Luftfeuchtigkeit: 343,2 m/s
entf = (zeit / 2) * 0.03432;
delay(500);
// LEDs entsprechend der Entfernung steuern
if(entf > 30 || entf < 0)
{
digitalWrite(BLAU_LED, HIGH);
digitalWrite(GELB_LED, LOW);
digitalWrite(ROT_LED, LOW);
}
else if(entf >= 10 && entf <= 30)
{
digitalWrite(BLAU_LED, LOW);
digitalWrite(GELB_LED, HIGH);
digitalWrite(ROT_LED, LOW);
}
else if(entf < 10 && entf >= 5)
{
digitalWrite(BLAU_LED, LOW);
digitalWrite(GELB_LED, LOW);
digitalWrite(ROT_LED, HIGH);
}
else if(entf < 5)
{
// Rote LED blinken lassen
digitalWrite(ROT_LED, HIGH);
delay(500);
digitalWrite(ROT_LED, LOW);
delay(500);
}
else
{
digitalWrite(BLAU_LED, LOW);
digitalWrite(GELB_LED, LOW);
digitalWrite(ROT_LED, LOW);
}
// Messdaten anzeigen
Serial.print("Entfernung in cm: ");
Serial.println(entf);
}