有人知道让ESP8266 NodeMCU gpio.pulse 模块连续运行的方法吗?
我需要连续输出两个与ESP8266的GPIO4和GPIO5引脚相位相差180°的稳定频率方波。乍一看, 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”参数达到零之前将其重置,但这没有用。
答案 0 :(得分:0)
在这种情况下,您可以使用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个脉冲。