//Konstanten
#define BUTTON_ZU 2
#define LED_OBEN 5
#define LED_UNTEN 6
#define BUTTON_AUF 3
#define ZEIT 25
#define STATE_OBEN 1
#define STATE_ZU 2
#define STATE_UNTEN 3
#define STATE_AUF 4
#define STATE_STOP 5
int state = STATE_OBEN;
int counter = ZEIT;
void setup() {
// put your setup code here, to run once:
//Pins konfigurieren
pinMode(BUTTON_ZU, INPUT_PULLUP);
pinMode(LED_OBEN, OUTPUT);
pinMode(LED_UNTEN, OUTPUT);
pinMode(BUTTON_AUF, INPUT_PULLUP);
Serial.begin(115200);
}
void loop() {
//Statemachine
switch (state) {
case STATE_OBEN:
Serial.println("Bin im Zustand OBEN");
digitalWrite(LED_OBEN, HIGH);
digitalWrite(LED_UNTEN, LOW);
//Zustandsübergang
if (digitalRead(BUTTON_ZU) == LOW) {
state = STATE_ZU;
}
break;
case STATE_STOP:
Serial.println("Bin im Zustand Stop");
if (digitalRead(BUTTON_ZU) == LOW) {
state = STATE_ZU;
}
else {
if (digitalRead(BUTTON_AUF) == LOW) {
state = STATE_AUF;
}
}
break;
case STATE_ZU:
Serial.println("Bin im Zustand ZU");
if (digitalRead(LED_UNTEN) == HIGH) {
digitalWrite(LED_UNTEN, LOW);
}
else {
digitalWrite(LED_UNTEN, HIGH);
}
digitalWrite(LED_OBEN, LOW);
//Zustandsübergang
counter = counter - 1;
if (counter == 0) {
state = STATE_UNTEN;
counter = ZEIT;
}
if (digitalRead(BUTTON_ZU) == LOW) {
state = STATE_STOP;
}
break;
case STATE_UNTEN:
Serial.println("Bin im Zustand UNTEN");
digitalWrite(LED_UNTEN, HIGH);
digitalWrite(LED_OBEN, LOW);
if (digitalRead(BUTTON_AUF) == LOW) {
state = STATE_AUF;
}
break;
case STATE_AUF:
Serial.println("Bin im Zustand AUF");
digitalWrite(LED_UNTEN, LOW);
if (digitalRead(LED_OBEN) == HIGH); {
digitalWrite(LED_OBEN, LOW);
}
if (digitalRead(BUTTON_AUF) == LOW) {
state = STATE_STOP;
}
//Zustandsübergang auf Oben
if (state == STATE_AUF) {
counter = counter - 1;
if (counter == 0) {
state = STATE_OBEN;
counter = ZEIT;
}
}
break;
}
delay(200);
}