为什么bme280.startreadout()只会触发一次?

我正在使用启用了BME280模块的NodeMCU固件的ESP-12F(ESP8266)模块。我已经通过手动查询温度和湿度来测试了传感器,一切正常。

现在,我想使用bme280.startreadout(…)函数定期将值发送到我的服务器(或仅将其打印到ESPlorer中的串行终端),以下代码不会引发任何错误,但回调函数只运行一次 - 有人能告诉我这是为什么吗?

 bme280.init(76nilnilnil0)
 bme280.startreadout(2000function()
 T = bme280.temp()
 printstring.format("T =%d.%02d",T/100,T%100))
 end

当我将此脚本发送到模块并运行它时,正确的温度将在2秒后写出,就这样。

以下是有关固件的一些详细信息:

 NodeMCU custom build by frightanic.com
 branch:dev
 commit:79013ae79a85798cba470ac1168e75c755f58f42
 SSL:true
 modules:adc,adxl345,am2320,apa102,bme280,crypto,dht,file,gpio,hmc5883l,http,i2c,l3g4200d,mqtt,net,node,ow,pwm,spi,tmr,tsl2561,uart,websocket,wifi
 build built on2016-12-05 17:30
 powered by Lua 5.1.4 on SDK 1.5.4.1(39cb9a32)

更新:以前没有考虑到:startreadout是否只用于触发回调函数一次?或者换句话说,它像setTimeout一样工作,而不是像setInterval一样工作?

点赞
用户131929
用户131929

这个模块存在一些问题,但据我所知,没有会影响到你的。

文档中明确指出,你的回调函数仅会被触发一次。第一个参数名为 delay,而不是“interval”或类似的名称。因此,你需要一个定时器定期读取传感器值。

2016-12-06 08:29:20