Bird
Raised Fist0
Arduinoprogramming~30 mins

Using sensor libraries in Arduino - Mini Project: Build & Apply

Choose your learning style10 modes available
Using sensor libraries
📖 Scenario: You have a temperature sensor connected to your Arduino. You want to read the temperature using a sensor library and display it on the Serial Monitor.
🎯 Goal: Learn how to include a sensor library, initialize the sensor, read temperature data, and print it to the Serial Monitor.
📋 What You'll Learn
Include the sensor library DHT.h
Create a DHT sensor object with pin 2 and type DHT11
Initialize the sensor in setup()
Read temperature in Celsius using sensor.readTemperature()
Print the temperature value to the Serial Monitor
💡 Why This Matters
🌍 Real World
Reading sensor data is common in home automation, weather stations, and robotics.
💼 Career
Understanding how to use sensor libraries is important for embedded systems and IoT developer roles.
Progress0 / 4 steps
1
Include the sensor library and create sensor object
Write #include <DHT.h> at the top. Then create a DHT object called sensor using pin 2 and type DHT11.
Arduino
Hint

Use #include <DHT.h> to add the library. Then create the sensor object with DHT sensor(2, DHT11);.

2
Initialize Serial and sensor in setup
Write void setup() function. Inside it, start Serial communication at 9600 baud with Serial.begin(9600);. Then initialize the sensor with sensor.begin();.
Arduino
Hint

Use void setup() { Serial.begin(9600); sensor.begin(); } to prepare the sensor and Serial Monitor.

3
Read temperature in loop
Write void loop() function. Inside it, read temperature in Celsius using float temp = sensor.readTemperature();. Then add a delay of 2000 milliseconds with delay(2000);.
Arduino
Hint

Use float temp = sensor.readTemperature(); to get temperature and delay(2000); to wait 2 seconds.

4
Print temperature to Serial Monitor
Inside loop(), after reading temperature, print it using Serial.print("Temperature: "); and Serial.println(temp);.
Arduino
Hint

Use Serial.print("Temperature: "); and Serial.println(temp); to show the temperature value.

Practice

(1/5)
1. What is the first step when using a sensor library in an Arduino sketch?
easy
A. Include the sensor library at the top of the sketch
B. Read sensor values in the loop() function
C. Create a sensor object inside the loop()
D. Start the sensor in the loop() function

Solution

  1. Step 1: Understand the library usage

    Before using a sensor, you must include its library so Arduino knows how to communicate with it.
  2. Step 2: Identify correct placement

    Including the library is done at the top of the sketch, before setup() and loop().
  3. Final Answer:

    Include the sensor library at the top of the sketch -> Option A
  4. Quick Check:

    Include library first = A [OK]
Hint: Always include libraries before setup() [OK]
Common Mistakes:
  • Trying to create sensor object before including library
  • Starting sensor in loop() instead of setup()
  • Reading sensor before initializing it
2. Which of the following is the correct way to create a sensor object for a DHT sensor using its library?
easy
A. DHT sensor = DHT(2);
B. DHT sensor = new DHT(2, DHT11);
C. DHT sensor(2, DHT11);
D. DHT sensor = DHT11(2);

Solution

  1. Step 1: Recall object creation syntax in Arduino C++

    Objects are created by calling the constructor directly, like ClassName objectName(parameters); without '=' or 'new' keyword.
  2. Step 2: Match correct syntax for DHT library

    The DHT library uses: DHT sensor(pin, type); so DHT sensor(2, DHT11); matches this exactly.
  3. Final Answer:

    DHT sensor(2, DHT11); -> Option C
  4. Quick Check:

    Object creation = ClassName object(params); [OK]
Hint: Create objects without '=' or 'new' in Arduino [OK]
Common Mistakes:
  • Using '=' sign when creating objects
  • Using 'new' keyword which is not typical in Arduino sketches
  • Confusing sensor type and pin order
3. Given the code below, what will be printed if the sensor reading fails?
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

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

void loop() {
  float h = dht.readHumidity();
  if (isnan(h)) {
    Serial.println("Failed to read humidity!");
  } else {
    Serial.print("Humidity: ");
    Serial.println(h);
  }
  delay(2000);
}
medium
A. Failed to read humidity!
B. Humidity: 0.00
C. Humidity: NaN
D. No output

Solution

  1. Step 1: Understand the isnan() check

    The code checks if the humidity reading is 'NaN' (not a number), which means the sensor failed to read.
  2. Step 2: Determine output when reading fails

    If isnan(h) is true, the code prints "Failed to read humidity!" to Serial.
  3. Final Answer:

    Failed to read humidity! -> Option A
  4. Quick Check:

    isnan true prints error message [OK]
