Bird
0
0
Arduinoprogramming~20 mins

Humidity and temperature (DHT11/DHT22) in Arduino - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
DHT Sensor Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Reading temperature from DHT11 sensor
What will be the output on the Serial Monitor when this Arduino code runs with a DHT11 sensor connected correctly?
Arduino
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  dht.begin();
}

void loop() {
  float temp = dht.readTemperature();
  if (isnan(temp)) {
    Serial.println("Failed to read from DHT sensor!");
  } else {
    Serial.print("Temperature: ");
    Serial.print(temp);
    Serial.println(" *C");
  }
  delay(2000);
}
AFailed to read from DHT sensor!
BTemperature: 23.00 *C
CTemperature: 23 *F
DError: DHT library not found
Attempts:
2 left
💡 Hint
The code reads temperature in Celsius and prints it if the sensor reading is valid.
Predict Output
intermediate
2:00remaining
Humidity reading with DHT22 sensor
What will be printed on the Serial Monitor if the humidity reading is 55.5% and the sensor works correctly?
Arduino
#include <DHT.h>
#define DHTPIN 4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  dht.begin();
}

void loop() {
  float humidity = dht.readHumidity();
  if (isnan(humidity)) {
    Serial.println("Error reading humidity");
  } else {
    Serial.print("Humidity: ");
    Serial.print(humidity);
    Serial.println(" %");
  }
  delay(1500);
}
AHumidity: 55.50 %
BHumidity: 55.5
CError reading humidity
DHumidity: 55 %
Attempts:
2 left
💡 Hint
The code prints humidity with two decimals and a percent sign if reading is valid.
🔧 Debug
advanced
2:00remaining
Identify the error in DHT sensor initialization
What error will this Arduino code produce when compiling or running?
Arduino
#include <DHT.h>
#define DHTPIN 5
#define DHTTYPE DHT11
DHT dht(DHTPIN, "11");

void setup() {
  Serial.begin(9600);
  dht.begin();
}

void loop() {
  float t = dht.readTemperature();
  Serial.println(t);
  delay(1000);
}
ARuns correctly and prints temperature
BRuntime error: sensor not found
CCompilation error: invalid argument for DHT constructor
DCompilation error: missing semicolon
Attempts:
2 left
💡 Hint
Check the second argument passed to the DHT constructor.
📝 Syntax
advanced
2:00remaining
Find the syntax error in this DHT sensor reading code
Which option correctly fixes the syntax error in this Arduino code snippet?
Arduino
#include <DHT.h>
#define DHTPIN 3
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  dht.begin();
}

void loop() {
  float h = dht.readHumidity()
  if (isnan(h)) {
    Serial.println("Error");
  } else {
    Serial.println(h);
  }
  delay(2000);
}
AAdd a semicolon after 'float h = dht.readHumidity()'
BChange 'isnan(h)' to 'isNan(h)'
CRemove the parentheses from 'dht.readHumidity'
DReplace 'Serial.println(h);' with 'Serial.print(h);'
Attempts:
2 left
💡 Hint
Look carefully at the end of the line where the variable h is assigned.
🚀 Application
expert
3:00remaining
Calculate heat index from DHT22 readings
Given temperature in Celsius and humidity from a DHT22 sensor, which code snippet correctly calculates and prints the heat index in Celsius?
Arduino
#include <DHT.h>
#define DHTPIN 6
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  dht.begin();
}

void loop() {
  float t = dht.readTemperature();
  float h = dht.readHumidity();
  if (isnan(t) || isnan(h)) {
    Serial.println("Sensor error");
    delay(2000);
    return;
  }
  // Calculate heat index here
  float hi;
  // ???
  Serial.print("Heat index: ");
  Serial.print(hi);
  Serial.println(" *C");
  delay(3000);
}
Ahi = t * h / 100;
Bhi = 0.5 * (t + 61.0 + ((t-68.0)*1.2) + (h*0.094)); hi = (hi + t) / 2.0;
Chi = t + (0.33 * h) - (0.7 * windSpeed) - 4.0; // windSpeed undefined
Dhi = -8.784695 + 1.61139411*t + 2.338549*h - 0.14611605*t*h - 0.012308094*t*t - 0.016424828*h*h + 0.002211732*t*t*h + 0.00072546*t*h*h - 0.000003582*t*t*h*h;
Attempts:
2 left
💡 Hint
Use the full formula for heat index in Celsius involving temperature and humidity.