我正在使用无法更改的API函数:
xMotor.ccw().step(1, function() { /*callback*/ });
它用于控制步进电机,该步进电机应将电机实际旋转一定步数。现在,我需要转动电动机,直到实际按下按钮为止,并且我要测量行进的length
。我现在就这样处理:
var length = 0;
async function initialize(){
while (motor.checkButton(buttonPin)) {
xMotor.ccw().step(1, function() { /*CALLBACK*/ });
length++;
await sleep(10);
}
}
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
但是由于该API函数是非阻塞的,所以我的length变量可以计数。实际上,while循环是快速移动电机一步的方法。我可以增加sleep
的值,但这似乎不是一个好的解决方案,并且电动机的运动会非常不稳定。
所有I / O信号都从Arduino运行。我正在使用Johnny-five框架。
谢谢!