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-х двигателей и с регулировкой скорости.