Fix merge conflicts, make compute heat index default to Fahrenheit to not break old code that assumes default is Fahrenheit.

This commit is contained in:
Tony DiCola 2015-06-26 15:56:04 -07:00
commit ef9590ad96
3 changed files with 37 additions and 18 deletions

32
DHT.cpp
View File

@ -21,7 +21,7 @@ void DHT::begin(void) {
_lastreadtime = 0; _lastreadtime = 0;
} }
//boolean S == Scale. True == Farenheit; False == Celcius //boolean S == Scale. True == Fahrenheit; False == Celcius
float DHT::readTemperature(bool S) { float DHT::readTemperature(bool S) {
float f = NAN; float f = NAN;
@ -78,18 +78,34 @@ float DHT::readHumidity(void) {
return f; return f;
} }
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 // Adapted from equation at: https://github.com/adafruit/DHT-sensor-library/issues/9 and
// Wikipedia: http://en.wikipedia.org/wiki/Heat_index // Wikipedia: http://en.wikipedia.org/wiki/Heat_index
if (!isFahrenheit) {
// Celsius heat index calculation.
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);
}
else {
// Fahrenheit heat index calculation.
return -42.379 + return -42.379 +
2.04901523 * tempFahrenheit + 2.04901523 * temperature +
10.14333127 * percentHumidity + 10.14333127 * percentHumidity +
-0.22475541 * tempFahrenheit*percentHumidity + -0.22475541 * temperature*percentHumidity +
-0.00683783 * pow(tempFahrenheit, 2) + -0.00683783 * pow(temperature, 2) +
-0.05481717 * pow(percentHumidity, 2) + -0.05481717 * pow(percentHumidity, 2) +
0.00122874 * pow(tempFahrenheit, 2) * percentHumidity + 0.00122874 * pow(temperature, 2) * percentHumidity +
0.00085282 * tempFahrenheit*pow(percentHumidity, 2) + 0.00085282 * temperature*pow(percentHumidity, 2) +
-0.00000199 * pow(tempFahrenheit, 2) * pow(percentHumidity, 2); -0.00000199 * pow(temperature, 2) * pow(percentHumidity, 2);
}
} }
boolean DHT::read(void) { boolean DHT::read(void) {

2
DHT.h
View File

@ -42,7 +42,7 @@ class DHT {
float readTemperature(bool S=false); float readTemperature(bool S=false);
float convertCtoF(float); float convertCtoF(float);
float convertFtoC(float); float convertFtoC(float);
float computeHeatIndex(float tempFahrenheit, float percentHumidity); float computeHeatIndex(float temperature, float percentHumidity, bool isFahrenheit=true);
float readHumidity(void); float readHumidity(void);
boolean read(void); boolean read(void);

View File

@ -37,9 +37,9 @@ void loop() {
// 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();
// Read temperature as Celsius // Read temperature as Celsius (the default)
float t = dht.readTemperature(); float t = dht.readTemperature();
// Read temperature as Fahrenheit // Read temperature as Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature(true); float f = dht.readTemperature(true);
// Check if any reads failed and exit early (to try again). // Check if any reads failed and exit early (to try again).
@ -48,9 +48,10 @@ void loop() {
return; return;
} }
// Compute heat index // Compute heat index in Fahrenheit (the default)
// Must send in temp in Fahrenheit! float hif = dht.computeHeatIndex(f, h);
float hi = dht.computeHeatIndex(f, h); // Compute heat index in Celsius (isFahreheit = false)
float hic = dht.computeHeatIndex(t, h, false);
Serial.print("Humidity: "); Serial.print("Humidity: ");
Serial.print(h); Serial.print(h);
@ -61,6 +62,8 @@ void loop() {
Serial.print(f); Serial.print(f);
Serial.print(" *F\t"); Serial.print(" *F\t");
Serial.print("Heat index: "); Serial.print("Heat index: ");
Serial.print(hi); Serial.print(hic);
Serial.print(" *C ");
Serial.print(hif);
Serial.println(" *F"); Serial.println(" *F");
} }