#include <AccelStepper.h>
// Define los pines de STEP, DIR y ENABLE del driver A4988
// (MOTOR 1)
#define DIR_PIN1 2
#define STEP_PIN1 4
#define ENABLE_PIN1 5 // Puede estar conectado directamente a GND si se quiere mantener habilitado siempre
// (MOTOR 2)
#define DIR_PIN2 12
#define STEP_PIN2 13
#define ENABLE_PIN2 14 // Puede estar conectado directamente a GND si se quiere mantener habilitado siempre
const int velocidadMotor = 3000;
const int acceleracionMotor = 1000;
//Movimiento en Pasos
//(MOTOR 1)
const int pasosAvanceMotor1 = 400;
const int pasosRetrocesoMotor1 = -200;
//(MOTOR 2)
const int pasosAvanceMotor2 = 600;
const int pasosRetrocesoMotor2 = -200;
// Tiempo de espera entre movimientos
const int tiempoDeEspera = 100;
// Crea una instancia de AccelStepper
// (MOTOR 1)
AccelStepper stepper1(AccelStepper::DRIVER, STEP_PIN1, DIR_PIN1);
// (MOTOR 2)
AccelStepper stepper2(AccelStepper::DRIVER, STEP_PIN2, DIR_PIN2);
void setup() {
// Establece la velocidad máxima y la aceleración del motor (puedes ajustar estos valores según tus necesidades)
//(MOTOR 1)
stepper1.setMaxSpeed(velocidadMotor); // Velocidad máxima en pasos por segundo
stepper1.setAcceleration(acceleracionMotor); // Aceleración en pasos por segundo al cuadrado
//(MOTOR 2)
stepper2.setMaxSpeed(velocidadMotor); // Velocidad máxima en pasos por segundo
stepper2.setAcceleration(acceleracionMotor); // Aceleración en pasos por segundo al cuadrado
// Configura el pin ENABLE como salida
//(MOTOR 1)
pinMode(ENABLE_PIN1, OUTPUT);
digitalWrite(ENABLE_PIN1, LOW); // Habilita el driver (ajusta a HIGH si lo conectaste a VCC en lugar de GND)
//(MOTOR 2)
pinMode(ENABLE_PIN2, OUTPUT);
digitalWrite(ENABLE_PIN2, LOW); // Habilita el driver (ajusta a HIGH si lo conectaste a VCC en lugar de GND)
}
void loop() {
// Gira el motor en un sentido durante 2 segundos
//(MOTOR 1)
// Avance
stepper1.setSpeed(velocidadMotor); // Velocidad en pasos por segundo (puedes ajustarla)
stepper1.move(pasosAvanceMotor1); // Número de pasos a mover
stepper1.runToPosition(); // Espera hasta que termine el movimiento
delay(tiempoDeEspera); // Espera 1 segundo
// Gira el motor en el sentido opuesto durante 2 segundos
//Retroceso
stepper1.setSpeed(velocidadMotor*-1); // Velocidad en pasos por segundo (puedes ajustarla)
stepper1.move(pasosRetrocesoMotor1); // Número de pasos a mover (usamos un valor negativo para el sentido opuesto)
stepper1.runToPosition(); // Espera hasta que termine el movimiento
delay(tiempoDeEspera); // Espera 1 segundo
//(MOTOR 2)
// Avance
stepper2.setSpeed(velocidadMotor); // Velocidad en pasos por segundo (puedes ajustarla)
stepper2.move(pasosAvanceMotor2); // Número de pasos a mover
stepper2.runToPosition(); // Espera hasta que termine el movimiento
delay(tiempoDeEspera); // Espera 1 segundo
// Gira el motor en el sentido opuesto durante 2 segundos
//Retroceso
stepper2.setSpeed(velocidadMotor*-1); // Velocidad en pasos por segundo (puedes ajustarla)
stepper2.move(pasosRetrocesoMotor2); // Número de pasos a mover (usamos un valor negativo para el sentido opuesto)
stepper2.runToPosition(); // Espera hasta que termine el movimiento
delay(tiempoDeEspera); // Espera 1 segundo
}
/*
const int DIR = 2;
const int STEP = 4;
const int steps_per_rev = 100;
const int timepoPaso = 1000;
void setup()
{
Serial.begin(115200);
pinMode(STEP, OUTPUT);
pinMode(DIR, OUTPUT);
}
void loop()
{
digitalWrite(DIR, HIGH);
Serial.println("Girando en sentido horario");
for(int j = 0; j<=3; j++)
{
for(int i = 0; i<steps_per_rev; i++)
{
digitalWrite(STEP, HIGH);
delayMicroseconds(timepoPaso);
digitalWrite(STEP, LOW);
delayMicroseconds(timepoPaso);
}
}
delay(1000);
digitalWrite(DIR, LOW);
Serial.println("Girando en sentido anti horario");
for(int i = 0; i<steps_per_rev; i++)
{
digitalWrite(STEP, HIGH);
delayMicroseconds(timepoPaso);
digitalWrite(STEP, LOW);
delayMicroseconds(timepoPaso);
}
delay(1000);
}
*/
esp:VIN
esp:GND.2
esp:D13
esp:D12
esp:D14
esp:D27
esp:D26
esp:D25
esp:D33
esp:D32
esp:D35
esp:D34
esp:VN
esp:VP
esp:EN
esp:3V3
esp:GND.1
esp:D15
esp:D2
esp:D4
esp:RX2
esp:TX2
esp:D5
esp:D18
esp:D19
esp:D21
esp:RX0
esp:TX0
esp:D22
esp:D23
drv1:ENABLE
drv1:MS1
drv1:MS2
drv1:MS3
drv1:RESET
drv1:SLEEP
drv1:STEP
drv1:DIR
drv1:GND.1
drv1:VDD
drv1:1B
drv1:1A
drv1:2A
drv1:2B
drv1:GND.2
drv1:VMOT
stepper1:A-
stepper1:A+
stepper1:B+
stepper1:B-
stepper2:A-
stepper2:A+
stepper2:B+
stepper2:B-
drv2:ENABLE
drv2:MS1
drv2:MS2
drv2:MS3
drv2:RESET
drv2:SLEEP
drv2:STEP
drv2:DIR
drv2:GND.1
drv2:VDD
drv2:1B
drv2:1A
drv2:2A
drv2:2B
drv2:GND.2
drv2:VMOT