[Risolto] DRV8825 + Motore Passo Passo + Codice di Esempio

Oggi mi sono arrivati i driver nuovi, adesso funziona tutto, ho impostato la Vref a 0.65V per ottenere una corrente di 1.3A, ho provato i microstep e tutto funziona perfettamente, però ho modificato molto il codice, quindi lo riposto nel caso possa servire a qualcuno per provare il driver drv8825.

Questo è il nuovo programma di prova, fa due giri e poi torna indietro:

#define DIR 8
#define STEP 9

#define M0 10
#define M1 11
#define M2 12

#define HALF_STEP_PAUSE  10
#define STEP_PAUSE       ( HALF_STEP_PAUSE * 2 )
#define PAUSE_FOR_RPM(x) ( 300000 / x )

int rpm = 200;
int dirLevel;
boolean forward = true;
int count = 0;
 
void setup ( ) {
  pinMode ( DIR, OUTPUT );
  pinMode ( STEP, OUTPUT );
  pinMode ( M0, OUTPUT );
  pinMode ( M1, OUTPUT );
  pinMode ( M2, OUTPUT );
 
  digitalWrite ( M0, LOW );
  digitalWrite ( M1, LOW );
  digitalWrite ( M2, LOW );
  
  Serial.begin ( 9600 );
  Serial.println ( "Test" );
}
 
void loop ( ) {
  dirLevel = forward;
  digitalWrite ( DIR, dirLevel );

  digitalWrite ( STEP, LOW );
  delayMicroseconds ( HALF_STEP_PAUSE );
  digitalWrite ( STEP, HIGH );
  delayMicroseconds ( HALF_STEP_PAUSE );
  
  if ( forward == true ) {
    count ++;
  } else if ( forward == false ) {
    count --;
  }
  if ( count > 400 ) {
    forward = false;
  } else if ( count < 0 ) {
    forward = true;
  }
  
  delayMicroseconds ( PAUSE_FOR_RPM ( rpm ) - STEP_PAUSE );
}

Ciao a tutti, Andrea