Buenas
Para un proyecto de fotografía esférica necesitaría que se moviera un motor paso a paso un numero determinado de veces.
Si realizo este movimiento sin aceleración el código funciona correctamente. Y el motor se mueve 6 veces y realiza un giro completo
int DirectionPin = 6; //Direction pin
int StepPin = 7; //Stepper pin
int pasos=73000/6; //73000 pasos son 360º
int Velocidad=20;
void setup(){
pinMode(DirectionPin, OUTPUT);
pinMode(StepPin, OUTPUT);
Serial.begin(9600);
}
void loop(){
for (int a=0; a<6; a++){
mover();
delay(100);
}
delay(2000);
}
void mover(){
digitalWrite(DirectionPin, LOW);
delay(500);
for (int i = 0; i < pasos; i++){
digitalWrite(StepPin, HIGH);
delayMicroseconds(Velocidad);
digitalWrite(StepPin, LOW);
delayMicroseconds(Velocidad);
}
}
Sin embargo quiero que el movimiento sea con aceleración. Me surgen bastantes dudas del funcionamiento de la libreria <AccelStepper.h>
Quisiera hacer que también se ejecutara un numero determinado de veces, pero solo se mueve 1 vez.
Alguien puede aclararme donde esta el problema en el código que utilizo con aceleracion??
#include <AccelStepper.h>
AccelStepper stepper(1, 7, 6);
int pasos;
void setup(){
stepper.setMaxSpeed(4000);
stepper.setAcceleration(2000);
}
void loop(){
for (int a=0; a<6; a++){
pasos=12167;
mover();
}
}
void mover(){
if (stepper.distanceToGo() == 0)
{
stepper.moveTo(pasos);
}
stepper.run();
}
Gracias de antemano