/*
* Achtung, ge�nderte Pinzuweisung. An Pin 13 h�ngt die OnBoard LED und st�rt somit eine Taster/Schalter Abfrage.
*/
constexpr byte ledPin_Rechtslauf {7};
constexpr byte ledPin_Linkslauf {8};
constexpr byte endSchalter_Rechtslauf {9};
constexpr byte endSchalter_Linkslauf {10};
constexpr byte tasterPin_Rechtslauf {11};
constexpr byte tasterPin_Linkslauf {12};
constexpr bool AN = HIGH;
constexpr bool AUS = !AN;
constexpr bool GEDRUEKT = LOW; // <-- Pinzustand bei gedr�ckten Schalter/Taster angeben
enum Status {Reset, Linkslauf, Rechtslauf, LinksErreicht, RechtsErreicht} status = Reset;
void setup(){
Serial.begin(9600); // <-- Angabe Baudrate f�r Serial Monitor abstimmen mit Serial Monitor
pinMode(ledPin_Rechtslauf, OUTPUT);
pinMode(ledPin_Linkslauf, OUTPUT);
pinMode(endSchalter_Rechtslauf, INPUT_PULLUP);
pinMode(endSchalter_Linkslauf, INPUT_PULLUP);
pinMode(tasterPin_Rechtslauf, INPUT_PULLUP);
pinMode(tasterPin_Linkslauf, INPUT_PULLUP);
digitalWrite(ledPin_Rechtslauf, AUS);
digitalWrite(ledPin_Linkslauf, AUS);
delay(1000); // kleine Pause am Start
Serial.println(F("Dr�cke einen Taster zum Start"));
}
void loop(){
switch(status){
case Reset:
if(digitalRead(tasterPin_Rechtslauf) == GEDRUEKT){
Serial.println(F("Fahrt nach Rechts"));
status = Rechtslauf;
digitalWrite(ledPin_Rechtslauf, AN);
}
if(digitalRead(tasterPin_Linkslauf) == GEDRUEKT){
Serial.println(F("Fahrt nach Links"));
status = Linkslauf;
digitalWrite(ledPin_Linkslauf, AN);
}
if(digitalRead(endSchalter_Rechtslauf) == GEDRUEKT){
Serial.println(F("Rechter Endschlag erreicht"));
Serial.println(F("Taster f�r Linkslauf dr�cken zum Start der Fahrt zum linken Endschlag"));
status = RechtsErreicht;
}
if(digitalRead(endSchalter_Linkslauf) == GEDRUEKT){
Serial.println(F("Linker Endschlag erreicht"));
Serial.println(F("Taster f�r Rechtslauf dr�cken zum Start der Fahrt zum rechten Endschlag"));
status = LinksErreicht;
}
break;
case Linkslauf:
if(digitalRead(endSchalter_Linkslauf) == GEDRUEKT){
Serial.println(F("Linker Endschlag erreicht"));
Serial.println(F("Taster f�r Rechtslauf dr�cken zum Start der Fahrt zum rechten Endschlag"));
status = LinksErreicht;
digitalWrite(ledPin_Linkslauf, AUS);
}
break;
case Rechtslauf:
if(digitalRead(endSchalter_Rechtslauf) == GEDRUEKT){
Serial.println(F("Rechter Endschlag erreicht"));
Serial.println(F("Taster f�r Linkslauf dr�cken zum Start der Fahrt zum linken Endschlag"));
status = RechtsErreicht;
digitalWrite(ledPin_Rechtslauf, AUS);
}
break;
case LinksErreicht:
if(digitalRead(tasterPin_Rechtslauf) == GEDRUEKT){
Serial.println(F("Fahrt nach Rechts"));
status = Rechtslauf;
digitalWrite(ledPin_Rechtslauf, AN);
}
break;
case RechtsErreicht:
if(digitalRead(tasterPin_Linkslauf) == GEDRUEKT){
Serial.println(F("Fahrt nach Links"));
status = Linkslauf;
digitalWrite(ledPin_Linkslauf, AN);
}
break;
default:
Serial.println(F("ERROR (Switch Case Default)"));
digitalWrite(ledPin_Rechtslauf, AUS);
digitalWrite(ledPin_Linkslauf, AUS);
}
}