LEDs durch Timer ein- und ausschalten

Ich überwache eine Variable "Gear". Wenn diese Null wird solle nach 3 Sekunden eine LED einschalten, nach 5 Skunden die 2. und nach 6 Sekunden die 3.
Ist "GEAR" nicht mehr Null sollen die LEDs in gleicher Reihenfolge ausgeschalten werden.
Ich habe keine Ahnung wie ich die Timerproblematik lösen soll.
Ich dachte an einen Sekunden-Timer, der durch "Gear" gestartet wird. Der zählt dann eine Hilfsvariable im Sekundentakt hoch und wenn die Hilfvariable die Wert 3, 5 oder 6 hat werden die entsprechende Ausgänge geschalten.
Geht das auch eleganter und wie kann ich so einen Sekundentimer anlegen?

Skino:
Geht das auch eleganter und wie kann ich so einen Sekundentimer anlegen?

Du kannst es ja mal mit einer "Timer-Library" versuchen.
Z.B. SimpleTimer.h oder Interval.h

hab jetzt keine LEDs angeschlossen aber so in etwa könnte es klappen:

// Nach Pegelwechsel werden LED's der reihe nach eingeschaltet bzw. ausgeschaltet
// 
// http://forum.arduino.cc/index.php?topic=514860.0
//
const byte LED1_PIN = 13;
const byte LED2_PIN = 7;
const byte LED3_PIN = 6;
const byte INPUT_PIN = 5;     // to change the "gear"

const uint16_t INTERVAL1 = 3*1000;
const uint16_t INTERVAL2 = 2*1000;
const uint16_t INTERVAL3 = 2*1000;

byte state = 0;
byte gear = 1;

unsigned long timestamp=0;

void setup() {
  Serial.begin(115200);
  Serial.println(F("Einschalt- Ausschaltverzoegerung"));
  pinMode(LED1_PIN, OUTPUT);
  pinMode(LED2_PIN, OUTPUT);
  pinMode(LED3_PIN, OUTPUT);
  pinMode(INPUT_PIN, INPUT_PULLUP); 
}

void loop() {

  if (digitalRead(INPUT_PIN)) gear = 1; else gear = 0;

  if (state == 0 and gear == 0)
  {
    Serial.println(F("State 1 activated"));
    digitalWrite(LED1_PIN, 1);
    timestamp = millis();
    state = 1;
  }

  else if (state == 1 && ((unsigned long)(millis()-timestamp)>=INTERVAL1))
  {
    Serial.println(F("State 2 activated"));
    digitalWrite(LED2_PIN, 1);
    timestamp = millis();
    state = 2;
  }
 
  else if (state == 2 && ((unsigned long)(millis()-timestamp)>=INTERVAL2))
  {
    Serial.println(F("State 3 activated"));
    digitalWrite(LED3_PIN, 1);
    timestamp = millis();
    state = 3;
  }

  else if (state == 3 && gear == 1)
  {
    Serial.println(F("State 4 activated"));
    digitalWrite(LED3_PIN, 0);
    timestamp = millis();
    state = 4;
  }
  

  else if (state == 4 && ((unsigned long)(millis()-timestamp)>=INTERVAL2))
  {
    Serial.println(F("State 5 activated"));
    digitalWrite(LED3_PIN, 0);
    digitalWrite(LED2_PIN, 0);
    timestamp = millis();
    state = 5;
  }

  else if (state == 5 && ((unsigned long)(millis()-timestamp)>=INTERVAL1))
  {
    Serial.println(F("Back to state 0"));
    digitalWrite(LED3_PIN, 0);
    digitalWrite(LED2_PIN, 0);
    digitalWrite(LED1_PIN, 0);
    timestamp = millis();
    state = 0;
  }
}

zumindest schaltet die smd LED

Klappt perfekt. Vielen Dank :slight_smile: