Simple library for the DHT11 temperature and humidity sensor. Forked from an existing Mbed DHT11 project.

Revision:
12:af1eadec17e5
Parent:
11:e91c151d1798
Child:
13:11d0770eb603
--- a/DHT11.cpp	Thu Sep 25 14:13:10 2014 +0000
+++ b/DHT11.cpp	Mon May 31 07:02:00 2021 +0000
@@ -21,8 +21,8 @@
 // Constructor
 DHT11::DHT11(PinName pin) : io(pin, PIN_INPUT, OpenDrain, 1), io_irq(pin)
 {
-    io_irq.rise(this, &DHT11::pos_edge);
-    io_irq.fall(this, &DHT11::neg_edge);
+    io_irq.rise(callback(this, &DHT11::pos_edge));
+    io_irq.fall(callback(this, &DHT11::neg_edge));
     io_irq.disable_irq();
     t.start();
     first_time = true;
@@ -39,7 +39,7 @@
 int DHT11::readData(void)
 {
     // Checking the measurement frequency
-    if (t.read_ms() < 2000 && first_time == false) {
+    if (chrono::duration_cast<chrono::milliseconds>(t.elapsed_time()).count() < 2000 && first_time == false) {
         t.reset();
         return READ_TOO_OFTEN;
     }
@@ -58,7 +58,7 @@
     io.output();
     io = 0;
     do {
-    } while (t.read_ms() < 20 + t_tol_start);
+    } while (chrono::duration_cast<chrono::milliseconds>(t.elapsed_time()).count() < 20 + t_tol_start);
     io.input();
     io = 1;
     
@@ -66,7 +66,7 @@
     // Waiting for the start of the response signal
     t.reset();
     do {
-        if (t.read_us() > 100) {
+        if (t.elapsed_time().count() > 100) {
             t.reset();
             return NOT_PRESENT;
         }
@@ -75,7 +75,7 @@
     // Wainting for the start of the ready signal
     t.reset();
     do {
-        if (t.read_us() > 100) {
+        if (t.elapsed_time().count() > 100) {
             t.reset();
             return NOT_READY;
         }
@@ -84,7 +84,7 @@
     // Wainting for the end of the ready signal
     t.reset();
     do {
-        if (t.read_us() > 100) {
+        if (t.elapsed_time().count() > 100) {
             t.reset();
             return WATCHDOG_ERR;
         }
@@ -161,7 +161,7 @@
     io_irq.disable_irq();
 
     // Reading the positive pulse width
-    t_pulse_us = t.read_us();
+    t_pulse_us = t.elapsed_time().count();
 
     // Detecting 0 if the pulse width ranges around 25 us
     if (25 - t_tol_pulse <= t_pulse_us && t_pulse_us <= 30 + t_tol_pulse) {