diff --git a/DHT.cpp b/DHT.cpp index b97dc19..c508ff0 100644 --- a/DHT.cpp +++ b/DHT.cpp @@ -22,7 +22,9 @@ DHT::DHT(uint8_t pin, uint8_t type, uint8_t count) { // based on the speed of the processor. } -void DHT::begin(void) { +// Optionally pass pull-up time (in microseconds) before DHT reading starts. +// Default is 55 (see function declaration in DHT.h). +void DHT::begin(uint8_t usec) { // set up the pins! pinMode(_pin, INPUT_PULLUP); // Using this value makes sure that millis() - lastreadtime will be @@ -30,6 +32,7 @@ void DHT::begin(void) { // but so will the subtraction. _lastreadtime = millis() - MIN_INTERVAL; DEBUG_PRINT("DHT max clock cycles: "); DEBUG_PRINTLN(_maxcycles, DEC); + pullTime = usec; } //boolean S == Scale. True == Fahrenheit; False == Celcius @@ -179,8 +182,10 @@ bool DHT::read(bool force) { // End the start signal by setting data line high for 40 microseconds. pinMode(_pin, INPUT_PULLUP); + // Delay a moment to let sensor pull data line low. + delayMicroseconds(pullTime); + // Now start reading the data line to get the value from the DHT sensor. - delayMicroseconds(40); // Delay a bit to let sensor pull data line low. // Turn off interrupts temporarily because the next sections // are timing critical and we don't want any interruptions. diff --git a/DHT.h b/DHT.h index dd09d7f..400162d 100644 --- a/DHT.h +++ b/DHT.h @@ -39,7 +39,7 @@ written by Adafruit Industries class DHT { public: DHT(uint8_t pin, uint8_t type, uint8_t count=6); - void begin(void); + void begin(uint8_t usec=55); float readTemperature(bool S=false, bool force=false); float convertCtoF(float); float convertFtoC(float); @@ -58,6 +58,7 @@ class DHT { #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); diff --git a/library.properties b/library.properties index d6c0164..3aaa8ce 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=DHT sensor library -version=1.3.2 +version=1.3.3 author=Adafruit maintainer=Adafruit sentence=Arduino library for DHT11, DHT22, etc Temp & Humidity Sensors