#ifndef DHT11_H #define DHT11_H #if defined(ARDUINO) && (ARDUINO>=100) #include #else #include #endif #define _DHT11_MAX_ITERS 10000 #define _DHT11_START_SIGNAL_WAIT 20 #define _DHT11_RESPONSE_WAIT 5 #define _DHT11_ONE_THRESHOLD 40 #define _DHT11_RESPONSE_SIZE 5 #define _DHT11_BITS_PER_BYTE 8 #define _DHT11_BYTE_MS_BIT 7 #define _DHT11_HUMIDITY_INDEX 0 #define _DHT11_TEMPERATURE_INDEX 2 #define _DHT11_CHECKSUM_INDEX 4 #define _DHT11_BITS_IN(object) (8 * sizeof((object))) class DHT11 { public: enum Status { OK, ERROR_CHECKSUM, ERROR_TIMEOUT, }; DHT11(uint8_t pin); Status read(); int getHumidity(); int getTemperature(); private: int _humidity; int _temperature; uint8_t _pin; Status waitForPinChange(const int old, unsigned int maxIter=_DHT11_MAX_ITERS); }; #endif // DHT11_H