Temp and Humidity sensor device driver. had to fork under a new name, don't know why yet.

Dependents:   Wio-example-SORACOM-Harvest

Revision:
4:860d5d055148
Parent:
3:6937e130feca
Child:
6:49350e4b126d
--- a/DHT.cpp	Sat May 28 11:11:34 2016 +0000
+++ b/DHT.cpp	Sat Jun 09 23:26:52 2018 +0000
@@ -118,8 +118,11 @@
     }
 
     // uncomment to see the checksum error if it exists
-    //printf(" 0x%02x + 0x%02x + 0x%02x + 0x%02x = 0x%02x \n", DHT_data[0], DHT_data[1], DHT_data[2], DHT_data[3], DHT_data[4]);
     data_valid = DHT_data[0] + DHT_data[1] + DHT_data[2] + DHT_data[3];
+    
+    //printf(" 0x%02X + 0x%02X + 0x%02X + 0x%02X => Snsr Chk: 0x%02X Rcvd Chk: 0x%02X\n", DHT_data[0], DHT_data[1], 
+    //        DHT_data[2], DHT_data[3], DHT_data[4], data_valid);
+    
     if (DHT_data[4] == data_valid) {
         _lastReadTime = currentTime;
         _lastTemperature = CalcTemperature();
@@ -136,19 +139,18 @@
 float DHT::CalcTemperature()
 {
     int v;
-
+    float result;
+    
     switch (_DHTtype) {
         case DHT11:
             v = DHT_data[2];
             return float(v);
         case DHT22:
-            v = DHT_data[2] & 0x7F;
-            v *= 256;
-            v += DHT_data[3];
-            v /= 10;
-            if (DHT_data[2] & 0x80)
-                v *= -1;
-            return float(v);
+             //v = DHT_data[0];
+            //v *= 256;
+            //v += DHT_data[1];
+            result = ((DHT_data[2] * 256)+ DHT_data[3]) /10.0f;
+            return float(result);
     }
     return 0;
 }
@@ -208,17 +210,18 @@
 float DHT::CalcHumidity()
 {
     int v;
-
+    float result;
+    
     switch (_DHTtype) {
         case DHT11:
             v = DHT_data[0];
             return float(v);
         case DHT22:
-            v = DHT_data[0];
-            v *= 256;
-            v += DHT_data[1];
-            v /= 10;
-            return float(v);
+             //v = DHT_data[0];
+            //v *= 256;
+            //v += DHT_data[1];
+            result = ((DHT_data[0] * 256)+ DHT_data[1]) /10.0f;
+            return float(result);
     }
     return 0;
 }