Skip to content

Commit

Permalink
Added support for Celsius in computeHeatIndex
Browse files Browse the repository at this point in the history
  • Loading branch information
MyIgel committed Nov 1, 2014
1 parent fcd865b commit 25942ac
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 14 deletions.
28 changes: 20 additions & 8 deletions DHT.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ void DHT::begin(void) {
_lastreadtime = 0;
}

//boolean S == Scale. True == Farenheit; False == Celcius
//boolean S == Scale. True == Fahrenheit; False == Celcius
float DHT::readTemperature(bool S) {
float f;

Expand Down Expand Up @@ -76,18 +76,30 @@ float DHT::readHumidity(void) {
return NAN;
}

float DHT::computeHeatIndex(float tempFahrenheit, float percentHumidity) {
//boolean isFahrenheit: True == Fahrenheit; False == Celcius
float DHT::computeHeatIndex(float temperature, float percentHumidity, bool isFahrenheit) {
// Adapted from equation at: https://github.com/adafruit/DHT-sensor-library/issues/9 and
// Wikipedia: http://en.wikipedia.org/wiki/Heat_index
if (!isFahrenheit) {
return -8.784695 +
1.61139411 * temperature +
2.338549 * percentHumidity +
-0.14611605 * temperature*percentHumidity +
-0.01230809 * pow(temperature, 2) +
-0.01642482 * pow(percentHumidity, 2) +
0.00221173 * pow(temperature, 2) * percentHumidity +
0.00072546 * temperature*pow(percentHumidity, 2) +
-0.00000358 * pow(temperature, 2) * pow(percentHumidity, 2);
}
return -42.379 +
2.04901523 * tempFahrenheit +
2.04901523 * temperature +
10.14333127 * percentHumidity +
-0.22475541 * tempFahrenheit*percentHumidity +
-0.00683783 * pow(tempFahrenheit, 2) +
-0.22475541 * temperature*percentHumidity +
-0.00683783 * pow(temperature, 2) +
-0.05481717 * pow(percentHumidity, 2) +
0.00122874 * pow(tempFahrenheit, 2) * percentHumidity +
0.00085282 * tempFahrenheit*pow(percentHumidity, 2) +
-0.00000199 * pow(tempFahrenheit, 2) * pow(percentHumidity, 2);
0.00122874 * pow(temperature, 2) * percentHumidity +
0.00085282 * temperature*pow(percentHumidity, 2) +
-0.00000199 * pow(temperature, 2) * pow(percentHumidity, 2);
}


Expand Down
2 changes: 1 addition & 1 deletion DHT.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class DHT {
float readTemperature(bool S=false);
float convertCtoF(float);
float convertFtoC(float);
float computeHeatIndex(float tempFahrenheit, float percentHumidity);
float computeHeatIndex(float tempFahrenheit, float percentHumidity, bool isFahrenheit=false);
float readHumidity(void);
boolean read(void);

Expand Down
13 changes: 8 additions & 5 deletions examples/DHTtester/DHTtester.ino
Original file line number Diff line number Diff line change
Expand Up @@ -46,16 +46,17 @@ void loop() {
float t = dht.readTemperature();
// Read temperature as Fahrenheit
float f = dht.readTemperature(true);

// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Failed to read from DHT sensor!");
return;
}

// Compute heat index
// Must send in temp in Fahrenheit!
float hi = dht.computeHeatIndex(f, h);
// Compute heat index in Celsius
float hic = dht.computeHeatIndex(t, h);
// Compute heat index in Fahrenheit
float hif = dht.computeHeatIndex(f, h, true);

Serial.print("Humidity: ");
Serial.print(h);
Expand All @@ -66,6 +67,8 @@ void loop() {
Serial.print(f);
Serial.print(" *F\t");
Serial.print("Heat index: ");
Serial.print(hi);
Serial.print(hic);
Serial.print(" *C ");
Serial.print(hif);
Serial.println(" *F");
}

0 comments on commit 25942ac

Please sign in to comment.