如何使用 gpio.pulse() 来设置一个连续的循环?

有谁知道如何让 ESP8266 NodeMCU 的 gpio.pulse 模块在一个连续的循环中运行?

我有一个需求,需要持续输出两个稳定的频率正方形波,它们的相位差为 180°,从 ESP8266 的 GPIO4 和 GPIO5 引脚输出。乍一看,gpio.pulse() [gpio.pulse.build()] 模块文档示例 (https://nodemcu.readthedocs.io/en/master/en/modules/gpio/#gpiopulsebuild) 似乎能够满足我的需求。不幸的是,我找不到任何方法让它在一个连续的循环中运行。

gpio.mode(1, gpio.OUTPUT)
gpio.mode(2, gpio.OUTPUT)

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)

我尝试使用 gpio.pulse:update (https://nodemcu.readthedocs.io/en/master/en/modules/gpio/#gpiopulseupdate) 来重置示例中的第 2 步 "count=20" 参数,但是没有起作用。

点赞
用户6345462
用户6345462

在这种情况下,您可以使用count=-1(最大可能的32位无符号整数),这将让它运行大约68年。

对于2^32重复次数不满意的高频率,您可以嵌套循环:

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},
   {loop=1, count=20}
})

这将在终止前运行20 * 20脉冲。

2018-09-08 00:42:50