#include <AccelStepper.h>
#include <MultiStepper.h>
#define POT_PIN A1 // Потенциометр, подключенный к аналоговому выводу A1 для скорости двигателя
#define POT_PIN_2 A2 // Потенциометр, подключенный к аналоговому выводу A2 для шагов двигателя
#define JOYSTICK_PIN A0 // Джойстик, подключенный к аналоговому выводу A0
AccelStepper stepper(AccelStepper::FULL4WIRE, 8, 10, 9, 11);
AccelStepper stepper2(AccelStepper::FULL4WIRE, 4, 6, 5, 7);
MultiStepper steppers;
void setup() {
pinMode(JOYSTICK_PIN, INPUT);
pinMode(POT_PIN, INPUT); // Режим входа для потенциометра
pinMode(POT_PIN_2, INPUT); // Режим входа для второго потенциометра
stepper.setMaxSpeed(60); // Установка максимальной скорости для первого шагового двигателя
stepper.setAcceleration(1000);
stepper2.setMaxSpeed(60); // Установка максимальной скорости для второго шагового двигателя
stepper2.setAcceleration(1000);
steppers.addStepper(stepper);
steppers.addStepper(stepper2);
}
void loop() {
int joystickValue = analogRead(JOYSTICK_PIN);
int potValue = analogRead(POT_PIN); // Считайте значение потенциометра
int potValue2 = analogRead(POT_PIN_2); // Считайте значение второго потенциометра
int steps = map(potValue2, 0, 1023, 1, 500); // Отображайте значение второго потенциометра для изменения количества шагов двигателя
int maxSpeed = map(potValue, 0, 1023, 0, 200); // Отображайте значение потенциометра для изменения частоты вращения двигателя
stepper.setMaxSpeed(maxSpeed); // Установите частоту вращения первого двигателя на основе потенциометра
stepper2.setMaxSpeed(maxSpeed); // Установите частоту вращения второго двигателя на основе потенциометра
int motorPosition = map(joystickValue, 0, 1023, -1, 1); // 100 - количество оборотов до остановки
if (joystickValue > 512) {
steppers.moveTo(motorPosition * steps);
} else if (joystickValue < 512) {
steppers.moveTo(motorPosition * steps);
} else {
steppers.moveTo(0);
}
if (steppers.run()) {
steppers.stop();
}
}
/* 2 Варинат
#include <AccelStepper.h>
#define JOYSTICK_PIN A0
#define POT_PIN A1
#define POT_PIN_2 A2
#define MOTOR_PIN_1 8
#define MOTOR_PIN_2 9
#define MOTOR_PIN_3 10
#define MOTOR_PIN_4 11
#define MOTOR2_PIN_1 4
#define MOTOR2_PIN_2 5
#define MOTOR2_PIN_3 6
#define MOTOR2_PIN_4 7
AccelStepper stepper(AccelStepper::FULL4WIRE, MOTOR_PIN_1, MOTOR_PIN_3, MOTOR_PIN_2, MOTOR_PIN_4);
AccelStepper stepper2(AccelStepper::FULL4WIRE, MOTOR2_PIN_1, MOTOR2_PIN_3, MOTOR2_PIN_2, MOTOR2_PIN_4);
void setup() {
pinMode(JOYSTICK_PIN, INPUT);
pinMode(POT_PIN, INPUT);
pinMode(POT_PIN_2, INPUT);
stepper.setMaxSpeed(60);
stepper.setAcceleration(1000);
stepper2.setMaxSpeed(60);
stepper2.setAcceleration(1000);
}
void loop() {
int joystickValue = analogRead(JOYSTICK_PIN);
int potValue = analogRead(POT_PIN);
int potValue2 = analogRead(POT_PIN_2);
int steps = map(potValue2, 0, 1023, 1, 500);
int maxSpeed = map(potValue, 0, 1023, 0, 200);
stepper.setMaxSpeed(maxSpeed);
stepper2.setMaxSpeed(maxSpeed);
int motorPosition = map(joystickValue, 0, 1023, -1, 1);
if (joystickValue > 512) {
stepper.moveTo(motorPosition * steps);
stepper2.moveTo(motorPosition * steps);
} else if (joystickValue < 512) {
stepper.moveTo(motorPosition * steps);
stepper2.moveTo(motorPosition * steps);
} else {
stepper.moveTo(0);
stepper2.moveTo(0);
}
if (stepper.distanceToGo() != 0) {
stepper.run();
stepper2.run();
}
}*/