Node.js:如何从一条线延迟(而不是睡眠)到另一条线,以使步进电机在一个循环中产生脉冲



我正在Raspberry Pi 3B+中控制一个带onoff的步进电机,并希望在一个循环中在设置脉冲高电平和低电平之间进行延迟。

for (i=0; i < steps; i++) {
pinPul.writeSync(1);
delay here 10 milliseconds
pinPul.writeSync(0);
delay another 10 milliseconds
}

我不想在延迟期间停止执行程序中正在进行的任何其他内容。

Node.js使用事件循环。并且您希望使用等待的同步功能。

js/node中的默认方法是使用setTimeout((,但它依赖于回调,不能用于for循环。要解决这个问题,您需要使用现代的async/await。

async function sleep(ms) {
return new Promise(resolve => {
setTimeout(resolve, ms);
});
}
async function ledLoop() {
for (i=0; i < steps; i++) {
pinPul.writeSync(1);
await sleep(10);
pinPul.writeSync(0);
await sleep(10);
}
}
ledLoop();

只是一个评论。10ms对人眼来说太快了。更改为1000ms以进行更好的测试。

最新更新