Aiuto Stepper Motor

Sto iniziando ad utilizzare lo stepper motor ed ho un problema che non riesco a risolvere, secondo il datasheet del mio 28BYJ-48 per fare un giro completo di 360° ci vogliono circa 4.090 passi, così ho deciso di stampare i passi su un monitor seriale ma me ne da la metà per ogni ciclo di 360°, perchè questo? Il motore si attiva solamente quando un pulsante è premuto.

int button_1 = 2; //Pulsante 1 sul pin 2
int button_2 = 3; //Pulsante 2 sul pin 3
int motorPin1 = 8; //IN1 sul pin 8
int motorPin2 = 9; //IN2 sul pin 9
int motorPin3 = 10; //IN3 sul pin 10
int motorPin4 = 11; //IN4 sul pin 11
int val=0; //Passi
int motor_Speed = 4;
int motor_Step;
int val1 = 0;
int val2 = 0;

void setup() {
pinMode(button_1, INPUT); //Imposto il pin 2 come input
pinMode(button_2, INPUT); //Imposto il pin 3 come input
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
Serial.begin(9600);
}

void loop() {
Serial.println(val,DEC); //Stampo i passi
val1 = digitalRead(button_1); //Quando premo il pulsante 1 gira a sinistra
if (val1 == HIGH)
{

digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(motor_Speed);
val= val+1; //incremento di un passo
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(motor_Speed);
val= val+1; //incremento di un passo
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(motor_Speed);
val= val+1; //incremento di un passo
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(motor_Speed);
val= val+1; //incremento di un passo
}

val2 = digitalRead(button_2); //Quando premo il pulsante 2 gira a destra
if (val2 == HIGH)

{
digitalWrite(motorPin4, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin1, LOW);
delay(motor_Speed);
val= val+1; //incremento di un passo
digitalWrite(motorPin4, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin1, LOW);
delay(motor_Speed);
val= val+1; //incremento di un passo
digitalWrite(motorPin4, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin1, LOW);
delay(motor_Speed);
val= val+1; //incremento di un passo
digitalWrite(motorPin4, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin1, HIGH);
delay(motor_Speed);
val= val+1; //incremento di un passo
}
}

Buongiorno,

prima di tutto ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato, dopo di che ...

... in conformità al REGOLAMENTO, fosse anche per una sola riga, il codice va racchiuso negli appositi tag ... :roll_eyes:

Cortesemente, quindi, edita il tuo post più sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone a forma di piccola matita :pencil2: che si trova in basso del tuo post), seleziona la parte di codice e premi l'icona </> nella barra degli strumenti per contrassegnarla come codice.

Inoltre, così com'è, non è molto leggibile ... assicurati di averlo correttamente indentato nell'IDE prima di inserirlo (questo lo si fa premendo ctrlT su un PC o cmd T su un Mac all'intero del IDE). Grazie.

Guglielmo

Più preciso sono 4096 passi per giro

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.