motore passo passo pilotato a mezzi passi

Salve ho un problema che non riesco a risolvere e spero in un vostro aiuto.
vi spiego sto pilotando un motore passo passo con un codice che mi permette tramite 2 pulsanti ed un potenziometro di regolare la velocità ed il senso di rotazione e funziona benissimo ma il problema è che non riesco a farlo girare a mezzi passi ossia in half step,
Non so come modificare il codice, spero che qualcuno mi possa aiutare grazie

#include <Stepper.h>
 
const int pwmA = 8;
const int pwmB = 9;
const int brakeA = 10;
const int brakeB = 11;
const int dirA = 12;
const int dirB = 13;
const int buttonA = 2;
const int buttonB = 3;
const int potPin = 0; // Pin analogico del potenziometro
 
const int STEPS = 200; //numero di passi per rivoluzione -> 360/gradi
 
// inizializziamo la classe myStepper
Stepper myStepper(STEPS, dirA, dirB, brakeA, brakeB);
 
void setup() {
  pinMode(pwmA, OUTPUT);
  digitalWrite(pwmA, HIGH);
  pinMode(pwmB, OUTPUT);
  digitalWrite(pwmB, HIGH);
   
  pinMode(brakeA, OUTPUT);
  digitalWrite(brakeA, LOW);
  pinMode(brakeB, OUTPUT);
  digitalWrite(brakeB, LOW);
 
  pinMode(buttonA, INPUT);
  pinMode(buttonB, INPUT);
  pinMode(potPin, INPUT);
 
  Serial.begin(9600); // se vogliamo mostrare a terminale la velocità
}
 
void loop() {
  int passi = 1;
  int val = analogRead(potPin);
  int delayTime = map(val,0,2048,0,1000);
  Serial.println(delayTime);
   
  if(digitalRead(buttonA) == HIGH){
    orario(passi, delayTime);
  }
   
  if(digitalRead(buttonB) == HIGH){
    antiorario(passi, delayTime);
  }
}
 
void orario(int passi, int delayTime){
  myStepper.step(passi);
  delay(delayTime);
}
 
void antiorario(int passi, int delayTime){
  myStepper.step(-passi);
  delay(delayTime);
}

Se lo puoi pilotare a mezzi passi dipende dalla libreria e misa che quella libreria non lo permetta.
Ciao Uwe

a mezzi passi si può fare perché ho uno scheck che me lo permette ma non integra le funzioni dei pulsanti e del potenziometro,
lo scheck è questo

void setup()
{

  //configurati come uscite
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
 
  //forzo le uscite a livello logico basso
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
}
 
void loop()
{
  //FASE 1
  
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
  delay(10);
 
  //FASE 2
  
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  digitalWrite(13, LOW);
  delay(10);
 
  //FASE 3
  
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH);
  digitalWrite(13, LOW);
  delay(10);
 
  //fase 4
  
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  digitalWrite(13, LOW);
  delay(10);
  
  //FASE 5
  
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
  delay(10);
 
  //FASE 6
  
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  digitalWrite(12, LOW);
  digitalWrite(13, HIGH);
  delay(10);
 
  //FASE 7
  
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, HIGH);
  delay(10);
 
  //fase 8
  
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, HIGH);
  delay(10);
 
}

Non c'è proprio nessuno che può aiutarmi a compilare questo sketch?

Risolto.
Sono riuscito a modificare a mio piacimento uno sketch trovato in rete, praticamente con un potenziometro regolo il ritardo tra uno step e l'altro e con un deviatore inverto la rotazione il tutto in half step.

Posto lo sketch perché potrebbe servire a qualcun'altro.

// Motore passo passo mezzi passi

/* seleziona il pin di ingresso 
per il potenziometro  */
int PinSensore = A0;    

// seleziona il pin di uscita per il LED
int PinLed = 2;        

/* variabile per memorizzare 
il valore proveniente dal sensore */
int ValoreSensore = 0;  

// indirizzi dei bit delle fasi e interruttore
int PinFaseA = 10; 
int PinFaseB = 11;
int PinFaseC = 12;
int PinFaseD = 13;
int PinInterruttore = 8; 

// variabile per stabilire il verso di rotazione
int ValoreInterruttore;

void setup() {
  pinMode(PinLed, OUTPUT); 
/*  LED su pin 2 acceso se 
il verso di rotazione è antiorario  */
  
  pinMode(PinFaseA, OUTPUT);
  pinMode(PinFaseB, OUTPUT);
  pinMode(PinFaseC, OUTPUT);
  pinMode(PinFaseD, OUTPUT);
  pinMode(PinInterruttore, INPUT);
  Serial.begin(9600);
  }
  
