为什么 bme280.startreadout() 只触发一次?
Why does bme280.startreadout() only trigger once?
我正在使用 ESP-12F (ESP8266) 模块和启用了 BME280 模块的 NodeMCU 固件。我已经通过手动查询温湿度测试了传感器,一切正常。
现在,我想使用 bme280.startreadout(...)
函数定期将值发送到我的服务器(或者暂时将它们打印到 ESPlorer 的串行终端)。下面的代码没有抛出任何错误,但是回调函数只有 运行s 一次 - 谁能告诉我这是为什么?
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
?
有 few issues with that module 但 none 会影响您 AFAICT。
docs are IMO quite clear that your callback is only fired once. The first parameter is called delay
rather than "interval" or the like. So, you need a timer 定期读取传感器值。
我正在使用 ESP-12F (ESP8266) 模块和启用了 BME280 模块的 NodeMCU 固件。我已经通过手动查询温湿度测试了传感器,一切正常。
现在,我想使用 bme280.startreadout(...)
函数定期将值发送到我的服务器(或者暂时将它们打印到 ESPlorer 的串行终端)。下面的代码没有抛出任何错误,但是回调函数只有 运行s 一次 - 谁能告诉我这是为什么?
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
?
有 few issues with that module 但 none 会影响您 AFAICT。
docs are IMO quite clear that your callback is only fired once. The first parameter is called delay
rather than "interval" or the like. So, you need a timer 定期读取传感器值。