Based on another DHT library, this is just a modified one without using the RTC component
Revision 2:ce7b80e0bb2e, committed 2018-12-27
- 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);
};