2016-12-05 1 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로 표현하면 setInterval이 아닌 setTimeout처럼 작동합니까?

+0

폐쇄되었거나 더 이상 피드백이 필요합니까? –

답변

1

few issues with that module이 있지만 AFAICT에 영향을주는 것은 없습니다.

docs은 콜백이 한 번만 실행된다는 점을 분명히합니다. 제 1 파라미터는 "간격"등보다는 delay이다. 따라서 정기적으로 센서 값을 읽으려면 timer이 필요합니다.