From 7187c2aa5378eb057a00778ce63e6de9f551095e Mon Sep 17 00:00:00 2001 From: Julian Appel Date: Sun, 2 Feb 2025 16:47:56 +0100 Subject: [PATCH] Fixed bug, started implementing direction stuff --- seilbahn_basics/seilbahn_basics.ino | 127 +++++++++++++++++++++++++--- 1 file changed, 115 insertions(+), 12 deletions(-) diff --git a/seilbahn_basics/seilbahn_basics.ino b/seilbahn_basics/seilbahn_basics.ino index e750d40..dda0fa1 100644 --- a/seilbahn_basics/seilbahn_basics.ino +++ b/seilbahn_basics/seilbahn_basics.ino @@ -46,16 +46,87 @@ enum } anlagenzustand; // Fahrtrichtungen -enum +enum Fahrtrichtung { - STOP, - VORWÄRTS, - RÜCKWÄRTS, + HALT, + NOTHALT, + WARTE_START, + VORWAERTS_QUITTIEREN, + VORWAERTS, + RUECKWAERTS_QUITTIEREN, + RUECKWAERTS, } fahrtrichtung; +Fahrtrichtung vorherigerichtung = HALT; + +void quittierenButtonAbfragen() +{ + // Button Code [...] + if(fahrtrichtung == NOTHALT || fahrtrichtung == HALT) + { + fahrtrichtung = WARTE_START; + } + else if(fahrtrichtung == VORWAERTS_QUITTIEREN) + { + fahrtrichtung = WARTE_START; + } + else if(fahrtrichtung == RUECKWAERTS_QUITTIEREN) + { + fahrtrichtung = WARTE_START; + } + // Button Code [...] +} + +void startButtonAbfragen() +{ + // Button Code [...] + if(vorherigerichtung == VORWAERTS) + { + fahrtrichtung = RUECKWAERTS; + } + else if(vorherigerichtung == RUECKWAERTS) + { + fahrtrichtung = VORWAERTS; + } + else + { + fahrtrichtung = VORWAERTS; + } + // Button Code [...] +} + +void haltButtonAbfragen() +{ + // Button Code [...] + fahrtrichtung = HALT; + // Button Code [...] +} + +void nothaltButtonAbfragen() +{ + // Button Code [...] + fahrtrichtung = NOTHALT; + // Button Code [...] +} + +void vorwaertsButtonAbfragen() +{ + // Button Code [...] + fahrtrichtung = VORWAERTS_QUITTIEREN; + // Button Code [...] +} + +void rueckwaertsButtonAbfragen() +{ + // Button Code [...] + fahrtrichtung = RUECKWAERTS_QUITTIEREN; + // Button Code [...] +} void setup() { anlagenzustand = AUS; + fahrtrichtung = HALT; + Serial.begin(9600); // Pindefinitonen @@ -187,21 +258,50 @@ void loop() { switch(fahrtrichtung) { // Anlage steht - case STOP: + case HALT: { - + quittierenButtonAbfragen(); + vorwaertsButtonAbfragen(); + rueckwaertsButtonAbfragen(); + break; + } + // Anlage steht + case NOTHALT: + { + quittierenButtonAbfragen(); + vorwaertsButtonAbfragen(); + rueckwaertsButtonAbfragen(); + break; + } + // Anlage steht + case WARTE_START: + { + startButtonAbfragen(); break; } // Anlage fährt vorwärts - case VORWÄRTS: + case VORWAERTS_QUITTIEREN: { - + + break; + } + // Anlage fährt vorwärts + case VORWAERTS: + { + haltButtonAbfragen(); + nothaltButtonAbfragen(); break; } // Anlage fährt rückwärts - case RÜCKWÄRTS: + case RUECKWAERTS_QUITTIEREN: { - + break; + } + // Anlage fährt rückwärts + case RUECKWAERTS: + { + haltButtonAbfragen(); + nothaltButtonAbfragen(); break; } default: @@ -243,8 +343,8 @@ void loop() { // Prüfen ob immernoch gedrückt if (currentButtonStateFahrgastbetrieb == LOW) { - // Anlage in den Zustand "FAHRGAST_QUITTIEREN" versetzen - anlagenzustand = FAHRGAST_QUITTIEREN; + // Anlage in den Zustand "SERVICE_QUITTIEREN" versetzen + anlagenzustand = SERVICE_QUITTIEREN; // Speichern des ButtonStates als Vergleichswert für den nächsten Durchlauf buttonStateFahrgastbetrieb = currentButtonStateFahrgastbetrieb; } @@ -342,6 +442,9 @@ void loop() { } } + // ========== Vorwärts Button abfragen + vorwaertsButtonAbfragen(); + // ========== Ein/Aus Button abfragen // Taster abfragen und aktuellen Zustand zwischenspeichern currentButtonStateAnlageEinAus = digitalRead(KNOPF_ANLAGE_EIN_AUS) == LOW;