/*
Author: Gregor Mausser
Titel:Parksensor_2
Date: 21.01.2026
*/
const int ledPinRot = 9;
const int ledPinGelb = 10;
const int ledPinBlau = 11;
const int buttonPin = 12;
const int buzzerPin = 8;
// Pin für den Sender
const int Senden = 5;
// Pin für das vom Objekt reflektierte Signal
const int Echo = 4;
long entfernung = 0;
float air = 0.03432;
bool lastButtonState = HIGH;
int OnOffcount = 1;
void setup() {
//Pins definieren
pinMode(ledPinRot, OUTPUT);
pinMode(ledPinGelb, OUTPUT);
pinMode(ledPinBlau, OUTPUT);
pinMode(LED_BUILTIN, OUTPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
pinMode(Senden, OUTPUT);
pinMode(Echo, INPUT);
Serial.begin(9600);
}
void loop() {
int state = digitalRead(buttonPin);
bool reading = digitalRead(buttonPin);
if (reading == LOW && lastButtonState == HIGH) {
OnOffcount++;
}
if (OnOffcount == 1) {
digitalWrite(LED_BUILTIN, LOW);
digitalWrite(ledPinRot, LOW);
digitalWrite(ledPinGelb, LOW);
digitalWrite(ledPinBlau, LOW);
// Sender kurz ausschalten um Störungen des Signal zu vermeiden
digitalWrite(Senden, LOW);
delay(5);
// Signal für 10 Micrsekunden senden, danach wieder ausschalten
digitalWrite(Senden, HIGH);
delayMicroseconds(10);
digitalWrite(Senden, LOW);
// pulseIn -> Zeit messen, bis das Signal zurückkommt
long Zeit = pulseIn(Echo, HIGH);
// Entfernung in cm berechnen = Zeit/2 -> nur eine Strecke
entfernung = (Zeit / 2) * air;
Serial.println(entfernung);
//switch case für die Led wenn ein gewisser Abstand zu einem Objekt erreicht wird
switch(entfernung){
case 11 ... 30:
digitalWrite(ledPinGelb, HIGH);
Serial.println("Gelb");
tone(8, 150, 1000);
break;
case 6 ... 10:
digitalWrite(ledPinRot, HIGH);
Serial.println("Rot");
tone(8, 267, 100);
break;
case 0 ... 5:
digitalWrite(ledPinRot, LOW);
delay(200);
digitalWrite(ledPinRot, HIGH);
delay(200);
tone(8, 1000, 100);
break;
default:
digitalWrite(ledPinBlau, HIGH);
break;
}
}
else{
digitalWrite(LED_BUILTIN, HIGH);
digitalWrite(ledPinRot, LOW);
digitalWrite(ledPinGelb, LOW);
digitalWrite(ledPinBlau, LOW);
OnOffcount = 0;
}
lastButtonState = reading;
}