Положения шагового мотора и микрошаг
- Войдите на сайт для отправки комментариев
Есть шаговик, EasyDriver, кнопки . Использую библиотеку AccelStepper .
Управление
удерживаю кнопку ЛЕВО - крутит влево
удерживаю кнопку ПРАВО - крутит вправо
нажал кнопку ЗАПОМНИТЬ - запомнил позицию savedPos = stepper.currentPosition();
нажал кнопку ВОЗВРАЩЕНИЕ - вернулся в запомненную позицию из любой точки
Всё работает в режиме полного шага, работает отлично.
Возникла необходимость иногда переходить в режим микрошага 1/8 - тоже не проблема, нажал кнопку- микрошаг, нажал - полный шаг. Проблема в том, что после игрищ с микрошагом нужно перейти в полный шаг и вернуться в сохранённую позицию. Казалось бы нужно убрать дополнительные шаги, но нифига не получается. Понятно, что при делении появится погрешность, но у меня убегает ну очень сильно. Может алгоритм неправильный, может в библиотеке загвоздка.
savedPos = savedPos - (stepper.currentPosition() - savedPos)/8;
accelstepper еще чудеса на двух моторах имеет я уже об этом писал я выкинул
accelstepper еще чудеса на двух моторах имеет я уже об этом писал я выкинул
Читал твои посты про эту либу.
Но меня сейчас интересую не недостатки библиотеки, а решение своей проблемы
В чем проблема ? Количество микрошагов в шаге известно, после перехода в микрошаги считаем их, делимна 4, остаток от деления на 4 отрабатываем назад, или добиваем до полного шага, попадаем в позицию полного шага. А вообще, уж если работаешь в микрошагах так и работай в таком режиме. Зачем использовать полный шаг ?
Я в первом посте написал
savedPos = savedPos - (stepper.currentPosition() - savedPos)/8;
но не хочет работать