有没有人知道如何让ESP8266 NodeMCU gpio.pulse模块在连续循环中运行?
我要求连续输出两个与ESP8266的GPIO4和GPIO5引脚180°异相的稳定频率方波。乍一看,gpio.pulse()[gpio.pulse.build()]模块doc示例(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”参数,然后才能达到零,但这不起作用。
在这种情况下,您可以使用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个脉冲。