Здравствуйте, я строю мокрый компас для симулятора полета. В настоящее время у меня есть шаговый двигатель, хорошо работающий с симулятором, но в точке пересечения 360–0 градусов степпер делает полный реверс 360, чтобы войти в положение.
Мой вопрос ... может ли кто-нибудь помочь мне в создании кода, который заставляет линейный крест от 360 до 0 работать в обоих направлениях.
Имитатор подает Float Val, который составляет 360 градусов, например. 172,13. Мой степпер имеет 4076 шагов за полный оборот. Вы увидите математику в коде ниже. Я использую библиотеку AccelStepper.
void ProgOut(byte id, float val) {
switch (1) {
case 1:
if (val)
{ stepper1.moveTo(val * 11.3222222); }
stepper1.run();
break; }}
Я пробовал что-то вроде этого:
void ProgOut(byte id, float val) {
switch (1) {
case 1:
if ( stepper1.distanceToGo () >= 4064){
stepper1.moveTo(4076);
stepper1.setCurrentPosition(0);
}
else if (val)
{
stepper1.moveTo(val * 11.3222222);
}
stepper1.run();
break; }}
Заранее благодарен за любую помощь