Я пытаюсь ускорить или замедлить движение от моего шагового двигателя.
Я использую этот цикл и из библиотеки 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
сигнал) ускоряется очень быстро.То же самое при замедлении.
Может ли кто-нибудь помочь мне здесь и показать мне, где мой мыслительный процесс неправильный?
Заранее спасибо!