[gelöst] FSM Verständnisfrage

Hallo zusammen an diesem heißen Sonntag.

Ich habe mich nun endlich an eurem Rat gehalten und an eine FSM rangetraut. Nun stehe ich vor folgendem Problem: Kann ich am Ende eines Case mit if else zu unterschiedlichen Case springen?

    case HMAbwurf:
      if (MilliVerzoegerung(1000)) {
        Serial.println("2HMAbwurf");
        int val5 = analogRead(ziggiPin);
        Serial.println(val5);

        if (val5 > 900){

        stepper1.moveTo(75);                             // fahre Hülsenmotor zum abwurf
        while (stepper1.currentPosition() != 75)
        stepper1.run();
        zustand = HMAufn;
        }
        else
        zustand = SMuHMAufn;
      }
      break;

Grüße Christian

Du kannst die Variable zustand natürlich auf jeden beliebigen zulässigen Wert setzen.
Ich nehme mal an das ist ein enum der in deinem switch(zustand) verwendet wird.

Das “dahin springen” geschieht natürlich nur indirekt:
break; setzt nach der Klammer um switch(zustand) {  } fort. Wenn danach nicht anderes mit der globalen Variablenzustandpassiert, hat sie beim nächsten Durchlauf von loop wohl noch den gleichen Wert…

Ist halt Mist, wenn man nicht den kompletten Sketch postet. Scheint sich ja aber schon erledigt zu haben.