我正在尝试通过步进电机加速或减速运动。
我正在使用此循环,并且来自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
信号),开始时确实非常快。减速时一样。
有人可以在这里帮助我,告诉我我的思维过程错在哪里吗?
谢谢!