enum Ampel
{
// Startwert festlegen
ROT = 5,
GELB,
GRUEN
};
/*
wenn der Sensor zur y-Achse zeigt
letztes Signal rot -> ROTGELB = true -> Ampel zeigt rot und gelb
letztes Signal grün -> ROTGELB = false -> Ampel zeigt nur gelb
*/
bool ROTGELB = true;
void setup()
{
for (int i = ROT; i <= GRUEN; i++)
{
pinMode(i, OUTPUT);
}
Serial.begin(9600);
}
void loop()
{
// analoge Eingänge lesen
int xAchse = analogRead(A0);
int yAchse = analogRead(A1);
int zAchse = analogRead(A2);
// Sensor zeigt auf die x-Achse -> Ampel rot, ROTGELB = true
if (xAchse > 400)
{
digitalWrite(GELB, LOW);
digitalWrite(GRUEN, LOW);
digitalWrite(ROT, HIGH);
ROTGELB = true;
}
// Sensor zeigt auf die y-Achse
// wenn ROTGELB = false -> nur die gelbe LED leuchtet
if (yAchse > 400 && !ROTGELB)
{
digitalWrite(GRUEN, LOW);
digitalWrite(ROT, LOW);
digitalWrite(GELB, HIGH);
}
// wenn ROTGELB = true -> die rote und die gelbe LED leuchten
if (yAchse > 400 && ROTGELB)
{
digitalWrite(GRUEN, LOW);
digitalWrite(ROT, HIGH);
digitalWrite(GELB, HIGH);
}
/*
Sensor zeigt auf die z-Achse
ROTGELB muss auf false gesetzt werden,
damit bei Aktivierung des y-Achse nur die gelbe LED leuchtet
*/
if (zAchse > 400 )
{
digitalWrite(ROT, LOW);
digitalWrite(GELB, LOW);
digitalWrite(GRUEN, HIGH);
ROTGELB = false;
}
delay(20);
}
Letzte Aktualisierung: