#include <AccelStepper.h>
// Define el tipo de interfaz y los pines de control
AccelStepper stepper0(AccelStepper::DRIVER, 3, 2);
AccelStepper stepper1(AccelStepper::DRIVER, 20, 21);
// Configuración específica del motor
const float pasosPorGrado = 1.8; // Ajusta este valor a tu configuración
void setup() {
// Configuración inicial para el primer stepper
stepper0.setMaxSpeed(1000);
stepper0.setAcceleration(200);
// Configuración inicial para el segundo stepper
stepper1.setMaxSpeed(1000);
stepper1.setAcceleration(200);
}
void loop() {
// Ejemplo de uso de la función
// Mueve el stepper0 a 90 grados de posición absoluta
moverMotorAAngulo(stepper0, 90, 'P');
delay(2000); // Espera para observar el movimiento
// Mueve el stepper1 45 grados más desde su posición actual
moverMotorAAngulo(stepper1, 45, 'R');
delay(2000); // Espera para observar el movimiento
//Viendo el comportamiendo de las funciones.
moverMotorAAngulo(stepper0, 45, 'R');
delay(2000); // Espera para observar el movimiento
}
void moverMotorAAngulo(AccelStepper &motor, float angulo, char tipoMovimiento) {
long pasosAMover = (angulo)/(1.8); // Calcula los pasos a mover basado en el ángulo
if (tipoMovimiento == 'P') { // Posición Absoluta
motor.moveTo(pasosAMover); // Establece la posición objetivo absoluta
} else if (tipoMovimiento == 'R') { // Posición Relativa
motor.move(pasosAMover); // Establece la posición objetivo relativa
}
// Ejecuta el movimiento
while (motor.distanceToGo() != 0) {
motor.run();
}
}