Ayuda sensor de humedad HIH-4030 y de temperatura DS18B20

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.

Lo primero que encontré en mi busqueda es que el Sensor de Humedad

This sensor reads accurately for me using a 2.94V Vref and voltage source (instead of 5V). The test environment is pretty consistently ~25C, so I have not been able to test the drift with a lower excitation voltage.

Sugiere usar una tensión de referencia de la mitad del valor que estas usando.
Pero tu codigo dice estar bien.

Porque no pruebas este tu código para el Sensor de Humedad solo y vemos que valores arroja y luego comparamos con el otro caso?

//From the bildr article 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(100); //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;
}

SI he probado el sensor solo y me arroja el mismo resultado, pero se regula con la intensidad de la luz, si pongo el dedo arriba dando al sensor sombra se estabiliza, nose por que pero se regula

La hoja de datos dice:
Sensor is light sensitive. For best performance, shield sensor from bright light.
El sensor es sensible a la luz. Para obtener las mejores perfomances, proteja el sensor de la luz brillante.