Hint: Check isnan() to detect sensor read failure [OK]
Common Mistakes:
  • Assuming sensor returns 0 on failure
  • Printing raw value without checking for NaN
  • Not calling dht.begin() in setup()
4. Identify the error in this Arduino sketch snippet using a sensor library:
#include <DHT.h>
DHT dht(2, DHT11);

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

void loop() {
  dht.begin();
  float t = dht.readTemperature();
  Serial.println(t);
  delay(1000);
}
medium
A. readTemperature() returns int, not float
B. dht.begin() should be called in setup(), not loop()
C. Missing #define for sensor pin
D. Serial.begin() should be called in loop()

Solution

  1. Step 1: Locate sensor initialization

    dht.begin() initializes the sensor and should be called once in setup() to avoid repeated initialization.
  2. Step 2: Identify why calling dht.begin() in loop() is wrong

    Calling dht.begin() repeatedly in loop() can cause sensor communication issues and slow down the program.
  3. Final Answer:

    dht.begin() should be called in setup(), not loop() -> Option B
  4. Quick Check:

    Initialize sensor once in setup() [OK]
Hint: Initialize sensors once in setup() [OK]
Common Mistakes:
  • Calling sensor start functions repeatedly in loop()
  • Confusing Serial.begin() placement
  • Assuming readTemperature() returns int
5. You want to read temperature and humidity from a DHT11 sensor and turn on an LED if humidity is above 70%. Which code snippet correctly uses the sensor library and controls the LED?
hard
A.
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT11
#define LEDPIN 13
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  dht.begin();
  pinMode(LEDPIN, OUTPUT);
}

void loop() {
  float h = dht.readHumidity();
  if (!isnan(h) || h > 70) {
    digitalWrite(LEDPIN, HIGH);
  } else {
    digitalWrite(LEDPIN, LOW);
  }
  delay(2000);
}
B.
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT11
#define LEDPIN 13
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  pinMode(LEDPIN, OUTPUT);
}

void loop() {
  float h = dht.readHumidity();
  if (h > 70) {
    digitalWrite(LEDPIN, HIGH);
  } else {
    digitalWrite(LEDPIN, LOW);
  }
  delay(2000);
}
C.
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT11
#define LEDPIN 13
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  dht.begin();
  pinMode(LEDPIN, OUTPUT);
}

void loop() {
  float h = dht.readHumidity();
  if (h < 70) {
    digitalWrite(LEDPIN, HIGH);
  } else {
    digitalWrite(LEDPIN, LOW);
  }
  delay(2000);
}
D.
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT11
#define LEDPIN 13
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  dht.begin();
  pinMode(LEDPIN, OUTPUT);
}

void loop() {
  float h = dht.readHumidity();
  if (!isnan(h) && h > 70) {
    digitalWrite(LEDPIN, HIGH);
  } else {
    digitalWrite(LEDPIN, LOW);
  }
  delay(2000);
}

Solution

  1. Step 1: Check sensor initialization and pin setup

    #include <DHT.h>
    #define DHTPIN 2
    #define DHTTYPE DHT11
    #define LEDPIN 13
    DHT dht(DHTPIN, DHTTYPE);
    
    void setup() {
      Serial.begin(9600);
      dht.begin();
      pinMode(LEDPIN, OUTPUT);
    }
    
    void loop() {
      float h = dht.readHumidity();
      if (!isnan(h) && h > 70) {
        digitalWrite(LEDPIN, HIGH);
      } else {
        digitalWrite(LEDPIN, LOW);
      }
      delay(2000);
    }
    
    correctly calls dht.begin() in setup() and sets LED pin as output.
  2. Step 2: Verify humidity check and LED control logic

    #include <DHT.h>
    #define DHTPIN 2
    #define DHTTYPE DHT11
    #define LEDPIN 13
    DHT dht(DHTPIN, DHTTYPE);
    
    void setup() {
      Serial.begin(9600);
      dht.begin();
      pinMode(LEDPIN, OUTPUT);
    }
    
    void loop() {
      float h = dht.readHumidity();
      if (!isnan(h) && h > 70) {
        digitalWrite(LEDPIN, HIGH);
      } else {
        digitalWrite(LEDPIN, LOW);
      }
      delay(2000);
    }
    
    checks if humidity is not NaN and greater than 70 before turning LED on, which prevents errors from failed reads.
  3. Final Answer:

    The code snippet with !isnan(h) check and && h > 70 -> Option D
  4. Quick Check:

    Initialize sensor + check isnan + control LED = A [OK]
Hint: Always check isnan() before using sensor values [OK]
Common Mistakes:
  • Not calling dht.begin() in setup()
  • Missing isnan() check causing wrong LED behavior
  • Using || instead of && in humidity condition
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