#include <GyverStepper.h>
GStepper<STEPPER2WIRE> stepper(400, 29, 27, 25);
int sp = 240; // Начальное значение переменной скорости
int ac = 100; // Начальное значение переменной ускорения
int faza = 0;
void setup() {
Serial.begin(9600);
stepper.setRunMode(KEEP_SPEED); // режим поддержания скорости
stepper.setSpeedDeg(sp); // в градусах/сек
stepper.setAccelerationDeg(ac);
Serial.println("Значение скорости и ускорения по умолчанию при старте: ");
Serial.println("Скорость = 240 град в сек., ускорение = 100 град в сек. в квадрате ");
Serial.println("Можете ввести новое значение скорости и ускорения через пробел: ");
}
void loop() {
stepper.tick();
if (Serial.available() > 0 && faza == 0) {
String input = Serial.readStringUntil('\n'); // Считать строку из монитора порта до символа новой строки
if (input.length() > 0) { // Проверить, что строка не пустая
// Разбить строку на скорость и ускорение
int spaceIndex = input.indexOf(' '); // Найти индекс первого пробела
if (spaceIndex != -1) { // Если пробел найден
// Получить подстроку, содержащую скорость и ускорение
String speedStr = input.substring(0, spaceIndex);
String accelStr = input.substring(spaceIndex + 1);
// Преобразовать подстроки в целые числа
stepper.stop();
faza = 1;
sp = speedStr.toInt();
ac = accelStr.toInt();
}
}
}
if (faza == 1 && !stepper.tick()){
delay(200);
stepper.setRunMode(KEEP_SPEED); // режим поддержания скорости
// Установить новые значения для скорости и ускорения шагового двигателя
stepper.setSpeedDeg(sp); // в градусах/сек
stepper.setAccelerationDeg(ac); // в градусах/сек^2
faza = 0;
// Вывести принятые значения в монитор порта для проверки
Serial.print("Принятое значение скорости: ");
Serial.println(sp);
Serial.print("Принятое значение ускорения: ");
Serial.println(ac);
}
}