Bird
Raised Fist0
Arduinoprogramming~30 mins

Humidity and temperature (DHT11/DHT22) in Arduino - Mini Project: Build & Apply

Choose your learning style10 modes available
Humidity and temperature (DHT11/DHT22)
📖 Scenario: You want to measure the temperature and humidity in your room using a DHT11 or DHT22 sensor connected to an Arduino board. This sensor gives you two values: how warm the room is (temperature) and how much moisture is in the air (humidity).
🎯 Goal: Build a simple Arduino program that reads temperature and humidity from the DHT sensor and prints these values to the Serial Monitor.
📋 What You'll Learn
Use the DHT sensor library to read data from the sensor
Set up the sensor on a specific Arduino pin
Read temperature and humidity values from the sensor
Print the temperature and humidity values to the Serial Monitor
💡 Why This Matters
🌍 Real World
Measuring temperature and humidity is useful for weather stations, home automation, and plant care systems.
💼 Career
Understanding how to read sensor data and display it is a key skill for embedded systems and IoT device programming.
Progress0 / 4 steps
1
Set up the DHT sensor and include the library
Include the DHT.h library at the top of your sketch. Create a DHT object called dht using pin 2 and sensor type DHT11. Also, start the Serial communication at 9600 baud in the setup() function.
Arduino
Hint

Use #include <DHT.h> to include the library. Define DHTPIN as 2 and DHTTYPE as DHT11. Create the dht object with these. In setup(), start serial with Serial.begin(9600); and call dht.begin();.

2
Create variables to store humidity and temperature
Inside the loop() function, create two float variables called humidity and temperature. Use dht.readHumidity() to set humidity and dht.readTemperature() to set temperature.
Arduino
Hint

Use float humidity = dht.readHumidity(); and float temperature = dht.readTemperature(); inside loop().

3
Check if readings are valid and print them
Add an if statement to check if humidity or temperature is NaN using isnan(). If either is NaN, print "Failed to read from DHT sensor!" and return from loop(). Otherwise, print "Humidity: " followed by humidity and " %", then print "Temperature: " followed by temperature and " *C". Add a delay of 2000 milliseconds at the end.
Arduino
Hint

Use if (isnan(humidity) || isnan(temperature)) to check for errors. Print the error message and return; if true. Otherwise, print humidity and temperature with labels and units. Use delay(2000); to wait 2 seconds before next reading.

4
Print the final output to Serial Monitor
Make sure your program prints the humidity and temperature readings every 2 seconds to the Serial Monitor in this exact format (replace numbers with actual readings):
Humidity: 45.00 %
Temperature: 23.00 *C
If the sensor fails, it should print:
Failed to read from DHT sensor!
Arduino
Hint

Run your program and open the Serial Monitor at 9600 baud. You should see humidity and temperature printed every 2 seconds. If the sensor fails, the error message appears.

Practice

(1/5)
1. What does the DHT11 sensor measure in an Arduino project?
easy
A. Humidity and temperature
B. Light intensity
C. Sound levels
D. Distance

Solution

  1. Step 1: Understand sensor purpose

    The DHT11 sensor is designed to measure environmental conditions.
  2. Step 2: Identify measured values

    It specifically measures humidity and temperature, not light, sound, or distance.
  3. Final Answer:

    Humidity and temperature -> Option A
  4. Quick Check:

    DHT11 measures humidity and temperature [OK]
Hint: Remember DHT sensors measure air humidity and temperature [OK]
Common Mistakes:
  • Confusing DHT11 with light or sound sensors
  • Thinking it measures distance
  • Assuming it measures pressure
2. Which of the following is the correct way to include the DHT library in an Arduino sketch?
easy
A. #include "dht11.h"
B. #include
C. #include <dht_sensor>
D. #include

Solution

  1. Step 1: Recall library inclusion syntax

    Arduino libraries are included with #include and angle brackets for installed libraries.
  2. Step 2: Identify correct library name

    The standard DHT library is included as #include <DHT.h>.
  3. Final Answer:

    #include <DHT.h> -> Option D
  4. Quick Check:

    Use #include <DHT.h> to include DHT library [OK]
Hint: Use angle brackets and correct case for library names [OK]
Common Mistakes:
  • Using wrong file names
  • Using quotes instead of angle brackets
  • Incorrect capitalization
3. What will be the output of this Arduino code snippet if the sensor reading is successful?
float h = dht.readHumidity();
float t = dht.readTemperature();
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C");
medium
A. Error reading sensor
B. Humidity: % Temperature: *C
C. Humidity: 45.00 % Temperature: 23.00 *C
D. Humidity: NaN % Temperature: NaN *C

Solution

  1. Step 1: Understand sensor reading functions

    The functions readHumidity() and readTemperature() return float values if successful.
  2. Step 2: Analyze Serial output

    The code prints humidity and temperature values with labels and units, separated by tab.
  3. Final Answer:

    Humidity: 45.00 % Temperature: 23.00 *C -> Option C
  4. Quick Check:

    Successful read prints values with labels [OK]
Hint: Successful reads print numbers, errors show NaN or messages [OK]
Common Mistakes:
  • Expecting error message on success
  • Ignoring units in output
  • Confusing NaN with valid numbers
4. Identify the error in this Arduino code snippet for reading DHT sensor data:
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if (humidity == NULL || temperature == NULL) {
  Serial.println("Failed to read from DHT sensor!");
}
medium
A. Using NULL to check float values is incorrect
B. Missing semicolon after readTemperature()
C. Serial.println syntax is wrong
D. Variables humidity and temperature should be int

Solution

  1. Step 1: Understand data types and checks

    readHumidity() and readTemperature() return float, not pointers, so NULL is invalid.
  2. Step 2: Correct way to check errors

    Use isnan() function to check if readings failed (NaN means not a number).
  3. Final Answer:

    Using NULL to check float values is incorrect -> Option A
  4. Quick Check:

    Check floats with isnan(), not NULL [OK]
Hint: Use isnan() to check float errors, not NULL [OK]
Common Mistakes:
  • Checking floats against NULL
  • Assuming int type for sensor data
  • Syntax errors in Serial print
5. You want to display temperature in Fahrenheit using DHT22 sensor readings in Arduino. Which code snippet correctly converts Celsius to Fahrenheit after reading temperature?
float tempC = dht.readTemperature();
float tempF = ?;
Serial.print("Temperature: ");
Serial.print(tempF);
Serial.println(" *F");
hard
A. tempF = tempC * 5 / 9 + 32;
B. tempF = tempC * 9 / 5 + 32;
C. tempF = tempC / 9 * 5 + 32;
D. tempF = (tempC + 32) * 9 / 5;

Solution

  1. Step 1: Recall Celsius to Fahrenheit formula

    The correct formula is Fahrenheit = Celsius * 9/5 + 32.
  2. Step 2: Apply formula in code

    Assign tempF = tempC * 9 / 5 + 32; to convert temperature correctly.
  3. Final Answer:

    tempF = tempC * 9 / 5 + 32; -> Option B
  4. Quick Check:

    Celsius to Fahrenheit = C * 9/5 + 32 [OK]
Hint: Use C * 9/5 + 32 to convert Celsius to Fahrenheit [OK]
Common Mistakes:
  • Mixing multiplication and division order
  • Adding 32 before multiplying
  • Using wrong formula
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard