AccelStepper + MultiStepper - не получается регулировать скорость и положение

sergkr1983
Offline
Зарегистрирован: 09.12.2015

Возникла такая проблема. Хочу управлять тремя шаговиками. 

Код такой:

#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" вообще не крутит. 

Кто сталкивался? Может другие библиотеки есть какие?

sergkr1983
Offline
Зарегистрирован: 09.12.2015

Мне нужно одновременное вращение 3-х двигателей и с регулировкой скорости.