und nochmal millis

Hallo ich möche nach einer Zeit eine LED einschalten, ist diese eingeschaltet soll eine zweite Zeit ablaufen und die LED 2 einschalten doch irgendwie habe ich einen Denkfehler da beide LED gleichzeitig leuchten Bitte um Hilfe Danke

const int ledPin_1 =  12;      // Pinnummer 12 LED Kamera
const int ledPin_2 =  13;      // Pinnummer 13 LED Bl

int ledState_1 = LOW;             // ledState von LED Pin 12
int ledState_2 = LOW;             // ledState von LED Pin 13

long ehemalige_Mills_1 = 0;        // vergangen Zeit 1
long ehemalige_Mills_2 = 0;        // vergangen Zeit 2

long Zeit_1= 1000;          // Zeitvorgabe 1
long Zeit_2= 1000;          // Zeitvorgabe 2

void setup() {
  
  pinMode(ledPin_1, OUTPUT);     // Zuweisung Ausgang
  pinMode(ledPin_2, OUTPUT);     // Zuweisung Ausgang
}

void loop()
{
  // Zeit_1 abgelaufen LED Pin 12 wird eingeschaltet
  unsigned long derzeitige_Millis_1 = millis();

  if(derzeitige_Millis_1 - ehemalige_Mills_1 > Zeit_1) {
     
    ehemalige_Mills_1 = derzeitige_Millis_1;   

    if (ledState_1 == LOW)
      ledState_1 = HIGH;
   
    digitalWrite(ledPin_1, ledState_1);
  }
    // LED_1 eingeschaltet und Zeit 2 abgelaufen LED Pin 13 wird eingeschaltet
    unsigned long derzeitige_Millis_2 = millis();

  if(derzeitige_Millis_2 - ehemalige_Mills_2 > Zeit_2 && ledState_1 == HIGH) {
     
    ehemalige_Mills_2 = derzeitige_Millis_2;   

    if (ledState_2 == LOW)
      ledState_2 = HIGH;
   
    digitalWrite(ledPin_2, ledState_2);
  }

VS14: ich möche nach einer Zeit eine LED einschalten, ist diese eingeschaltet soll eine zweite Zeit ablaufen und die LED 2 einschalten doch irgendwie habe ich einen Denkfehler da beide LED gleichzeitig leuchten

Du möchtest ein Programm, das zweimal den Staus ändert: - Programmstart - nach Ablauf von ZEIT1 mache dies - nach Ablauf von ZEIT2 maches das - und danach mache nie wieder etwas (bis zum nächsten Reset)

Das machst Du am besten, indem Du Dir den Status merkst, in dem sich das Programm gerade befindet und mit der Auswertung von Bedingungen feststellst, ob sich der Status aufgrund einer Bedingung ändern soll. Hier mal ein Beispielcode mit Ausgabe auf Serial, aber das Umschreiben auf das Schalten von LEDs sollte wohl einfach sein:

enum {NICHTGESTARTET, ZEITLAEUFT, FERTIG};

#define ZEIT1 2000
#define ZEIT2 3000

byte status=NICHTGESTARTET;

void setup()
{
  Serial.begin(9600);
  Serial.println("Programm gestartet");
}

void loop()
{
  static unsigned long startZeit=0;
  if (status==NICHTGESTARTET && millis()>ZEIT1)
  {
    status=ZEITLAEUFT;
    startZeit=millis();
    Serial.println("ZEIT1 abgelaufen");
  }
  else if (status==ZEITLAEUFT && millis()-startZeit>ZEIT2)
  {
    status=FERTIG;
    Serial.println("Fertig - ZEIT2 abgelaufen");
  }
}

Danke

Sieht für mich irgendwie nach dem "Leuchtturmproblem" aus: http://blog.blinkenlight.net/experiments/basic-effects/lighthouses/.

[quote author=Udo Klein link=topic=229611.msg1658205#msg1658205 date=1396207882] Sieht für mich irgendwie nach dem "Leuchtturmproblem" aus: http://blog.blinkenlight.net/experiments/basic-effects/lighthouses/. [/quote]

Wenn ich mir die Kommentare in seinem Quelltext ansehe, dann sieht es für mich mehr nach einer Ablaufsteuerung für ein Kamerasystem aus.

Varianten einer Zeitsteuerung für "Tropfenfotografie" mit "vielen Aktionen" und "hochgenauer Zeiteinhaltung" wurden z.B. hier gerade erst vor kurzem besprochen, mit Mehrfachauslösung diverser Ventile, Blitz und Kamera: http://forum.arduino.cc/index.php?topic=223038.0