// Senden und Empfangen
# define SENDEN 9
# define ECHO 8
// Ampel
# define ROT 5
# define GELB 6
# define GRUEN 7
long Zeit = 0;
long Entfernung = 0;
void setup()
{
pinMode(SENDEN, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(ROT, OUTPUT);
pinMode(GELB, OUTPUT);
pinMode(GRUEN, OUTPUT);
}
void loop()
{
digitalWrite(ROT, HIGH);
// Funktion aufrufen
Entfernung = EntfernungMessen();
// Ampel schalten
if (Entfernung < 10)
{
AmpelSchalten();
}
}
int EntfernungMessen()
{
long Entfernung = 0;
// Sender kurz ausschalten um Störungen des Signal zu vermeiden
digitalWrite(SENDEN, LOW);
delay(5);
// Signal senden
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
Entfernung = (Zeit / 2) * 0.03432;
return Entfernung;
}
void AmpelSchalten()
{
delay(1000);
digitalWrite(GELB, HIGH);
delay(1000);
digitalWrite(GELB, LOW);
digitalWrite(ROT, LOW);
digitalWrite(GRUEN, HIGH);
delay(3000);
digitalWrite(GRUEN, LOW);
digitalWrite(GELB, HIGH);
delay(1000);
digitalWrite(GELB, LOW);
digitalWrite(ROT, HIGH);
}
Letzte Aktualisierung: