Ver Fonte

DHT11 accuracy fix.

zchazc há 5 anos atrás
pai
commit
76f1192b50
1 ficheiros alterados com 10 adições e 0 exclusões
  1. 10 0
      DHT.cpp

+ 10 - 0
DHT.cpp

@@ -83,6 +83,16 @@ float DHT::readTemperature(bool S) {
         switch (_type) {
             case DHT11:
                 f = data[2];
+                if(data[3]%128<10){
+                    f += data[3]%128/10.0f;
+                }else if(data[3]%128<100){
+                    f += data[3]%128/100.0f;
+                }else{
+                    f += data[3]%128/1000.0f;
+                }
+                if(data[3]>=128){ // The left-most digit indicate the negative sign. 
+                    f = -f;
+                }
                 if (S) {
                     f = convertCtoF(f);
                 }