AccelStepper rotazione da 359° a 1°

Ciao,
Devo far girare una pala in modo che segua sempre il percorso più breve in un angolo giro. Scrivendo così passando da 359 a 1 e viceversa, invece di fare 2 gradi di rotazione, ne fa 358.
Come posso fargli seguire sempre il percorso più breve?

myStepper.run();
WingAngle = AWA*gear_ratio;
myStepper.moveTo(WingAngle/stepPerAngle);

Parliamo di uno stepper a rotazione continua?
Comunque non l'ho mai usato, ma penso che invece del metodo moveTo() tu possa usare il movimento relativo, ossia move().

Si è continuo. Il problema è che quando deve passare da 359 a 0 gradi, o viceversa invece di fare una rotazione di 1 grado ne fa una da 359

Appunto, se tu memorizzi la posizione corrente ti basta usare myStepper.move() e muovere di un valore positivo o negativo in base a quale distanza è minore, ossia il valore assoluto della differenza tra le due posizioni distanti 360 gradi (ossia la nuova posizione +360 se minore di 180, oppure -360 se maggiore di 180).
Prova a farti una simulazione con Excel per trovare la formula esatta.

Ho fatto così... sembra eseguire correttamente ma appena finito, dal nuovo angolo negativo torna indietro e fa un altro giro.
Potrei postare il codice completo ma è piuttosto lungo

if(WingAngle - WA_p <= 180) {
        myStepper.run();
        WingAngle_aux = AWA*gear_ratio;
        myStepper.moveTo(WingAngle_aux/stepPerAngle);
        
        digitalWrite(green_led, HIGH);
        digitalWrite(red_led, LOW);
        digitalWrite(yellow_led, HIGH);
      } else {
        WingAngle = AWA*gear_ratio;
        WingAngle_aux = (-360 + AWA)*gear_ratio;
        myStepper.moveTo(WingAngle_aux/stepPerAngle);
        myStepper.runToPosition();
        myStepper.run();
  
        digitalWrite(green_led, LOW);
        digitalWrite(red_led, HIGH);
        digitalWrite(yellow_led, HIGH);

        delay(5000);
      }

Crosspost : AccelStepper rotation from 359° to 1° - Programming Questions - Arduino Forum

Ciao, Ale.

Il cross-post non è permesso da regolamento (anche tra lingue diverse), chiudo quindi il thread e l'OP continui nel nuovo thread che ha aperto.

Guglielmo