Как медленно изменить направление шагового двигателя с помощью AccelStepper?

Я знаю, что направление можно изменить с помощью

.setSpeed(speed);
... //проверить ввод
.setSpeed(-speed);

Мне нужно медленно замедляться и ускоряться назад, поэтому я должен использовать

.setAcceleration(200);
...
.setMaxSpeed(speed);
... //проверить ввод
.setMaxSpeed(-speed);

но в документации сказано, что аргумент .setMaxSpeed должен быть > 0.

Итак, как правильно изменить направление с помощью замедления? Возможно, мне придется использовать .moveTo с очень большими значениями

, 👍3

Обсуждение

Вы смотрели на пример кода, который включен в библиотеку?, @jsotola

Библиотека определяет скорость как «шагов в секунду». Ему все равно, в каком направлении находятся шаги. Точно так же, как вы не можете избежать штрафов за превышение скорости, всегда двигаясь задним ходом ;-)., @Gerben


1 ответ


Лучший ответ:

2

Я протестировал его на реальном двигателе, и он работает так, как я хочу, с функцией .moveTo . Скорость медленно менялась с +maxSpeed до -maxSpeed в зависимости от ускорения

#define maxSpeed 1000
#define Acceleration 500
............
void setup(){  
  stepper.setMaxSpeed(maxSpeed);
  stepper.setAcceleration(Acceleration);
}
void loop() {
 ............
 if(bDirection!=bDirection_last)
 {
  stepper.moveTo(bDirection?6000000:-6000000);
  ...........
 }
 stepper.run();
}
,