Problem using SHT75

I am using SHT75 with arduino(without any breakout board), the problem is that it gives values like
negative stuff, the code for the program is

#include <Sensirion.h>

const uint8_t dataPin =  8;              // SHT serial data
const uint8_t sclkPin =  9 ;              // SHT serial clock
const uint8_t ledPin  = 13;              // Arduino built-in LED
const uint32_t TRHSTEP   = 5000UL;       // Sensor query period
const uint32_t BLINKSTEP =  250UL;       // LED blink period

Sensirion sht = Sensirion(dataPin, sclkPin);

uint16_t rawData;
float temperature;
float humidity;
float dewpoint;

byte ledState = 0;
byte measActive = false;
byte measType = TEMP;

unsigned long trhMillis = 0;             // Time interval tracking
unsigned long blinkMillis = 0;

void setup() {
    pinMode(ledPin, OUTPUT);
    delay(15);                           // Wait >= 11 ms before first cmd
    // Demonstrate blocking calls
    sht.measTemp(&rawData);              // sht.meas(TEMP, &rawData, BLOCK)
    temperature = sht.calcTemp(rawData);
    sht.measHumi(&rawData);              // sht.meas(HUMI, &rawData, BLOCK)
    humidity = sht.calcHumi(rawData, temperature);
    dewpoint = sht.calcDewpoint(humidity, temperature);

void loop(){ 
    unsigned long curMillis = millis();          // Get current time

    // Rapidly blink LED.  Blocking calls take too long to allow this.
    if (curMillis - blinkMillis >= BLINKSTEP) {  // Time to toggle the LED state?
        ledState ^= 1;
        digitalWrite(ledPin, ledState);
        blinkMillis = curMillis;

    // Demonstrate non-blocking calls
    if (curMillis - trhMillis >= TRHSTEP) {      // Time for new measurements?
        measActive = true;
        measType = TEMP;
        sht.meas(TEMP, &rawData, NONBLOCK);      // Start temp measurement
        trhMillis = curMillis;
    if (measActive && sht.measRdy()) {           // Note: no error checkings
        if (measType == TEMP) {                  // Process temp or humi?
            measType = HUMI;
            temperature = sht.calcTemp(rawData); // Convert raw sensor data
            sht.meas(HUMI, &rawData, NONBLOCK);  // Start humidity measurement
        else {
            measActive = false;
            humidity = sht.calcHumi(rawData, temperature); // Convert raw sensor data
            dewpoint = sht.calcDewpoint(humidity, temperature);

void logData() {
    Serial.print("Temperature = ");

    Serial.print(" C, Humidity = ");

    Serial.print(" %, Dewpoint = ");
    Serial.println(" C");

Its giving output like

Temperature = -40.10 C, Humidity = 0.10 %, Dewpoint = -90.17 C

I have used 10K resistor between VDD and DATA, VDD is 5V from Arduino.
While troubleshooting i found that the second pin(VDD) shows continuity with third (GND) and fourth pin(DATA) too, similarly the Third pin(GND) shows continuity with second pin (VDD) and fourth pin(DATA). I dont know the reason behind this, this occurs when the circuit is connected to arduino.

Previously I have been working on SHT15, this thing doesnot occur there.

Please help me to get the readings right.

Thanks in advance.

I have attached the picture of the system.

Post a link to the library you're using!

This is the library!

You don't check for errors returned by the library. You got always 0 as the rawData result which indicates an error. Print out the error you get and post it here. Check your wiring. Check for broken wires too.

I know this is an old topic but I use the same sensor for my weather station.. The odd thing is that the sensor never goes over 80%.. Well it goes over about 83.5 i dont know the exact number.. It for sure never in one year of operation went over 90 percent.. Today for example there is a fog outside that you cant see pass 40m and the sensor is showing 78.35
I tried changing the resolution and digging around the library but it seems nothing odd.

Does anyone else have an explanation