void loop() {
  //legge il valore tra 0 e 5V dal potenziometro
  ValoreSensore = analogRead(PinSensore);
  ValoreSensore = map(ValoreSensore,0,1024,1,190);
  Serial.print(ValoreSensore);  ValoreInterruttore=digitalRead(PinInterruttore);
  if(ValoreInterruttore == HIGH){

//ROTAZIONE ANTIORARIA half STEP
    Serial.println(); 
    digitalWrite(PinLed, HIGH);

    digitalWrite(PinFaseA, HIGH);
    digitalWrite(PinFaseB, LOW);
    digitalWrite(PinFaseC, LOW);
    digitalWrite(PinFaseD, LOW);
    delay(ValoreSensore);
    
// 1010 (10)
    digitalWrite(PinFaseA,HIGH);
    digitalWrite(PinFaseB,LOW);
    digitalWrite(PinFaseC,HIGH);
    digitalWrite(PinFaseD,LOW);
    delay(ValoreSensore);

    digitalWrite(PinFaseA, LOW);
    digitalWrite(PinFaseB, LOW);
    digitalWrite(PinFaseC, HIGH);
    digitalWrite(PinFaseD, LOW);
    delay(ValoreSensore);
    
    // 0110 (6)
    digitalWrite(PinFaseA,LOW);
    digitalWrite(PinFaseB,HIGH);
    digitalWrite(PinFaseC,HIGH);
    digitalWrite(PinFaseD,LOW);
    delay(ValoreSensore);

    digitalWrite(PinFaseA,LOW);
    digitalWrite(PinFaseB,HIGH);
    digitalWrite(PinFaseC,LOW);
    digitalWrite(PinFaseD,LOW);
    delay(ValoreSensore);

     // 0101 (5)
    digitalWrite(PinFaseA,LOW);
    digitalWrite(PinFaseB,HIGH);
    digitalWrite(PinFaseC,LOW);
    digitalWrite(PinFaseD,HIGH);
    delay(ValoreSensore);

    digitalWrite(PinFaseA,LOW);
    digitalWrite(PinFaseB,LOW);
    digitalWrite(PinFaseC,LOW);
    digitalWrite(PinFaseD,HIGH);
    delay(ValoreSensore);
    
    // 1001 (9)
    digitalWrite(PinFaseA,HIGH);
    digitalWrite(PinFaseB,LOW);
    digitalWrite(PinFaseC,LOW);
    digitalWrite(PinFaseD,HIGH);
    delay(ValoreSensore);
    }

  else {
   
 //ROTAZIONE ORARIA half STEP
    Serial.println();
    digitalWrite(PinLed, LOW); 
   
 // 1001 (9)  
    digitalWrite(PinFaseA,HIGH);
    digitalWrite(PinFaseB,LOW);
    digitalWrite(PinFaseC,LOW);
    digitalWrite(PinFaseD,HIGH);
    delay(ValoreSensore);

    digitalWrite(PinFaseA,LOW);
    digitalWrite(PinFaseB,LOW);
    digitalWrite(PinFaseC,LOW);
    digitalWrite(PinFaseD,HIGH);
    delay(ValoreSensore);
    
    // 0101 (5)
    digitalWrite(PinFaseA,LOW);
    digitalWrite(PinFaseB,HIGH);
    digitalWrite(PinFaseC,LOW);
    digitalWrite(PinFaseD,HIGH);
    delay(ValoreSensore);

    digitalWrite(PinFaseA,LOW);
    digitalWrite(PinFaseB,HIGH);
    digitalWrite(PinFaseC,LOW);
    digitalWrite(PinFaseD,LOW);
    delay(ValoreSensore);
    
    // 0110 (6)
    digitalWrite(PinFaseA,LOW);
    digitalWrite(PinFaseB,HIGH);
    digitalWrite(PinFaseC,HIGH);
    digitalWrite(PinFaseD,LOW);
    delay(ValoreSensore);

    digitalWrite(PinFaseA, LOW);
    digitalWrite(PinFaseB, LOW);
    digitalWrite(PinFaseC, HIGH);
    digitalWrite(PinFaseD, LOW);
    delay(ValoreSensore);
    
    // 1010 (10)
    digitalWrite(PinFaseA,HIGH);
    digitalWrite(PinFaseB,LOW);
    digitalWrite(PinFaseC,HIGH);
    digitalWrite(PinFaseD,LOW);
    delay(ValoreSensore);

    digitalWrite(PinFaseA, HIGH);
    digitalWrite(PinFaseB, LOW);
    digitalWrite(PinFaseC, LOW);
    digitalWrite(PinFaseD, LOW);
    delay(ValoreSensore);
  }

}