Skip to content

Commit 1e752b1

Browse files
Merge pull request adafruit#125 from sijskes/master
fixed incorrect values on DHT11 below 0 degrees celcius
2 parents d6488c1 + 8b96244 commit 1e752b1

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

DHT.cpp

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,15 @@ float DHT::readTemperature(bool S, bool force) {
3939
if (read(force)) {
4040
switch (_type) {
4141
case DHT11:
42+
f = data[2];
43+
if (data[3] & 0x80) {
44+
f = -1 - f ;
45+
}
46+
f += (data[3] & 0x0f) * 0.1;
47+
if(S) {
48+
f = convertCtoF(f);
49+
}
50+
break;
4251
case DHT12:
4352
f = data[2];
4453
f += (data[3] & 0x0f) * 0.1;
@@ -155,11 +164,11 @@ bool DHT::read(bool force) {
155164
pinMode(_pin, OUTPUT);
156165
digitalWrite(_pin, LOW);
157166
switch(_type) {
158-
case DHT22:
159-
case DHT21:
167+
case DHT22:
168+
case DHT21:
160169
delayMicroseconds(1100); // data sheet says "at least 1ms"
161170
break;
162-
case DHT11:
171+
case DHT11:
163172
default:
164173
delay(20); //data sheet says at least 18ms, 20ms just to be safe
165174
break;

0 commit comments

Comments
 (0)