DHT11 Sensor

So, I'm using this DHT11 example (from I believe Adafruit.com)

// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain

#include "DHT.h"

#define DHTPIN 2     // what pin we're connected to

// Uncomment whatever type you're using!
//#define DHTTYPE DHT11   // DHT 11 
#define DHTTYPE DHT22   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

// Connect pin 1 (on the left) of the sensor to +5V
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600); 
  Serial.println("DHTxx test!");

  dht.begin();
}

void loop() {
  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  // check if returns are valid, if they are NaN (not a number) then something went wrong!
  if (isnan(t) || isnan(h)) {
    Serial.println("Failed to read from DHT");
  } else {
    Serial.print("Humidity: "); 
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperature: "); 
    Serial.print(t);
    Serial.println(" *C");
  }
}

It uploads fine, but when I open the serial port. It says, "Failed to read from DHT" prints three lines of "Humidity: 0 Temperature: 0 degrees C". I understand that the if AND else statement are being printed, but I don't understand why. For the if statement to print, the temp and humidity readings have to be non-numbers. But figured if that was the case then the else statement wouldn't print.

Can someone please help me!

As soon as loop finishes it starts again, so I suspect you are seeing the failure to read at the start because the sensor is not settled and then you get the zero on subsequent calls to loop. If you are getting zero all the time either the sensor is broken or could be wired incorrectly

Replace the loop() with this one, which check H and T separately.

void loop() 
{
  sleep(2000); // see datasheet 
  float h = dht.readHumidity();

  if (isnan(h)) {
    Serial.println("\nFailed to read humidity from DHT");
  } else {
    Serial.print("Humidity: "); 
    Serial.print(h);
    Serial.print(" %\t");
  }

  sleep(2000);
  float t = dht.readTemperature();
  if (isnan(t)) {
    Serial.println("\nFailed to read Temperature from DHT");
  } else {
    Serial.print("Temperature: "); 
    Serial.print(t);
    Serial.println(" °C");   // ° == ALT 0176 
  }
}

Alternative DHT lib see: - http://arduino.cc/playground/Main/DHTLib -

It might not make much difference but if you are using a DHT11 then try uncomment the #define DHTTYPE DHT11 // DHT 11 line and comment out the DHT22 one.

Thank you! I appreciate the help (: I'll see if the sensor doesn't work.