新 NodeMCU gpio.pulse 模块中环路和计数参数的含义



我想生成两个可变频率脉冲列车,以使用ESP8266来启动一对步进电动机。新的gpio.pulse模块似乎是理想的选择,但我无法理解nodemcu文档中提供的一些信息:

  • 计数和循环允许简单的循环。当一个有计数和循环的状态已完成,下一个状态处于循环状态(前提是计数尚未减少到零(。第一个状态是状态1。

我知道从表中构建了一系列教学,但是所描述的参数countloop很难理解。

pulser = gpio.pulse.build( {
  { [1] = gpio.HIGH, [2] = gpio.LOW, delay=100000 },
  { [1] = gpio.LOW, [2] = gpio.HIGH, delay=100000, loop=1, count=100, min=90000, max=110000 }
})

如果我尝试运行上述文档中给出的示例,则GPIO2会产生一个200ms周期的方波,持续100个周期(20秒(。这部分似乎很有意义,但是GPIO1一直保持较低。该示例没有描述期望的。

如果我仅通过将loop设置为2进行实验,则两个输出均高高,并且保持高10秒(当pulser:start回调发射时(。这让我对loop应该做什么感到困惑?

loop键就像一个goto - 它指定了下一步应该是什么。如果loop = 1,则可以按以下顺序有效地运行这些步骤:1,2,1,2,1,2,....

但是,如果loop=2,则以顺序运行步骤:1,2,2,2,2,2,

在您给出的示例中,引脚1应该是一个与引脚的相对阶段的方波。另一个要检查的东西是您将引脚1配置为输出。

我今晚会尝试您的榜样,并与您联系.....

...时间过去了...

我尝试了

gpio.mode(1, gpio.OUTPUT)
gpio.mode(2, gpio.OUTPUT)
gpio.write(1, gpio.LOW)
gpio.write(2, gpio.LOW)
pulser = gpio.pulse.build( {
  { [1] = gpio.HIGH, [2] = gpio.LOW, delay=250000 },
  { [1] = gpio.LOW, [2] = gpio.HIGH, delay=250000, loop=1, count=20, min=240000, max=260000 }
})
pulser:start(function() print ('done') end)

我在D1和D2上有连接到几个LED的输出,它们很好地闪烁(过时(。

但是,如果您至少在引脚上不使用gpio.write,则脉冲输出不起作用。我将修复代码,以便不需要。对此很抱歉。

最新更新