AccelStepper + MultiStepper - не получается регулировать скорость и положение
- Войдите на сайт для отправки комментариев
Пт, 22/09/2017 - 20:05
Возникла такая проблема. Хочу управлять тремя шаговиками.
Код такой:
#include <AccelStepper.h>
#include <MultiStepper.h>
AccelStepper stepper1(AccelStepper::FULL4WIRE, 40, 42, 44, 46);
AccelStepper stepper2(AccelStepper::FULL4WIRE, 22, 24, 26, 28);
MultiStepper steppers;
void setup() {
stepper1.setMaxSpeed(200);
stepper2.setMaxSpeed(200);
steppers.addStepper(stepper1);
steppers.addStepper(stepper2);
}
void loop() {
// put your main code here, to run repeatedly:
long positions[2];
// Здесь я получаю строку с СОМ порта и разделяю её.....
if (s4 == 55) { //
stepper1.setSpeed(200);
positions[0] = 100;
positions[1] = 50;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
//positions[0] = 0;
//positions[1] = 0;
//steppers.moveTo(positions);
//steppers.runSpeedToPosition(); // Blocks until all are in position
}
if (s4 == 56) { //
stepper1.setSpeed(100);
positions[0] = -1200;
positions[1] = 50;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
//positions[0] = 0;
//positions[1] = 0;
//steppers.moveTo(positions);
//steppers.runSpeedToPosition(); // Blocks until all are in position
}
if (s4 == 57) { //
stepper1.setSpeed(200);
stepper1.move(100);
stepper1.runSpeed();
}
if (s4 == 58) { //
stepper1.setSpeed(100);
stepper1.move(-1100);
stepper1.runSpeed();
}
}
Если получаю "55" или "56" - всё отрабатывает. Мотор крутится на полной скорости. НО как-бы "запоминает" положение. А как его скинуть? К примеру получили с СОМ порта "55" - крутанули 100 шагов по часовой, опять получили и ОПЯТЬ крутанули, но он не крутит.
Второй вопрос. По скорости вращения. Не получается "замедлить" шаговик. При получении "57" и "58" вообще не крутит.
Кто сталкивался? Может другие библиотеки есть какие?
Мне нужно одновременное вращение 3-х двигателей и с регулировкой скорости.