Hilfe bei Unterbrechung Lichtschranke bei Rolltor/Kabine

Mein Problem liegt darin, dass wenn die Lichtschranke unterbrochen bleibt (jemand steht drin) der Motor ja wegen der Schleife (siehe *) festhängt.

Ich weiß nicht, wie ich das Codemäßig umsetze.

So ganz habe ich den Ablauf noch nicht verstanden...
Aber bemerkt, dass das ein Ablauf werden soll. Besser gesagt, eine Ablaufsteuerung.

Mir gefallen die ganzen verschränkten if mit ihren Bedingungen nicht.
Zumindest nicht auf diese Art.

Verschachtelungstiefen von über 2 entziehen sich einer intuitiven Erfassung.
Auch verknüpfte Bedingungen werden schnell zu komplex.
Damit wird die Entwicklung fehlerträchtig und schwerer zu testen.

Also: Halte es einfach und übersichtlich.

Auch scheinen mir die delay() allesamt überflüssig.
Das geht auch anders.

Mein Tipp:
Baue eine Zustandstabelle!

Zustände, welche ich so erkennen kann:

  1. Endlage oben
  2. Endlage unten
  3. Fährt runter
  4. Fährt hoch
  5. Runterfahrt gestoppt (wg Lichtschranke)
    Habe ich welche vergessen/übersehen?

Definiere für jeden Zustand die Bedingungen, welche zu einem Zustandswechsel führen sollen.

So bekommst du den Automaten sauber und übersichtlich gestrickt.

Übrigens:

pinMode (powerMot, OUTPUT); // Relais K4
// hier kurze Low Phase
digitalWrite (powerMot, HIGH);

Das ist wohl nicht beabsichtigt.

evtl. besser:

// hier ohne Low Phase
digitalWrite (powerMot, HIGH);
pinMode (powerMot, OUTPUT); // Relais K4