ШД и accelstepper. не работает код
- Войдите на сайт для отправки комментариев
Ср, 13/06/2018 - 08:59
#include<AccelStepper.h> #define HALFSTEP 8 #define motorPin1 3 // IN1 на 1-м драйвере ULN2003 #define motorPin2 4 // IN2 на 1-м драйвере ULN2003 #define motorPin3 5 // IN3 на 1-м драйвере ULN2003 #define motorPin4 6 // IN4 на 1-м драйвере ULN2003 AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4); void setup(){ stepper1.setMaxSpeed(1000.0); stepper1.setAcceleration(1000.0); stepper1.setSpeed(1000); stepper1.moveTo(20000); } void loop(){ // Изменяем направление, если шаговик достигает заданного положения if(stepper1.distanceToGo()==0) stepper1.moveTo(-stepper1.currentPosition()); stepper1.run(); }
Шаговик 28BYJ-48 двигатель uln2003. Пример выше работает (двигатель перемещает каретку вперед и назад постоянно) пока не поставлю значение moveTo 35000 и более. После этого каретка перемещается в одну сторону на нужное количество шагов, останавливается и в обратную сторону едет пока не упрется в шкиф.
Помогите объяснить arduino, что нужно вращать двигатель вперед и назад на 80000 шагов.
скорее всего в библиотеке надо поправить тип переменой, там скорее всего int, а вам надо long
Должно быть 32768 шагов.
Так можно обойти это ограничение или нет? Понятно, что где-то в библиотеке копать нужно, но в каком именно месте не разобрался.
zodiak2064, обойти это ограничение, естественноЮ можно. Другой вопрос - нужно ли? Разработчик библиотеки, например, посчитал, что имеющегося диапазона хватит для любого разумного применения, и с ним трудно не согласиться: для каких целей может понадобиться задавать в одном элементарном движении более нескольких тысяч шагов?
Вероятнее всего, у Вас ошибка проектировангия, раз при реализации Вы сталкиваетесь с таким неразумно большим количеством шагов. Подумайте в первую очередь в этом направлении. Ну и, в конце концов, можно сделать внешний цикл, а внутри цикла хоть по одному шагу.