Based on another DHT library, this is just a modified one without using the RTC component

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
RazielLopez
Date:
Thu Dec 27 21:38:08 2018 +0000
Parent:
1:6df9454191d4
Child:
3:8c402316ce7e
Commit message:
Compilado pero sin ser probado

Changed in this revision

DHT/DHT.cpp Show annotated file Show diff for this revision Revisions of this file
DHT/DHT.h Show annotated file Show diff for this revision Revisions of this file
--- a/DHT/DHT.cpp	Fri Dec 21 03:47:05 2018 +0000
+++ b/DHT/DHT.cpp	Thu Dec 27 21:38:08 2018 +0000
@@ -94,7 +94,7 @@
             wait_us(30);
             bitTimes[i*8 + j] = DHT_io;
             int count = 0;
-            while (DHT_io == 1 && count < 110) {
+            while (DHT_io == 1 && count < 100) {
                 wait_us(1);
                 count++;
             }
@@ -102,27 +102,35 @@
     }
     DHT_io.output();
     DHT_io = 1;
-    for (i = 0; i < 5; i++) {
-        b=0;
+
+    BuildRxBytes(bitTimes);
+    /*for (i = 0; i < 5; i++) {
+        b = 0;
         for (j = 0; j< 8; j++) {
-            if (bitTimes[i*8+j+1] > 0) {
+            if ( bitTimes[ i*8+j+1 ] > 0) {
                 b |= ( 1 << (7-j));
             }
         }
         DHT_data[i]=b;
-    }
+    }*/
 
-    if (DHT_data[4] == ((DHT_data[0] + DHT_data[1] + DHT_data[2] + DHT_data[3]) & 0xFF)) {
+    /*if (DHT_data[4] == ((DHT_data[0] + DHT_data[1] + DHT_data[2] + DHT_data[3]) & 0xFF)) {
         _lastReadTime = currentTime;
         _lastTemperature = CalcTemperature();
         _lastHumidity = CalcHumidity();
 
     } else {
         err = ERROR_CHECKSUM;
+    }*/
+
+    if(ValidCheckSum()){
+        _lastReadTime = currentTime;
+    }
+    else{
+        err = ERROR_CHECKSUM;
     }
 
     return err;
-
 }
 
 float DHT::CalcTemperature() {
@@ -208,4 +216,27 @@
     return 0;
 }
 
+void  DHT::BuildRxBytes(unsigned int * bitTimes ){
+    int byteValue = 0;
+    for (int byteCount = 0; byteCount < 5; byteCount++) {
+        byteValue = 0;
+        for (int bit = 0; bit < 8; bit++) {
+            if ( bitTimes[ (byteCount * 8)+ bit + 1] > 0) {
+                byteValue |= ( 1 << (7 - bit) );
+            }
+        }
+        DHT_data[byteCount] = byteValue;
+    }
+}
 
+bool  DHT::ValidCheckSum(void){
+    bool CorrectCheckSum = false;
+
+    if (DHT_data[4] == ((DHT_data[0] + DHT_data[1] + DHT_data[2] + DHT_data[3]) & 0xFF)) {
+        _lastTemperature = CalcTemperature();
+        _lastHumidity = CalcHumidity();
+        CorrectCheckSum = true;
+    }
+
+    return CorrectCheckSum;
+}
--- a/DHT/DHT.h	Fri Dec 21 03:47:05 2018 +0000
+++ b/DHT/DHT.h	Thu Dec 27 21:38:08 2018 +0000
@@ -86,10 +86,12 @@
     bool _firsttime;
     int  _DHTtype;
     
-    float CalcTemperature();
-    float CalcHumidity();
+    float CalcTemperature(void);
+    float CalcHumidity(void);
     float ConvertCelciustoFarenheit(float);
     float ConvertCelciustoKelvin(float);
+    void  BuildRxBytes(unsigned int *bitTimes);
+    bool  ValidCheckSum(void);
 
 };