Hoping someone can help. Having issue with reading DHT11 that I don't understand.
If I never call updateDisplay() then DHT11 returns "temp:-1,rh:-1,err:true,checksumError:false" forever (tried leaving it for days).
If I call updateDisplay() then it returns -1, but after a few iterations I get a clearWatch() error message, then DHT11 temp/rh is read correctly forever.
Compacting Flash...
Calculating Size...
Writing..
Compressed 36800 bytes to 11307
Temp is -1 and RH is -1, Err: true, ChecksumError: false
Temp is -1 and RH is -1, Err: true, ChecksumError: false
Temp is -1 and RH is -1, Err: true, ChecksumError: false
Temp is -1 and RH is -1, Err: true, ChecksumError: false
Temp is -1 and RH is -1, Err: true, ChecksumError: false
Temp is -1 and RH is -1, Err: true, ChecksumError: false
Temp is -1 and RH is -1, Err: true, ChecksumError: false
Temp is -1 and RH is -1, Err: true, ChecksumError: false
Temp is -1 and RH is -1, Err: true, ChecksumError: false
Temp is -1 and RH is -1, Err: true, ChecksumError: false
Temp is -1 and RH is -1, Err: true, ChecksumError: false
Temp is -1 and RH is -1, Err: true, ChecksumError: false
Temp is -1 and RH is -1, Err: true, ChecksumError: false
Temp is -1 and RH is -1, Err: true, ChecksumError: false
Temp is -1 and RH is -1, Err: true, ChecksumError: false
Temp is -1 and RH is -1, Err: true, ChecksumError: false
Uncaught Error: clearWatch(undefined) not allowed. Use clearWatch() instead.
at line 1 col 19
clearWatch(a.watch);delete a.watch;var e=parseInt(b.substr(2...
^
in function called from system
Temp is 25 and RH is 58
Temp is 26 and RH is 55
Temp is 25 and RH is 54
Temp is 25 and RH is 54
Temp is 25 and RH is 54
Temp is 25 and RH is 54
Temp is 26 and RH is 55
My code:
var displayReady=false;
var dht = require("DHT11").connect(D15);
var spi = new SPI();
spi.setup({mosi:D23 /* sda */, sck:D22 /* scl */, baud: 4000000});
var g = require("ILI9163").connect(spi, D21 /* DC */, D18 /* CE */, D19 /* RST */, function() {
displayReady = true;
console.log("Display ready.");
});
require("Font8x12").add(Graphics);
var temp = "N/A";
var rh = "N/A";
function updateDisplay() {
//return;
if (!displayReady)
return;
g.clear();
g.setColor(1,1,1);
g.setFont8x12();
g.setFontVector(8);
g.setRotation(1);
g.drawString("Test",0,0);
g.setFontVector(20);
g.setColor(1,0.5,1);
g.drawString("Temp: " + temp.toString(),0,10);
g.setColor(0,1,1);
g.drawString("Humid: " + rh.toString(),0,40);
}
function readSensor() {
dht.read(function (a) {
temp = a.temp;
rh = a.rh;
if (a.temp != -1)
console.log("Temp is "+a.temp.toString()+" and RH is "+a.rh.toString());
else
console.log("Temp is "+a.temp.toString()+" and RH is "+a.rh.toString() + ", Err: " + a.err.toString() + ", ChecksumError: "+ a.checksumError.toString());
updateDisplay();
});
}
setInterval(function() {
readSensor();
}, 10000);
Espruino is a JavaScript interpreter for low-power Microcontrollers. This site is both a support community for Espruino and a place to share what you are working on.
Hoping someone can help. Having issue with reading DHT11 that I don't understand.
If I never call updateDisplay() then DHT11 returns "temp:-1,rh:-1,err:true,checksumError:false" forever (tried leaving it for days).
If I call updateDisplay() then it returns -1, but after a few iterations I get a clearWatch() error message, then DHT11 temp/rh is read correctly forever.
My code: