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
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);
}