#include <AccelStepper.h>
/*
- motor 1 0 sampai 300 derajat
- motor 2, 0 sampai -150 derajat, dalam waktu 5 detik mulai bareng selesai bareng
*/
#define STEP1 12
#define DIR1 14
#define STEP2 26
#define DIR2 27
// interface type: 1 -> using driver
AccelStepper stepper1(1, STEP1, DIR1);
AccelStepper stepper2(1, STEP2, DIR2);
// Define the number of steps per revolution for each stepper motor
const int stepsPerRevolutionMotor1 = 200; // Change this value according to your motor
const int stepsPerRevolutionMotor2 = 200; // Change this value according to your motor
float targetPosition1 = 300 * stepsPerRevolutionMotor1 / 360;
float targetPosition2 = -150 * stepsPerRevolutionMotor2 / 360;
// Timer
unsigned long duration = 5000;
unsigned long rememberTime = 0;
unsigned long time_setup = 0;
unsigned long time_now = 0;
void setup() {
Serial.begin(115200);
stepper1.setMaxSpeed(1500);
stepper1.setAcceleration(1000);
stepper2.setMaxSpeed(1500);
stepper2.setAcceleration(1000);
time_setup = millis();
}
void loop() {
time_now = millis() - time_setup;
// Set the target positions for both motors
if (time_now - rememberTime <= duration) {
float mapTarget1 = map(time_now, 0, duration, 0, targetPosition1);
float mapTarget2 = map(time_now, 0, duration, 0, targetPosition2);
stepper1.moveTo(mapTarget1);
stepper2.moveTo(mapTarget2);
// Start both motors
stepper1.setSpeed(stepper1.speed());
stepper2.setSpeed(stepper2.speed());
stepper1.run();
stepper2.run();
}
stepper1.stop();
stepper2.stop();
}