#define DRIVER_STEP_TIME 6 // Задержка 6 мкс для драйвера
#include <GyverStepper.h>
// Настраиваем шаговый двигатель
GStepper<STEPPER2WIRE> stepper(200, 2, 3, 9); // 200 шагов на оборот, пины STEP, DIR и ENABLE
#define START_BUTTON_PIN 6
#define STOP_BUTTON_PIN 7
bool running = false;
void setup() {
// Настройка шагового двигателя
stepper.setRunMode(FOLLOW_POS); // Режим работы
stepper.setMaxSpeed(25000); // Максимальная скорость в шагах/сек
stepper.setAcceleration(4500); // Ускорение в шагах/сек^2
stepper.autoPower(1); // Включаем автоотключение питания
// Настройка кнопок
pinMode(START_BUTTON_PIN, INPUT_PULLUP);
pinMode(STOP_BUTTON_PIN, INPUT_PULLUP);
}
void loop() {
// Проверяем нажатие кнопки старта
if (digitalRead(START_BUTTON_PIN) == LOW && !running) {
running = true;
stepper.enable(); // Включаем двигатель
stepper.setTarget(-1300); // Задаем количество шагов
stepper.setCurrent(0); // Сбрасываем текущую позицию
delay(300); // Задержка для предотвращения дребезга кнопки
}
// Проверяем нажатие кнопки стопа
if (digitalRead(STOP_BUTTON_PIN) == LOW && running) {
running = false;
stepper.disable(); // Отключаем питание
delay(300); // Задержка для предотвращения дребезга кнопки
}
// Продолжаем выполнение цикла движения
if (running) {
stepper.tick(); // Управляем движением
if (stepper.getCurrent() == stepper.getTarget()) {
running = false;
stepper.disable(); // Отключаем питание по завершению движения
}
}
}