是否可以使用gpio.pulse()设置连续循环?

问题描述 投票:0回答:1

有没有人知道如何让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”参数,然后才能达到零,但这不起作用。

lua esp8266 nodemcu
1个回答
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个脉冲。

© www.soinside.com 2019 - 2024. All rights reserved.