30template <u
int8_t PIN1, u
int8_t PIN2>
37 pinMode(_pin, OUTPUT);
38 digitalWrite(_pin, HIGH);
69 int error = readRawData(data);
75 float t = (float)data[3] / 10;
90 int error = readRawData(data);
109 int error = readRawData(data);
116 float t = (float)data[3] / 10;
117 temperature = data[2] + t;
132 return "Error 253: Timeout reading from DHT11.";
134 return "Error 254: Checksum mismatch reading from DHT11.";
138 return "Error: Unknown.";
144 unsigned long _delayMS = 250;
151 pinMode(_pin, OUTPUT);
152 digitalWrite(_pin, LOW);
154 digitalWrite(_pin, HIGH);
155 delayMicroseconds(40);
156 pinMode(_pin, INPUT);
165 int readRawData(
byte data[5])
173 unsigned long timeout_start = millis();
175 while (digitalRead(_pin) == HIGH)
183 delayMicroseconds(80);
184 if (digitalRead(_pin) == HIGH)
186 delayMicroseconds(80);
187 for (
int i = 0; i < 5; i++)
189 data[i] = readByte();
192 if (data[4] == ((data[0] + data[1] + data[2] + data[3]) & 0xFF))
213 for (
int i = 0; i < 8; i++)
215 while (digitalRead(_pin) == LOW)
217 delayMicroseconds(30);
218 if (digitalRead(_pin) == HIGH)
220 value |= (1 << (7 - i));
222 while (digitalRead(_pin) == HIGH)
A template class to interface with the DHT11 temperature & humidity sensor.
static const int ERROR_TIMEOUT
static const int ERROR_CHECKSUM
int readHumidity()
Reads and returns the humidity from the DHT11 sensor.
static const int TIMEOUT_DURATION
float readTemperature()
Reads and returns the temperature from the DHT11 sensor.
String getErrorString(int errorCode)
int readTemperatureHumidity(float &temperature, int &humidity)
void setDelay(unsigned long delay)
Sets the delay between consecutive sensor readings.