2016-12-05 82 views
0

我正在使用带有已启用BME280模块的NodeMCU固件的ESP-12F(ESP8266)模块。我通过手动查询温度和湿度来测试传感器,一切都很好。为什么bme280.startreadout()只触发一次?

现在,我想使用bme280.startreadout(...)函数来定期将值发送到我的服务器(或者直接将它们打印到ESPlorer中的串行终端上)。下面的代码不会抛出任何错误,但回调函数只能运行一次 - 有人可以告诉我为什么是这样吗?

bme280.init(7, 6, nil, nil, nil, 0) 
bme280.startreadout(2000, function() 
    T = bme280.temp() 
    print(string.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 on: 2016-12-05 17:30 
powered by Lua 5.1.4 on SDK 1.5.4.1(39cb9a32) 

更新:没有想到的是前:是startreadout意味着触发回调函数只有一次?或者用JavaScript术语说明:它是否像setTimeout而不是setInterval那样工作?

+0

这是封闭的还是你需要更多的反馈? –

回答

1

有一个few issues with that module但没有影响你AFAICT。

docs是国际海事组织非常清楚,你的回调只发射一次。第一个参数被称为delay而不是“间隔”等。所以,你需要一个timer定期读取传感器值。