Hola
Tengo una inquietud y es que no he podido sacar la humedad correctamente, en realidad soy nuevo en esta materia.
Lo que es conexión de los dispositivos están conectados correctamente.
Aquí esta el código del sensor de temperatura.
#include <OneWire.h> //Se importan las librerías
#include <DallasTemperature.h>
#define Pin 2 //Se declara el pin donde se conectará la DATA
OneWire ourWire(Pin); //Se establece el pin declarado como bus para la comunicación OneWire
DallasTemperature sensors(&ourWire); //Se instancia la librería DallasTemperature
void setup() {
delay(1000);
Serial.begin(9600);
sensors.begin(); //Se inician los sensores
}
void loop() {
sensors.requestTemperatures(); //Prepara el sensor para la lectura
Serial.print(sensors.getTempCByIndex(0)); //Se lee e imprime la temperatura en grados Celsius
Serial.println(" grados Centigrados");
//Serial.print(sensors.getTempFByIndex(0)); //Se lee e imprime la temperatura en grados Fahrenheit
//Serial.println(" grados Fahrenheit");
delay(1000); //Se provoca un lapso de 1 segundo antes de la próxima lectura
}
El código para el sensor de humedad lo saque directamente de la pagina http://bildr.org/2012/11/hih4030-arduino/
int HIH4030_Pin = A0; //analog pin 0
void setup(){
Serial.begin(9600);
}
void loop(){
//To properly caculate relative humidity, we need the temperature.
float temperature = 25; //replace with a thermometer reading if you have it
float relativeHumidity = getHumidity(temperature);
Serial.println(relativeHumidity);
delay(1000); //just here to slow it down so you can read it
}
float getHumidity(float degreesCelsius){
//caculate relative humidity
float supplyVolt = 5.0;
// read the value from the sensor:
int HIH4030_Value = analogRead(HIH4030_Pin);
float voltage = HIH4030_Value/1023. * supplyVolt; // convert to voltage value
// convert the voltage to a relative humidity
// - the equation is derived from the HIH-4030/31 datasheet
// - it is not calibrated to your individual sensor
// Table 2 of the sheet shows the may deviate from this line
float sensorRH = 161.0 * voltage / supplyVolt - 25.8;
float trueRH = sensorRH / (1.0546 - 0.0026 * degreesCelsius); //temperature adjustment
return trueRH;
}
Bueno hice una combinación de los dos y esta de esta manera
#include <OneWire.h> //Se importan las librerías
#include <DallasTemperature.h>
#define Pin 2 //Se declara el pin donde se conectará la DATA
OneWire ourWire(Pin); //Se establece el pin declarado como bus para la comunicación OneWire
DallasTemperature sensors(&ourWire); //Se instancia la librería DallasTemperature
int HIH4030_Pin = A0; //analog pin 0
void setup() {
delay(5000);
Serial.begin(9600);
sensors.begin(); //Se inician los sensores
}
void loop() {
sensors.requestTemperatures(); //Prepara el sensor para la lectura
Serial.print(sensors.getTempCByIndex(0)); //Se lee e imprime la temperatura en grados Celsius
Serial.println(" grados Centigrados");
//Serial.print(sensors.getTempFByIndex(0)); //Se lee e imprime la temperatura en grados Fahrenheit
//Serial.println(" grados Fahrenheit");
delay(1000); //Se provoca un lapso de 1 segundo antes de la próxima lectura
//To properly caculate relative humidity, we need the temperature.
float (sensors.getTempCByIndex(0)); //replace with a thermometer reading if you have it
// originalmente era float (temperatura = 25);
float relativeHumidity = getHumidity((sensors.getTempCByIndex(0)));
//originalmente era float relativeHumidity = getHumidity(temperatura);
Serial.println(relativeHumidity);
delay(5000); //just here to slow it down so you can read it
}
float getHumidity(float degreesCelsius){
//caculate relative humidity
float supplyVolt = 5.0;
// read the value from the sensor:
int HIH4030_Value = analogRead(HIH4030_Pin);
float voltage = HIH4030_Value/1023. * supplyVolt; // convert to voltage value
// convert the voltage to a relative humidity
// - the equation is derived from the HIH-4030/31 datasheet
// - it is not calibrated to your individual sensor
// Table 2 of the sheet shows the may deviate from this line
float sensorRH = 161.0 * voltage / supplyVolt - 25.8;
float trueRH = sensorRH / (1.0546 - 0.0026 * degreesCelsius); //temperature adjustment
return trueRH;
}
Cual es la idea, es sacar temperatura y humedad a la vez, pero cuando veo el resultado me sale de esta manera
21.37 grados Centigrados aquí me sale bien en la temperatura
-15.74 este es el resultado de la humedad y en realidad no se como leerlo
21.37 grados Centigrados
-25.83
21.37 grados Centigrados
-25.83
21.37 grados Centigrados
-18.26
21.31 grados Centigrados
133.58
21.25 grados Centigrados
125.52
21.25 grados Centigrados
-25.82
21.25 grados Centigrados
17.81
21.19 grados Centigrados
128.18
21.25 grados Centigrados
-17.79
Necesito ayuda, no se en que estaré fallando.