cyberhs:
Lascio a te l'onere della verifica...
float Humidex(float Tair, float DewPoint) {
float E = 6.11 * exp(5417.7530 * ((1/273.16) - (1/DewPoint)))
float H = 0.5555 *(E - 10.0);
return Tair + H;
}
ciao Cyberhs.... devo ancora disturbarti, ho provato ad aggiungere i tuoi suggerimenti ma non ne sono venuto a capo di niente.. forse non li ho inseriti nel punto corretto dello scheck oppure ho fatto altri pasticci......
saresti così gentile da verificare lo sheck e se ho inserito correttamente i tuoi suggerimenti?....
adesso il display mostra correttamente temepratura, umidita e dewpoint ...quando aggiungo le tue righe e lancio la verifica nella finestra in basso dell'ide vengono visualizzato un po di errori...
grazie
/*
4 APRILE 2014
TEMPERATURA UMIDITA E DEWPOINT CON SENSORE SHT11 SENSIRON
*/
#include <LiquidCrystal.h>
#include "Sensirion.h"
int greenLED=8; //Pin7 = Green LED
int redLED=9; //Pin8 = Red LED
int blueLED=10; //Pin9 = Blue LED
#define sensirionDataPin 7 //pin data sensore collegato al pin 7
#define sensirionClockPin 6 //pin clock sensore collegato al pin 6
float temperature;
float humidity;
float dewpoint;
//float humidex;
//------------------PER INDICE DI CALORE --------------------------
float humidex(float temperature, float dewpoint) {
float E = 6.11 * exp(5417.7530 * ((1/273.16) - (1/dewpoint)))
float H = 0.5555 *(E - 10.0);
return temperature + H;
}
//------------------PER INDICE DI CALORE --------------------------
Sensirion tempSensor = Sensirion(sensirionDataPin, sensirionClockPin);
// initialize the LiquidCrystal library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup()
{
pinMode(redLED, OUTPUT); //LED set to output
pinMode(blueLED, OUTPUT); //LED set to output
pinMode(greenLED, OUTPUT); //LED set to output
lcd.begin(20, 4);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" A R D U I N O");
lcd.setCursor(0,1);
lcd.print(" TEMPERATURA ");
lcd.setCursor(0,2);
lcd.print(" UMIDITA E ");
lcd.setCursor(0,3);
lcd.print("DEWPOINT CON SHT11");
// delay(5000);
lcd.clear();
delay(1000);
}
void loop()
{
tempSensor.measure(&temperature, &humidity, &dewpoint);
if (temperature >= 24) //temperatura maggiore o uguale a 24 led rosso acceso
{
digitalWrite (redLED, LOW); //led rosso acceso
digitalWrite (blueLED, HIGH); //led blu spento
digitalWrite (greenLED, HIGH); //lev verde spento
}
else if ((temperature < 24) && (temperature >20)) //temperatura da 20 a 24 led verde acceso
{
digitalWrite (redLED, HIGH); //led rosso spento
digitalWrite (blueLED, HIGH); //led blu spento
digitalWrite (greenLED, LOW); //led verde acceso
}
else if ( temperature <= 20) //temperatura minore o uguale a 20 led blu acceso
{
digitalWrite (redLED, HIGH); //led rosso spento
digitalWrite (blueLED, LOW); //led blu acceso
digitalWrite (greenLED, HIGH); //led verde spento
}
//lcd.clear();
lcd.setCursor(0, 0);
lcd.print("TEMPERATURA");
lcd.setCursor(13, 0);
lcd.print(temperature);
lcd.print (" C");
lcd.setCursor(0,1);
lcd.print("UMIDITA'");
lcd.setCursor(13, 1);
lcd.print(humidity);
lcd.print(" %");
lcd.setCursor(0,2);
lcd.print("DEWPOINT");
lcd.setCursor(13, 2);
lcd.print(dewpoint);
lcd.print(" C");
lcd.setCursor(0,3);
lcd.print("HUMIDEX");
lcd.setCursor(13, 3); // bottom lef
lcd.print(humidex);
lcd.print(" C");
}
/* come calcolare indice di calore
L’indice Humidex (H) è così formulato:
H = T + 5/9 * (e-10), cioè
H = T + 0,5555 * (e-10)
dove T è la temperatura dell’aria (in °C), ed "e" è la pressione di vapore dell’aria (hPa) osservata, per esempio tramite la misura con uno psicrometro.
Poiché quest'ultima grandezza non è facile da reperire, la si può calcolare a partire dall'umidità relativa:
e = (6,112*10^(7,5*T/(237,7+T))*UR/100)
con T = temperatura dell'aria (°C) e UR = umidità relativa dell'aria (%).
H non ha un’unità di misura propria, pertanto si può abitualmente associare alla stessa unità della temperatura (°C) anche se si tratta di un indice e non di una grandezza fisica.
Facciamo un esempio: la temperatura dell'aria misurata da un termometro è di 34 °C, l'umidità relativa è del 60 %
- ricaviamo prima "e": (6,112*10^(7,5*34/(237,7+34))*60/100) = 31,832
- H vale dunque: 34 + 0,5555 * (31,832 - 10) = 46
Ovvero la sensazione di caldo sul corpo umano risulta pari a 46 °C.
//Dex point and humidex calculator
//Humidex = (air temperature) + h
// h = (0.5555)*(e - 10.0);
// e = 6.11 * exp(5417.7530 * ((1/273.16) - (1/dewpoint)))
// http://www.physlink.com/reference/weather.cfm
// heat index (HI) or humiture
// http://en.wikipedia.org/wiki/Heat_index
// http://www.nws.noaa.gov/os/heat/index.shtml#heatindex
//HI = -42.379 + 2.04901523T + 10.14333127R - 0.22475541TR - 6.83783x10
// -3T2 - 5.481717x10 - 2R2 + 1.22874x10 -3T2R + 8.5282x10
// -4TR2 - 1.99x10-6T2R2
// where T = ambient dry bulb temperature (°F)
// R = relative humidity (integer percentage).
// http://www.4wx.com/wxcalc/formulas/heatIndex.php
//Heat Index = -42.379 + (2.04901523 x T) + (10.14333127 x R) - (0.22475541 x T x R) - (6.83783x10-3 x T2) - (5.481717x10-2 x R2) + (1.22874x10-3 x T2 x R) + (8.5282x10-4 x T x R2) - (1.99x10-6 x T2 x R2)
// Where,
//T = Temperature in ?F
// R = Relative Humidity in %
// Heat index is utilized only in warm weather >=70° F
// http://www.gorhamschaffler.com/humidity_formulas.htm
*/