Ampel mit Beschleu­ni­gungs­sen­sor ADXL335 schalten

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: 24. Jul 2023 @ 7:54