Position eines Schrittmotors speichern

Wäre jemand bitte so nett und würde über mein Sketch drübersehen?

Folgendes soll erreicht werden:

Hardware:
Schrittmotor 1 - 200 Steps, 6rpm
Schrittmotor 2 - 513 Steps, 60rpm
Poti: min 0, max 1023
Taster - Ein-/Aus
Arduino Uno
Adafruit Motor Shield V2.3

Taster "true": bei erstmaligem Betätigen -> 4 Sekunden warten
Analogen Wert des Poti's auslesen (min und Max soll auf 15 Werte aufgeteilt werden)
Wert vergleichen

Abhängig vom Ergebnis soll sich Motor 1 immer 20 Steps bewegen und Motor 2 n-Sekunden lang drehen (513 Steps = eine Umdrehung; bei 60rpm dauert eine Umdrehung eine Sekunde)

Das ganze Spielchen soll solange wiederholt werden bis der Taster erneut gedrückt wird.

Hier mal der Code, erstellt mit meinen bescheidenen und ewig nicht mehr angewendeten C-Kenntnissen:

#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_MS_PWMServoDriver.h"

// Create the motor shield object with the default I2C address
Adafruit_MotorShield AFMS = Adafruit_MotorShield(); 
// Or, create it with a different I2C address (say for stacking)
// Adafruit_MotorShield AFMS = Adafruit_MotorShield(0x61); 

// Connect a stepper motor with 200 steps per revolution (1.8 degree)
// to motor port #2 (M3 and M4)
Adafruit_StepperMotor *bigMotor = AFMS.getStepper(200, 2);
// Connect a stepper motor with 200 steps per revolution (1.8 degree)
// to motor port #1 (M1 and M2)
Adafruit_StepperMotor *smallMotor = AFMS.getStepper(513,1);

const int minPoti = 0;
const int maxPoti = 1023;
int einAusPin = 2;
int potiPin = 0;


void setup() {
  //Serial.begin(9600);           // set up Serial library at 9600 bps
  pinMode(einAusPin, INPUT);            // PIN 2 = INPUT (Haupttaster)
  
  //Serial.println("CASE ANNEALER!");

  AFMS.begin();  // create with the default frequency 1.6KHz
  //AFMS.begin(1000);  // OR with a different frequency, say 1KHz
  
  bigMotor->setSpeed(6);    // 6 rpm  
  smallMotor->setSpeed(60);  // 60 rpm   
}

void loop() {
  
  int einAusTaster;
  int i=0;
  int wertPoti;
  int sekunden;

  einAusTaster = digitalRead(einAusPin);
  
  while (einAusTaster){

    if (i == 0){
      delay(4000);      // 4 Sekunden bis die Rotation beginnt
    }
    else{
      i++;  
      wertPoti = analogRead(potiPin);
      sekunden = map(wertPoti, minPoti, maxPoti, 0, 14);
      switch(sekunden){
        case 0:
          Serial.println("0 Sekunden");
          break;
        case 1:
          Serial.println("1 Sekunde");
          bigMotor->step(20, FORWARD, SINGLE);    // Hauptmotor dreht bis zur nächsten Hülse 
          smallMotor->step(513*sekunden, FORWARD, SINGLE);  // Drehteller dreht sich
          break;
        case 2:
          Serial.println("2 Sekunden");
          bigMotor->step(20, FORWARD, SINGLE);
          smallMotor->step(513*sekunden, FORWARD, SINGLE);
          break
        case 3:
          Serial.println("3 Sekunden");
          bigMotor->step(20, FORWARD, SINGLE);
          smallMotor->step(513*sekunden, FORWARD, SINGLE);
          break;
        case 4:
          Serial.println("4 Sekunden");
          bigMotor->step(20, FORWARD, SINGLE);
          smallMotor->step(513*sekunden, FORWARD, SINGLE);
          break;
        case 5:
          Serial.println("5 Sekunden");
          bigMotor->step(20, FORWARD, SINGLE);
          smallMotor->step(513*sekunden, FORWARD, SINGLE);
          break;
        case 6:
          Serial.println("6 Sekunden");
          bigMotor->step(20, FORWARD, SINGLE);
          smallMotor->step(513*sekunden, FORWARD, SINGLE);
          break;
        case 7:
          Serial.println("7 Sekunden");
          bigMotor->step(20, FORWARD, SINGLE);
          smallMotor->step(513*sekunden, FORWARD, SINGLE);
          break;
        case 8:
          Serial.println("8 Sekunden");
          bigMotor->step(20, FORWARD, SINGLE);
          smallMotor->step(513*sekunden, FORWARD, SINGLE);
          break;
        case 9:
          Serial.println("9 Sekunden");
          bigMotor->step(20, FORWARD, SINGLE);
          smallMotor->step(513*sekunden, FORWARD, SINGLE);
          break;
        case 10:
          Serial.println("10 Sekunden");
          bigMotor->step(20, FORWARD, SINGLE);
          smallMotor->step(513*sekunden, FORWARD, SINGLE);
          break;
        case 11:
          Serial.println("11 Sekunden");
          bigMotor->step(20, FORWARD, SINGLE);
          smallMotor->step(513*sekunden, FORWARD, SINGLE);
          break;
        case 12:
          Serial.println("12 Sekunden");
          bigMotor->step(20, FORWARD, SINGLE);
          smallMotor->step(513*sekunden, FORWARD, SINGLE);
          break;
        case 13:
          Serial.println("13 Sekunden");
          bigMotor->step(20, FORWARD, SINGLE);
          smallMotor->step(513*sekunden, FORWARD, SINGLE);
          break;
        case 14:
          Serial.println("14 Sekunden");
          bigMotor->step(20, FORWARD, SINGLE);
          smallMotor->step(513*sekunden, FORWARD, SINGLE);
          break;
      }
      delay(1);   // Pause für Stabilität zwischen dem Einlesen
    }
  }
}

Ich hoffe ich habe mein Vorhaben halbwegs erklären können.