Как ускорить / замедлить шаговый двигатель в контуре? - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь ускорить или замедлить движение от моего шагового двигателя.

Я использую этот цикл и из библиотеки temporal:

var ramp = 50;
var i = 0;

var stepsToRamp = ((ramp * ramp) + ramp) / 2;

makeSteps(40, 5000);

function makeSteps(pin, steps) {
    rpio.open(pin, rpio.OUTPUT, rpio.LOW);

    temporal.loop(1, function () {
        if (i == 0) {
            rpio.write(pin, this.called % 2 === 0 ? rpio.HIGH : rpio.LOW)

            if ((this.called / 2) > steps) {
                this.stop();
            }


            if (((this.called / 2) < (steps - stepsToRamp)) && ramp != 0) {
                ramp = ramp - 1;
                i = ramp;
            }else if((this.called / 2) > (steps - stepsToRamp)){
                console.log("HERE I SHOULD DERAMP!");
                ramp = ramp + 1;
                i = ramp;
            }
        } else {
            i--;
        }
    });
}

Пока это работает, ноТакое ощущение, что это не будет линейным ускорением.Начало очень медленное и к полной скорости (каждая итерация цикла = один HIGH или LOW сигнал) ускоряется очень быстро.То же самое при замедлении.

Может ли кто-нибудь помочь мне здесь и показать мне, где мой мыслительный процесс неправильный?

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...