smoothstep für Steppermotor integrieren, wer kann helfen

Hallo,
Ich bin jetzt mal unverschämt und frage nach umfangreicher Hilfe.
Bei meinem Projekt hänge ich gerade mal wieder... Es geht um die Integration einer Smoothstep-Funktion (Arduino Playground - Smoothstep
Mein Code sieht so aus (auszug):

void runStepperPos(){ // gotoPosition
  if (ct - lastSTEP > stepperSpeed){ 
    // drive left
    if (stepperPosition > stepperPositionP1 && stepperDirection == 0){       
      digitalWrite(step_pin,HIGH);      // make a step
      delayMicroseconds(800);           // wait for some time
      stepperPosition-=1;          
      digitalWrite(step_pin,LOW);       // end of the step
    }
    // drive right
    if (stepperPosition < stepperPositionP2 && stepperDirection == 1){       
      digitalWrite(step_pin,HIGH);      // make a step
      delayMicroseconds(800);           // wait for some time
      stepperPosition+=1;
      digitalWrite(step_pin,LOW);      // end of the step
    }
    lastSTEP = ct;              
  }
}

Ich habe also folgende Variablen:
stepperPosition = aktuelle Position des Motors in Schritten
stepperPositionP1 = Startposition des Motors in Schritten
stepperPositionP2 = Endposition des Motors in Schritten
stepperSpeed = Geschwindigkeit (Zeit zwischen den Schritten in mirosekunden)
ct = currentTime, aktuelle Zeit in microsekunden
lastSTEP = Zeit des letzen Schrittes in mikrosekunden
stepperDirection = Richtung des Motors

Dann gibt es noch das "damping", einen Wert zwischen 0 und 100, der den Smoothstep steuern soll.
0 = keine Glättung
100 = Glättung für 50% der Schritte beim Beschleunigen und dann die anderen 50% beim abbremsen

Wer hat Zeit, mich auf die richtige Fährte zu schicken?

Hat wirklich niemand so etwas schon gemacht?
pushsorry*

Ich habe mir kürzlich die EasyDriver4 Library für den Pololu Stepper Driver umgeschrieben. Diese Pololu Library erweitere ich zur Zeit um eine SmoothStep Funktion. Wenn ich die fertig habe, kommt sie auch in die EasyDriver4 Lib. Beide Libs kann man dann von meiner Website downloaden.

Es wird aber noch etwas dauern, da ich die nächsten Tage unterwegs bin. Rechne also frühestens nächstes Wochenende mit einem brauchbaren Ergebnis.

Das klingt vielversprechend. Ich werde mein Layout jetzt umstellen vom EasyDriver auf den Pololu, mal sehen ob das diesmal klappt....

Nun hab ich mal selbst ein bisschen rumgebastelt, aber das will nicht so wie ich...

folgende Funktion möchte ich gerne schreiben:

smoothDelay(stepperPosition,stepperPositionP1,stepperPositionP2);

stepperPosition ist die aktuelle Position meines Schrittmotors
stepperPositionP1 ist der Startpunkt (in schritten)
stepperPositionP2 ist der Endpunkt der Fahrt (in Schritten)

in dem smoothDelay möchte ich einfach eine Delay(ergebnis) einbauen, und die funktion nach jedem Schritt aufrufen...

#define SMOOTHSTEP(x) ((x) * (x) * (3 - 2 * (x))) //SMOOTHSTEP expression.

float A = 100.0;         //Input Min Value
float B = 10000.0;       //Input Max Value
int StepsToGo = 100;       //Input number of steps for transition

int j = 1;             //Just an Iterator.
int i = 0;             //Just another Iterator.
float N;               //Input number of steps for transition
float X;               //final smoothstepped value
float v;               //smoothstep expression variable
int Z;                // Juast an Iterator

int stepperPosition = 100;
int stepperPositionP1 = 100;
int stepperPositionP2 = 1100;


void setup() {
Serial.begin(9600);  //establish serial connection for debugging
}

void loop()
{
  if (stepperPosition < stepperPositionP2){
    smoothDelay(stepperPosition,stepperPositionP1,stepperPositionP2);
    delay(100);
    stepperPosition++;
  }
}

int smoothDelay(int _stepperPosition,int _stepperPositionP1,int _stepperPositionP2){
    j = _stepperPositionP1 - _stepperPosition;
    int N1 = _stepperPositionP2 - _stepperPositionP1;
    N = float(N1);
  
    v = j / N;                    // Iteration divided by the number of steps.
    v = SMOOTHSTEP(v);            // Run the smoothstep expression on v.
    X = (B * v) + (A * (1 - v));  // Run the linear interpolation expression using the current 
                                             
    Z  = int(X);                     
    Serial.println(Z);            // prints the soothstepped value
    j++;                          // Increments j by 1.
}

Soweit mein code, aber da hab ich irgendwo einen groben Denkfehler drin...