Node.js:我如何延迟(不睡眠)从一条线到另一条线以循环脉冲步进电机

Node.js: how can I delay (not sleep) from one line to another to pulse stepper motor in a loop

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

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() but it relies on callbacks and cannot be used on a for loop. To fix this you need to use the modern 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 以便更好地测试。