@mashincode

Как сделать определенное количество шагов шаговиком в секунду?

У меня есть два шаговика, я использую библиотеку accelStepper, мне нужно что бы шаговики переместились на 300 шагов, подождали к примеру 3 секунды и снова переместились на 300 шагов, самое близкое что получилось сделать это, но спустя время int переполняется и все перестает работать.
Я знаю что есть метод setCurrentPosition и можно поставить его на ноль в каждом цикле, а потом просить сделать шаги в точку 200 и так снова, но если я ставлю точку как ноль в конце цикла, все тоже перестает работать, по этому я использую странное добавление к инту, пожалуйста подскажите как это правильно сделать

AccelStepper stepper1; // Defaults to AccelStepper::FULL4WIRE (4 pins) on 2, 3, 4, 5
AccelStepper stepper2(AccelStepper::FULL4WIRE, 6, 7, 8, 9);

int position = 0;
int last_time = 0;

void setup()
{  
    stepper1.setMaxSpeed(300.0);
    stepper1.setAcceleration(100.0);  
    stepper2.setMaxSpeed(300.0);
    stepper2.setAcceleration(100.0);
    last_time = millis(); 
}
void loop() {
   position = position+300;
   stepper1.moveTo(position);
   stepper2.moveTo(position);
   stepper1.run();
   stepper2.run();

   if (millis() - last_time >= 3000) {
      stepper1.stop();
      delay(1000);
      last_time = millis(); // сброс таймера
  }

}
  • Вопрос задан
  • 145 просмотров
Пригласить эксперта
Ответы на вопрос 1
ProgrammerForever
@ProgrammerForever
Учитель, автоэлектрик, программист, музыкант
setMaxSpeed - это и есть "определенное число шагов в секунду", т.е. скорость
А вместо
stepper1.moveTo(position);
в вашем случае лучше использовать
stepper1.move (300);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы