danke für den tipp...
Ich denke schon, dass es geht.
Am besten packst du z.B. trpm in nen eigenes Unterprogramm, und rufst das dann bei Bedarf auf:

void drehZahl(float a,b,c,d)
{
stepper[stepper_VL].setRPM(a);
stepper[stepper_HL].setRPM(b);
stepper[stepper_HR].setRPM(c);
stepper[stepper_VR].setRPM(d);
}

An das Unterprogramm schickst du dann einfach die gewünschten Werte:

drehZahl(12.2, 17.45, 12.92, 14);
das werde ich ausgiebig testen , eigentlich müsste man die restlichen konfigurationsbefehle für die Stepper ähnlich manipulieren können, oder?

Was deine verlorenen Schritte angeht: kann es sein, dass das Programm einfach zu schnell läuft, so dass die Motoren einfach nicht nachkommen?
glaube ich nicht, dass die Stepper nicht nachkommen, vor allem ist es ja nur der neuer, ausgewechselter:
das ist die loop:
Code:
void loop()
{
  lcd.setBacklight(LOW);
  hindernis_vorh();
  {
    alle_stepper_vorwaerts();
    bewegung = bewegung + 1;
    fahrt_ausfuehren();
  }
  if (bewegung >= 20)
  {
    lcd.setBacklight(HIGH);
    //previous_millis = current_millis;
    bewegung = 0;
    for (pos_1 = 0; pos_1 < 180; pos_1 += 1)
    {
      myservo_1.write(pos_1);
      delay(15);
      myservo_2.write(pos_1);
      delay(15);
    }
    for (pos_1 = 180; pos_1 >= 1; pos_1 -= 1)
    {
      myservo_1.write(pos_1);
      delay(15);
      myservo_2.write(pos_1);
      delay(15);
    }
    myservo_1.write(90);
    delay(15);
    myservo_2.write(90);
    delay(15);
    lcd.setBacklight(LOW);
  }
}
und "fahrt_ausfuehren()" und "fahrt fertig()" verwenden ja schon "isDone":

Code:
boolean fahrt_fertig()
{
  return        stepper[stepper_VL].isDone() && stepper[stepper_HL].isDone()
                && stepper[stepper_VR].isDone() && stepper[stepper_HR].isDone();
}


void fahrt_ausfuehren()
{
  while ( ! fahrt_fertig() )
  {
    for (idx = stepper_VL; idx < stepper_MAX; idx++)
    {
      stepper[idx].run();
      // delay(1);
    }
  }
}