Lauflicht (Rundumleuchte ) mit 2 Taster

Hallo Leute
Ich habe mir für die Modelleisenbahn eine kleine Rundumleuchte (Lauflicht) aus 3 smd LEDs gebaut. Diese kan ich mit einen Taster einschalten aber ich bekomme es nicht hin die Rundumleuchte mit mit einen anderen Taster wieder auszuschalten. Also 1. Taster schaltet ein 2.Taster wieder aus. Ich hoffe ihr könnt mir ein wenig helfen.
Gruß in die Runde

Code: [Select]

[code]
const byte tasterstartPin = 2;
const byte led1pin = 3;
const byte led2pin = 4;
const byte led3pin = 5;
const byte tasterausPin = 7;
bool tasterstate = LOW;
bool taster1state = LOW;
const int ZEITPHASE = 100;
unsigned long einMillis;
unsigned long einIntervall;
enum ZUSTAENDE {Warten, LED1, LED2, LED3, Aus, };
byte zustand = Warten;
int tasterstartStatus = 0;
int taster1startStatus = 0;

void setup() {
  pinMode(led1pin, OUTPUT);
  pinMode(led2pin, OUTPUT);
  pinMode(led3pin, OUTPUT);
  pinMode(tasterstartPin, INPUT);
  pinMode(tasterausPin, INPUT);
}
void loop() {
  tasterstartStatus = digitalRead(tasterstartPin);
  taster1startStatus = digitalRead(tasterausPin);
  if (millis() - einMillis >= einIntervall) {
    switch (zustand) {
      case Warten:
        if (tasterstartStatus) {
          zustand = LED1;
        }
        if (taster1startStatus) {
          zustand = Aus;
        }
        break;
      case LED1:
        digitalWrite(led1pin, HIGH);
        digitalWrite(led2pin, LOW);
        digitalWrite(led3pin, LOW);

        zustand = LED2;
        einMillis = millis();
        einIntervall = ZEITPHASE;
        break;
      case LED2:
        digitalWrite(led1pin, LOW);
        digitalWrite(led2pin, HIGH);
        digitalWrite(led3pin, LOW);
        zustand = LED3;
        einMillis = millis();
        einIntervall = ZEITPHASE;
        break;
      case LED3:
        digitalWrite(led1pin, LOW);
        digitalWrite(led2pin, LOW);
        digitalWrite(led3pin, HIGH);
        zustand = LED1;
        einMillis = millis();
        einIntervall = ZEITPHASE;
        break;
      case Aus:
        digitalWrite(led1pin, LOW);
        digitalWrite(led2pin, LOW);
        digitalWrite(led3pin, LOW);
        zustand = Warten;
        einMillis = millis();
        einIntervall = ZEITPHASE;
        break;
    }

  }
}

[/code]

Tommi6:
Also 1. Taster schaltet ein 2.Taster wieder aus. Ich hoffe ihr könnt mir ein wenig helfen.

Du fragst Tatser 2 nur ab, wenn Zustand warten.

unorthodox geht es nach der dritten LED aus:

void loop() {
  tasterstartStatus = digitalRead(tasterstartPin);
  taster1startStatus = digitalRead(tasterausPin);
  if (millis() - einMillis >= einIntervall) {
    switch (zustand) {
      case Warten:
        if (tasterstartStatus) {
          zustand = LED1;
        }
        break;
      case LED1:
        digitalWrite(led1pin, HIGH);
        digitalWrite(led2pin, LOW);
        digitalWrite(led3pin, LOW);
        zustand = LED2;
        einMillis = millis();
        einIntervall = ZEITPHASE;
        break;
      case LED2:
        digitalWrite(led1pin, LOW);
        digitalWrite(led2pin, HIGH);
        digitalWrite(led3pin, LOW);
        zustand = LED3;
        einMillis = millis();
        einIntervall = ZEITPHASE;
        break;
      case LED3:
        digitalWrite(led1pin, LOW);
        digitalWrite(led2pin, LOW);
        digitalWrite(led3pin, HIGH);
        if (taster1startStatus) {
          zustand = Aus;
        }
        else {
          zustand = LED1;
        }
        einMillis = millis();
        einIntervall = ZEITPHASE;
        break;
      case Aus:
        digitalWrite(led1pin, LOW);
        digitalWrite(led2pin, LOW);
        digitalWrite(led3pin, LOW);
        zustand = Warten;
        einMillis = millis();
        einIntervall = ZEITPHASE;
        break;
    }
  }
}

Wenn Du bei jeder LED ausmachen willst, musst Du das auch genauso in case LED1/LED2 reinschreiben.

Zusatzfrage: Wie hast Du die Taster verdrahtet?

Und dann geh mal in das andere Post von Dir und bitte den Mod mal das zu löschen - sonst werden das zwei Threads...

(deleted)

Danke für die Antworten werde nachher mal testen