ich bin jetzt mit den Detailabläufen deiner Maschine nicht vertraut.
Und kann es auch nicht richtig werden weil du nur Zahlen im switch-case verwendest.
Diese Zahlen sagen dir in einem halben Jahr wenn du den Code verändern willst auch nix mehr.
Deswegen gebe dir einen Ruck und führe enum-konstanten ein.
Ich würde das so machen:
Zunächst nur als Kommentar hinter der Nummer
case 23: // dreiWortName
if (not MotorZB.moving() && not MotorSF.moving()) { // Überprüfen, ob Zuführband und Stufenförderer nicht mehr bewegt werden
..
..
case 24: // dreiWortName
if (not MotorSF.moving()) { // Stufenförderer nach unten bewegen
und dann wenn du die Konstanten hingeschrieben hast
alle in der enum-Definition zusammentragen.
Das gilt noch viiiel mehr für EIn/Ausgänge
digitalWrite(30, HIGH);
statt der Zahl 30 eine Konstante definieren.
Du suchst dich dumm und dusselig wenn du den IO-pin noch einmal änderst und dann an einer Stelle im Programm vergisst die "30" in eine - keine Ahnung - "42" änderst.
Wenn es eine Konstante mit selbsterklärendem Namen ist verstehst du später dein eigenes Programm schneller und besser und wenn du es an dieser einen Stelle den Zahlenwert geändert hast dann stimmt er überall.
Zu der Abfrage der Zähllichtschranke:
Es könnte sein dass eine einfache Abfrage auf den Zustand
ausserhalb der anderen If-Bedingung
if (switchStateZ == 1) { // Lichtschranke erkennt ein Teil
qty = qty + 1;
}
nicht funktioniert. Sondern dass es notwendig wird den Wechsel von LOW nach HIGH zu erkennen.
Das nennt man Flankenerkennung.
Und das ist noch eine Stelle wo sich Konstanten lohnen:
const byte teilVorLS = HIGH // LS wie L)icht-S)schranke
const byte keinTeilVorLS = !teilVorLS // mit "!" das HIGH automatisch zum LOW invertieren
if (switchStateZ == teilVorLS) {
...}
if (switchStateZ == keinTeilVorLS ) {
...}
Aber es gibt eben auch Leute die ihr Leben nur dann spannend und interessant finden, wenn sie immer wieder aufs neue mit halbausgegorenen Schnellschüssen aus der Hüfte drei Stunden lang herumprobiert haben bis es läuft
statt
einmal 30 Minuten in gut formulierte Konstanten zu investieren
und dann zukünftig innerhalb von drei Minuten die Programmanpassung fertig haben.