1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- /*!
- * @file DHT.h
- *
- * This is a library for DHT series of low cost temperature/humidity sensors.
- *
- * You must have Adafruit Unified Sensor Library library installed to use this class.
- *
- * Adafruit invests time and resources providing this open source code,
- * please support Adafruit andopen-source hardware by purchasing products
- * from Adafruit!
- *
- * Written by Adafruit Industries.
- *
- * MIT license, all text above must be included in any redistribution
- */
- #ifndef DHT_H
- #define DHT_H
- #include "Arduino.h"
- /* Uncomment to enable printing out nice debug messages. */
- //#define DHT_DEBUG
- #define DEBUG_PRINTER Serial /**< Define where debug output will be printed. */
- /* Setup debug printing macros. */
- #ifdef DHT_DEBUG
- #define DEBUG_PRINT(...) { DEBUG_PRINTER.print(__VA_ARGS__); }
- #define DEBUG_PRINTLN(...) { DEBUG_PRINTER.println(__VA_ARGS__); }
- #else
- #define DEBUG_PRINT(...) {} /**< Debug Print Placeholder if Debug is disabled */
- #define DEBUG_PRINTLN(...) {} /**< Debug Print Line Placeholder if Debug is disabled */
- #endif
- /* Define types of sensors. */
- #define DHT11 11 /**< DHT TYPE 11 */
- #define DHT12 12 /**< DHY TYPE 12 */
- #define DHT22 22 /**< DHT TYPE 22 */
- #define DHT21 21 /**< DHT TYPE 21 */
- #define AM2301 21 /**< AM2301 */
- /*!
- * @brief Class that stores state and functions for DHT
- */
- class DHT {
- public:
- DHT(uint8_t pin, uint8_t type, uint8_t count=6);
- void begin(uint8_t usec=55);
- float readTemperature(bool S=false, bool force=false);
- float convertCtoF(float);
- float convertFtoC(float);
- float computeHeatIndex(bool isFahrenheit=true);
- float computeHeatIndex(float temperature, float percentHumidity, bool isFahrenheit=true);
- float readHumidity(bool force=false);
- bool read(bool force=false);
- private:
- uint8_t data[5];
- uint8_t _pin, _type;
- #ifdef __AVR
- // Use direct GPIO access on an 8-bit AVR so keep track of the port and bitmask
- // for the digital pin connected to the DHT. Other platforms will use digitalRead.
- uint8_t _bit, _port;
- #endif
- uint32_t _lastreadtime, _maxcycles;
- bool _lastresult;
- uint8_t pullTime; // Time (in usec) to pull up data line before reading
- uint32_t expectPulse(bool level);
- };
- /*!
- * @brief Class that defines Interrupt Lock Avaiability
- */
- class InterruptLock {
- public:
- InterruptLock() {
- #if !defined(ARDUINO_ARCH_NRF52)
- noInterrupts();
- #endif
- }
- ~InterruptLock() {
- #if !defined(ARDUINO_ARCH_NRF52)
- interrupts();
- #endif
- }
- };
- #endif
|