Position eines Schrittmotors speichern

Hallo und danke für's Überprüfen.

Der Taster ist eigentlich ein Schalter, habe ich vergessen zu erwähnen.

Das switch werde ich dann mal nach deinem Vorschlag abändern.

Zur Variable i: Ich müsste erkennen, ob das Gerät gerade eingeschaltet wurde. Es soll dann eben diese 4 Sekunden verweilen und dann mit der eigentlichen Funktion starten. Ich denke aber, ich kann dies ohnehin vernachlässigen. Wofür ist das Serial.print(sekunden); eingebaut? Die Ausgabe über Serial habe ich vorerst nur zum Testen eingebaut, die kommt dann wieder weg.

Wäre es so funktionaler?

#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 einAusSchalter;
  int i=0;
  int wertPoti;
  int sekunden;

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

    if (i == 0){
      delay(4000);      // 4 Sekunden bis die Rotation beginnt
    }
    else{
      i++;  
      wertPoti = analogRead(potiPin);
      sekunden = map(wertPoti, minPoti, maxPoti, 0, 14);

      if(sekunden){
        bigMotor->step(20, FORWARD, SINGLE);    // Hauptmotor dreht bis zur nächsten Hülse 
        smallMotor->step(513*sekunden, FORWARD, SINGLE);  // Drehteller dreht sich
      }
      delay(1);   // Pause für Stabilität zwischen dem Einlesen 
    }
  }
}

LG