Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: DHT11.h
- Revision:
- 0:4d4c5ea17d86
- Child:
- 1:95b80cc3f676
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/DHT11.h Wed Sep 10 15:14:31 2014 +0000
@@ -0,0 +1,91 @@
+/** @file
+ Library for the use of the DHT11, a temperature and humidity sensor
+ Shigenori Inoue, September 10, 2014
+ */
+#ifndef __DHT11__
+#define __DHT11__
+#include "mbed.h"
+
+/** Example:
+ * @code
+ * #include "mbed.h"
+ * #include "DHT11.h"
+ *
+ * DHT11 d;
+ *
+ * main()
+ * {
+ * int s;
+ * s = d.readData();
+ * if (s != 0) {
+ * printf("Error!\r\n");
+ * }
+ * else {
+ * printf("T:%d, H:%d\r\n", d.readTemperature(), d.readHumidity());
+ * }
+ * }
+ * @endcode
+ */
+
+class DHT11
+{
+public:
+ /** Create a DHT11 interface
+ * @param pin 1-wire-like serial I/O port of DHT11
+ */
+ DHT11(PinName pin);
+ ~DHT11();
+
+ /** Reading the data from the DHT11 */
+ int readData(void);
+
+ /** Reading the data from the DHT11
+ * @return Error code
+ * 0: OK.
+ * 1: Reading the data too often.
+ * 2: 1-wire bus is busy.
+ * 3: DHT11 does not respond.
+ * 4: DHT11 is not ready.
+ * 5: Checksum is incorrect.
+ * 6: Timeout
+ */
+
+ /** Reading the humidity from the data
+ * @return Humidity in % if readData() returns no error. Otherwise, returns 0xffffffff.
+ */
+ int readHumidity(void);
+
+ /** Reading the humidity from the data
+ * @return Temperature in Celcius if readData() returns no error. Otherwise, returns 0xffffffff.
+ */
+ int readTemperature(void);
+
+ enum ErrorDHT11 {
+ OK = 0,
+ TOO_FAST_READ = 1,
+ BUS_BUSY = 2,
+ NOT_PRESENT = 3,
+ NOT_READY = 4,
+ CHKSUM_ERR = 5,
+ WATCHDOG_ERR = 6,
+ };
+
+private:
+ PinName _pin;
+ DigitalInOut io;
+ InterruptIn io_irq;
+ Timer t;
+ uint32_t t_pulse_us;
+ bool first_time;
+ uint64_t data;
+ uint32_t chksum;
+ uint32_t cnt;
+ uint32_t wdt;
+ bool eod;
+ ErrorDHT11 err;
+ void init(void);
+ void pos_edge(void);
+ void neg_edge(void);
+};
+
+#endif
\ No newline at end of file