Wie zeitliche Abläufe ohne delay() einfach gestalten?

Das Posten der Definition der Variablen und des setup kann ich verzichten, oder ist das auch von Bedeutung?

void loop()
{
  unsigned long currentMillis = millis();

 if (modus == 1 && einaus == 1)
  {
    if (endlageValue==0)
    {
      if (currentMillis  - previousMillis > Dauer )  
      {
        Schritt++;  // nächster Schritt
        switch (Schritt) 
        {
        case 1:
          analogWrite(motoreinaus, 255);// Motor - Leistung 100%
          digitalWrite(rechtslauf, LOW);// Motor - Rechtslauf aus
          digitalWrite(linkslauf, HIGH);// Motor - Linkslauf ein
          digitalWrite(led4, LOW);
          Dauer = 1000; // sec warten
          break;

        case 2:
          analogWrite(motoreinaus, 127);// Motor - Leistung 50%
          digitalWrite(led2, HIGH); 
          Dauer =1000; // Pause zeit 2
          break;


        case 3:
          digitalWrite(led2, LOW);
          digitalWrite(led3, HIGH);
          analogWrite(ein, 255); // Motor - Leistung 100%
          Dauer = 1000;
          break;

        case 4:
          digitalWrite(led3, LOW);
          digitalWrite(linkslauf, LOW);// Motor - Linkslauf aus
          digitalWrite(motoreinaus, LOW);// Motor Aus
          digitalWrite(led4, HIGH);
          Dauer=1000;
          break;


        default:
          Schritt = 0;
          Dauer = 1;     // Schrittfolge wieder von vorn
        }
        previousMillis = currentMillis; // "Delay" neu starten
      }  //  if (currentMillis  - previousMillis > Dauer )  
    }   // if (endlageValue==0)
  } //   if (modus == 1)
} // loop-Ende