Stepper motor non si muove ma ronza

Ragazzi:

  • l'alimentazione è apposto visto che uso un alimentatore 12V a 20 A
  • la vref l'ho appena regolata
  • ho controllatato anche il circuito

Invece è il software che ha problemi visto che nel mio script uso la libreria: GitHub - laurb9/StepperDriver: Arduino library for A4988, DRV8825, DRV8834, DRV8880 and generic two-pin (DIR/STEP) stepper motor drivers e non va mentre se uso uno script che non fa uso di libreria invece va. Qui sotto il codice al confronto:

Mio codice completo di gestione dei finecorsa:

#include <Arduino.h>

// POTENTIOMETER
//  Pin +5V           -> Pin laterale del potenziometro
//  Pin GND           -> Pin GND modulo e pin laterale potenz.
#define POT A7

//BUTTON SWITCH
#define BUTTONPIN 2

// ENDSTOP PIN
#define ENDSTOP_0 5  // Pin 5 connected to ENDSTOP_0 switch out
#define ENDSTOP_1 6  // Pin 6 connected to ENDSTOP_1 switch out

// Motor steps per revolution. Most steppers are 200 steps or 1.8 degrees/step
#define MOTOR_STEPS 200
#define RPM 50

#define DIR 8
#define STEP 9
#define ENABLE 13 // optional (just delete ENABLE from everywhere if not used)

// SERIAL COMUNICATION PARAMETERS
#define SERIAL_PORT 0
#define BAUDRATE 9600  //57600


int incomingByte = 0;   // for incoming serial data

// INITIAL STEPPER SPEED
int motorSpeed = RPM;     // velocità del motore
int stepCount = 0   ;     // numero di passi del motore
int carriagedir = 1 ;     // direzione del carrello

#include "DRV8825.h"
#define MODE0 12
#define MODE1 11
#define MODE2 10
DRV8825 stepper(MOTOR_STEPS, DIR, STEP, ENABLE, MODE0, MODE1, MODE2);

void setup() {
  Serial.begin(BAUDRATE); // Start serial comunication

  pinMode(BUTTONPIN, INPUT);
  pinMode(ENDSTOP_0, INPUT);
  pinMode(ENDSTOP_1, INPUT);
  delay(1);  // Wait for Driver wake up


  delay(500);
}

void loop() {

  int PotValue = analogRead(POT);// Legge il valore della tensione fornito dal potenziometro:
  motorSpeed = map(PotValue, 0, 1023, 20, 100);   // mappa il valore nel range da 0 a 100

  if (motorSpeed > 0) {
    stepper.enable();
    stepper.begin(motorSpeed);
    if (!digitalRead(ENDSTOP_0) && !digitalRead(ENDSTOP_1)) {
      // Move carriage
      switch (carriagedir) {
        case 0:    // move carriage on dir 0
          stepper.rotate(5);     // forward revolution
          stepCount--;
          break;
        case 1:    // move carriage on dir 1
          stepper.rotate(-5);     //  reverse revolution
          stepCount++;
          break;
      }
      //delay(1);        // delay in between reads for stability
    }
    else if (digitalRead(ENDSTOP_0))
    {
      // Change direction and move carriage of 5 step
      carriagedir = 1;
      stepper.move(-5);    // forward revolution
      stepCount = 0;
      //delay(10);
    }
    else if (digitalRead(ENDSTOP_1))
    {
      // Change direction and move carriage of 5 step
      carriagedir = 0;
      stepper.move(5);     //  reverse revolution
      stepCount = 0;
      //delay(10);
    }
    else
    {
      Serial.println("Houston there is a problem!");
    }
  }
  else if (motorSpeed < 1) {
    stepper.disable();    // disable motor
  }

}

Codice trovato su internet (funziona ma non riesco a modificare la velocità):

int M1dirpin = 8;  //Motor X direction pin
int M1steppin = 9; //Motor X step pin
int M1en=13;  //Motor X enable pin

void setup()
{
  pinMode(M1dirpin,OUTPUT);
  pinMode(M1steppin,OUTPUT);
  pinMode(M1en,OUTPUT);
  digitalWrite(M1en,LOW);// Low Level Enable 
}
void loop()
{
    int j;
  delayMicroseconds(2);
  digitalWrite(M1dirpin,LOW);
  for(j=0;j<=500;j++){
    digitalWrite(M1steppin,LOW);
    delayMicroseconds(2);
    digitalWrite(M1steppin,HIGH); //Rising step
    delay(1);
  }
}

Variando anche di poco il delayMicroseconds() oppure il delay() il motore comincia a ronzare e va a scatti.

Purtoppo vedo che usando anche altro codice trovato qua e la su internet non funziona.
Mi piacerebbe capire: cosa c'è che non va nel codice?