DHT 11 not working, need help

this is my code
it keeps saying
"Humidity: nan % Temperature: nan *C"
when i turn it on

// single DHT 11 temp-humidity sensor on Arduino with serial monitor reporting only
// original written by Tim Stephens 2013 -  http://www.tjstephens.com/blog/2013/11/23/temperature-logger/
// public domain
// modified Photoncatcher March 25, 2020 but.....

// based on DHT11 examples by Ladyada.
// data pin of DHT11 sensors wired to pin 10 on Arduino
// 10k pull up resistor (between data and 5V)

   #include "DHT.h"

   float h, t;
   DHT DHT_sens(7, DHT11);           //datapin sensor to pin 4 Arduino


void setup()
{

   DHT_sens.begin();

   Serial.begin (9600);
   Serial.println ("================================================");
   Serial.println ("Bare DHT11 temp-humidity sensor - March 25, 2020");
   Serial.println ("================================================");
   Serial.println (" ");
}


void loop(){


   
// ================== read from buffer and display =========================   
   
   h = DHT_sens.readHumidity();
   t = DHT_sens.readTemperature();

 
   delay (1000);                       // pause a second
   Serial.print ("Humidity: ");
   Serial.print (h,0);                  // zero decimal
   Serial.print (" %\t");
   Serial.print ("Temperature: ");
   Serial.print (t,1);                  // one decimal
   Serial.println (" *C");
   delay (1000);                       // pause a second

}


// -- END OF FILE --

NAN means Not A Number. If you look at the read code in GitHub you will see the default return value is set to NAN, then if the code fails to read from the sensor it will return NAN. Have you added the 10K pull up resistor mentioned in the comment at the top of your code? Are you sure you have the DHT11 wired to the correct pin? The comment at the top says pin 10, then the comment where you declare DHT_sens(7, DHT11) says pin 4, but the value you pass for pin number is 7. That's all a bit confusing. A picture of how you have wired the sensor to the Arduino might help. Also you can turn on debug prints by uncommenting this line

Please check your wiring. It can be a dead sensor or faulty wiring/jumper wire.

Those sensors are commonly bad. First run a I2C scanner to see if the sensor is being detected. Then double check wiring. Then buy a handful of sensors OR switch to AHT10 and BMP80 sensors, MUCH more reliable.

DHT11 does not have an I2C interface. It's a custom bidirectional protocol over a single wire.

I forgot how primitive that sensor is. Like I said, it's well known to be flaky.

Hi,
It looks like you are using the Adafruit DHT sensor library.
It has an example code that does a simple test for a DHT11.
Try this code, I have set it up for DHT11 and pin7.

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

// REQUIRES the following Arduino libraries:
// - DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library
// - Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor

#include "DHT.h"

#define DHTPIN 7     // Digital pin connected to the DHT sensor
// Feather HUZZAH ESP8266 note: use pins 3, 4, 5, 12, 13 or 14 --
// Pin 15 can work but DHT must be disconnected during program upload.

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

// Connect pin 1 (on the left) of the sensor to +5V
// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1
// to 3.3V instead of 5V!
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 3 (on the right) of the sensor to GROUND (if your sensor has 3 pins)
// Connect pin 4 (on the right) of the sensor to GROUND and leave the pin 3 EMPTY (if your sensor has 4 pins)
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

// Initialize DHT sensor.
// Note that older versions of this library took an optional third parameter to
// tweak the timings for faster processors.  This parameter is no longer needed
// as the current DHT reading algorithm adjusts itself to work on faster procs.
DHT dht(DHTPIN, DHTTYPE);

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

  dht.begin();
}

void loop() {
  // Wait a few seconds between measurements.
  delay(2000);

  // 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();
  // Read temperature as Celsius (the default)
  float t = dht.readTemperature();
  // Read temperature as Fahrenheit (isFahrenheit = true)
  float f = dht.readTemperature(true);

  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }

  // Compute heat index in Fahrenheit (the default)
  float hif = dht.computeHeatIndex(f, h);
  // Compute heat index in Celsius (isFahreheit = false)
  float hic = dht.computeHeatIndex(t, h, false);

  Serial.print(F("Humidity: "));
  Serial.print(h);
  Serial.print(F("%  Temperature: "));
  Serial.print(t);
  Serial.print(F("°C "));
  Serial.print(f);
  Serial.print(F("°F  Heat index: "));
  Serial.print(hic);
  Serial.print(F("°C "));
  Serial.print(hif);
  Serial.println(F("°F"));
}

Open the IDE monitor with 9600baud selected and see what it shows.

Can you please post a copy of your circuit, a picture of a hand drawn circuit in jpg, png?
Hand drawn and photographed is perfectly acceptable.
Please include ALL hardware, power supplies, component names and pin labels.
So we can make sure your circuit is good.

Tom... :smiley: :+1: :coffee: :australia:

I’ll post a diagram tmrw