#include <AccelStepper.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define STEP_PIN 3 // Conecta el pin de paso (STEP) del A4988 al pin 3 de Arduino
#define DIR_PIN 6 // Conecta el pin de dirección (DIR) del A4988 al pin 6 de Arduino
#define ENABLE_PIN 8 // Conecta el pin de habilitación (ENABLE) del A4988 al pin 8 de Arduino
#define STEP_PIN_X 2 // Conecta el pin de paso (STEP) del A4988 al pin 2 de Arduino para el eje X
#define DIR_PIN_X 5 // Conecta el pin de dirección (DIR) del A4988 al pin 5 de Arduino para el eje X
AccelStepper stepperY(1, STEP_PIN, DIR_PIN); // Define un objeto stepper para el eje Y
AccelStepper stepperX(1, STEP_PIN_X, DIR_PIN_X); // Define un objeto stepper para el eje X
bool giroHorario = true; // Variable para controlar el sentido de giro del stepperY
void setup() {
lcd.init();
lcd.backlight();
pinMode(ENABLE_PIN, OUTPUT); // Establece el pin de habilitación como salida
digitalWrite(ENABLE_PIN, LOW); // Habilita el controlador A4988
stepperY.setMaxSpeed(1000); // Establece la velocidad máxima en pasos por segundo
stepperY.setAcceleration(1000); // Establece la aceleración en pasos por segundo al cuadrado
stepperX.setMaxSpeed(1000); // Establece la velocidad máxima en pasos por segundo para el eje X
stepperX.setAcceleration(1000); // Establece la aceleración en pasos por segundo al cuadrado para el eje X
}
void loop() {
// Ciclo de movimiento
stepperX.moveTo(600); // Mueve el motor X 600 pasos en sentido horario
stepperX.runToPosition();
delay(500); // Espera 500 milisegundos entre movimientos
// Determina el sentido de giro del stepperY
if (giroHorario) {
stepperY.moveTo(600); // Mueve el motor Y 600 pasos en sentido horario
} else {
stepperY.moveTo(-600); // Mueve el motor Y 600 pasos en sentido antihorario
}
stepperY.runToPosition();
delay(500); // Espera 500 milisegundos antes de reiniciar el ciclo
// Cambia el sentido de giro para el próximo ciclo
giroHorario = !giroHorario;
// Reiniciar las posiciones de los motores al final del ciclo
stepperX.setCurrentPosition(0);
stepperY.setCurrentPosition(0);
}