Resolve issue #20 by moving delay after 2 second read check to make read return quickly.

This commit is contained in:
Tony DiCola 2014-06-02 13:41:12 -07:00
parent 9611395a77
commit f2a48d6267
2 changed files with 9 additions and 4 deletions

10
DHT.cpp
View File

@ -93,10 +93,8 @@ boolean DHT::read(void) {
uint8_t j = 0, i; uint8_t j = 0, i;
unsigned long currenttime; unsigned long currenttime;
// pull the pin high and wait 250 milliseconds // Check if sensor was read less than two seconds ago and return early
digitalWrite(_pin, HIGH); // to use last reading.
delay(250);
currenttime = millis(); currenttime = millis();
if (currenttime < _lastreadtime) { if (currenttime < _lastreadtime) {
// ie there was a rollover // ie there was a rollover
@ -115,6 +113,10 @@ boolean DHT::read(void) {
data[0] = data[1] = data[2] = data[3] = data[4] = 0; data[0] = data[1] = data[2] = data[3] = data[4] = 0;
// pull the pin high and wait 250 milliseconds
digitalWrite(_pin, HIGH);
delay(250);
// now pull it low for ~20 milliseconds // now pull it low for ~20 milliseconds
pinMode(_pin, OUTPUT); pinMode(_pin, OUTPUT);
digitalWrite(_pin, LOW); digitalWrite(_pin, LOW);

View File

@ -25,6 +25,9 @@ void setup() {
} }
void loop() { void loop() {
// Wait a few seconds between measurements.
delay(2000);
// Reading temperature or humidity takes about 250 milliseconds! // Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor) // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity(); float h = dht.readHumidity();