Aiuto collegamento Nema 17 con il drive a4988,

ciao!
sto seguendo un progetto con un motore passo passo nema 17 (modello 42BYGHW208)
e il driver a4988

ho seguito i collegamenti in questo modo:

(driver a4988)

Vmot=+pila 9 volt
gnd =-pila 9 volt

poi c'è 2B,2A,1A,1B
che non capisco in che ordine collegarli ,il motore ha 4 colori blu,verde,rosso e nero

Vdd= 5 volt su arduino power
gnd=in comune con -pila e - gnd power arduino

la parte sotto dei pin ho collegato solo
Step al pin 3
e dir al pin 2

ho collegato il pulsante

resistenza di 330 ohm
neutro
| |
\
al pin 8 5 volt power arduino

per ora non funziona nulla

Con la pila a 9V. non fai nulla mi sa, troppo poca corrente disponibile.
Se hai un tester misura la resistenza fino a trovare le due coppie che hanno una resistenza bassa, queste vanno collegate una coppia ad A1 e A2 e l'altra a B1 e B2.

Oltre a step e dir devi collegare anche EN per abilitare il driver, quando è attivo vedrai che l'asse del motore si blocca e non girra più con le mani, a quel punto puoi inviare gl impulsi di step per farlo girare e dir per la direzione in cui deve ruotare.

sono riuscito a realizzare il tutto ed il motore almeno per il mio scopo funziona perfettamente,dato che deve compiere un giro di 45 gradi in un secondo
i collegamenti erano nero 1a , verde 1 b , rosso 2 a e blu 2b
bisogna collegare,ponticellare reset sleep

ora dovrei inserire in questo codice solamente un comando per il buzzer,esempio collegandolo al pin 4 al premere del pulsante,quindi gira un attimo il motore e mi suona il buzzer

int DIR = 2;
int STEP = 3;
 
int Rotate = 7;
int pinGo = 8;
 
void setup() {
  Serial.begin(9600);
  pinMode(DIR, OUTPUT);
  pinMode(STEP, OUTPUT);
 
  pinMode( pinGo,INPUT );
  pinMode( Rotate,INPUT );
}
 
void loop()
{
    digitalWrite(DIR,HIGH);
    delay(50);
 
    if ( digitalRead( Rotate ) == HIGH ) {
      for ( int i=0; i<200; i++) { stepGo(); delay(10); }
    }
    if ( digitalRead( pinGo ) == HIGH ) {
        delay( 300 );
        stepGo();
    }
}
 
void stepGo() {
        digitalWrite(STEP, HIGH);
        delayMicroseconds(100);
        digitalWrite(STEP, LOW);
        delayMicroseconds(100);
}

se il buzzer deve suonare per tutto il tempo che il motore gira basta che fai così:

if ( digitalRead( Rotate ) == HIGH )
   {
      digitalWrite(pin_buzzer, HIGH);
      for ( int i=0; i<200; i++) { stepGo(); delay(10); }
      digitalWrite(pin_buzzer, LOW);
    }

Reset e sleep se non ricordo male hanno una resistenza di pull-up sul driver, se non li devi usare li puoi lasciare scollegati o collegarli al positivo +5V

non per tutto il tempo un po di meno,o magari posso regolare il giro del motore di 45 gradi in un secondo?

quindi devo solo definire sopra nel codice
pin_buzzer = 4

e in void setup?

scusami alexxandro ma in 90 post non hai avuto il tempo di caricare e vedere come funziona il programma di esempio che fa lampeggiare un led?
Perchè il buzzer funziona allo stesso modo (se si tratta di quello attivo, cioè quello che quando lo alimenti suona)

ho provato a compilare questo codice
quindi premo il pulsante 7 e mi suona il beep per un secondo
però non capisco come mai dopo 4/5 giri ,non gira piu il motore

int DIR = 2;
int STEP = 3;
 
int Rotate = 7;
int pinGo = 8;

int buzzer = 4;
 
void setup() {
  Serial.begin(9600);
  pinMode(DIR, OUTPUT);
  pinMode(STEP, OUTPUT);
 
  pinMode( pinGo,INPUT );
  pinMode( Rotate,INPUT );

  pinMode (buzzer, OUTPUT);
}
 
void loop()
{
    digitalWrite(DIR,HIGH);
    delay(50);
 
    if ( digitalRead( Rotate ) == HIGH ) {
      digitalWrite(buzzer, HIGH);
      tone(buzzer, 900, 1000);
      for ( int i=0; i<25; i++) { stepGo(); delay(10); }
  
  if ( digitalRead( Rotate ) == HIGH ) {
    digitalWrite(buzzer, LOW);
  }
    }
    if ( digitalRead( pinGo ) == HIGH ) {
        delay( 300 );
        stepGo();
    }
}
 
void stepGo() {
        digitalWrite(STEP, HIGH);
        delayMicroseconds(100);
        digitalWrite(STEP, LOW);
        delayMicroseconds(100);
}