0
0
Arduinoprogramming~20 mins

Using multiple libraries together in Arduino - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Multi-Library Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of combined sensor readings
What is the output of this Arduino sketch that uses two libraries to read temperature and humidity?
Arduino
#include <DHT.h>
#include <Wire.h>

#define DHTPIN 2
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

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

void loop() {
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  Serial.print("Humidity: ");
  Serial.print(h);
  Serial.print(" %");
  Serial.print(", Temperature: ");
  Serial.print(t);
  Serial.println(" *C");
  delay(2000);
}
AHumidity: 45.0 % , Temperature: 23.0 *C
BHumidity: nan % , Temperature: nan *C
CHumidity: 100 % , Temperature: 0 *C
DCompilation error due to missing Wire.begin()
Attempts:
2 left
💡 Hint
Check if the sensor is properly initialized and if the readings are valid.
🧠 Conceptual
intermediate
1:30remaining
Reason for including multiple libraries
Why do Arduino sketches often include multiple libraries like and together?
ATo make the sketch run faster by default
BTo reduce the size of the compiled program
CTo avoid using any hardware pins
DTo handle different hardware communication protocols simultaneously
Attempts:
2 left
💡 Hint
Think about what each library controls in hardware communication.
🔧 Debug
advanced
2:00remaining
Identify the error when using two libraries
What error will this Arduino code produce when compiling?
Arduino
#include <Wire.h>
#include <SPI.h>

void setup() {
  Wire.begin();
  SPI.begin();
}

void loop() {
  Wire.beginTransmission(0x3C);
  SPI.transfer(0xFF);
  Wire.endTransmission();
  delay(1000);
}
AError: SPI.transfer() called outside SPI transaction
BError: Wire.beginTransmission() missing address
CNo error, code compiles and runs correctly
DError: Cannot use Wire and SPI in the same sketch
Attempts:
2 left
💡 Hint
Check the correct usage of SPI.transfer() in SPI communication.
📝 Syntax
advanced
1:00remaining
Correct syntax for using two libraries
Which option shows the correct way to initialize both Wire and SPI libraries in Arduino?
AWire.begin(); SPI.begin();
BWire.start(); SPI.start();
CWire.init(); SPI.init();
DWire.beginTransmission(); SPI.beginTransmission();
Attempts:
2 left
💡 Hint
Check the official Arduino library functions for starting communication.
🚀 Application
expert
3:00remaining
Combining sensor data with display using multiple libraries
You want to read temperature from a DHT sensor and display it on an OLED screen using Wire and Adafruit_SSD1306 libraries. Which code snippet correctly initializes and uses both libraries together?
A
#include &lt;Wire.h&gt;
#include &lt;Adafruit_SSD1306.h&gt;
#include &lt;DHT.h&gt;
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define DHTPIN 2
#define DHTTYPE DHT11
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &amp;SPI);
DHT dht(DHTPIN, DHTTYPE);
void setup() {
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  dht.begin();
}
void loop() {
  float temp = dht.readTemperature();
  display.clearDisplay();
  display.setTextSize(2);
  display.setCursor(0,0);
  display.print("Temp: ");
  display.print(temp);
  display.print(" C");
  display.display();
  delay(2000);
}
B
#include &lt;Wire.h&gt;
#include &lt;Adafruit_SSD1306.h&gt;
#include &lt;DHT.h&gt;
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define DHTPIN 2
#define DHTTYPE DHT11
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT);
DHT dht(DHTPIN, DHTTYPE);
void setup() {
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  dht.begin();
}
void loop() {
  float temp = dht.readTemperature();
  display.clearDisplay();
  display.setTextSize(2);
  display.setCursor(0,0);
  display.print("Temp: ");
  display.print(temp);
  display.print(" C");
  display.display();
  delay(2000);
}
C
#include &lt;Wire.h&gt;
#include &lt;Adafruit_SSD1306.h&gt;
#include &lt;DHT.h&gt;
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define DHTPIN 2
#define DHTTYPE DHT11
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &amp;Wire);
DHT dht(DHTPIN, DHTTYPE);
void setup() {
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  dht.begin();
}
void loop() {
  float temp = dht.readTemperature();
  display.clearDisplay();
  display.setTextSize(2);
  display.setCursor(0,0);
  display.print("Temp: ");
  display.print(temp);
  display.print(" C");
  display.display();
  delay(2000);
}
D
#include &lt;Wire.h&gt;
#include &lt;Adafruit_SSD1306.h&gt;
#include &lt;DHT.h&gt;
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define DHTPIN 2
#define DHTTYPE DHT11
Adafruit_SSD1306 display;
DHT dht(DHTPIN, DHTTYPE);
void setup() {
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  dht.begin();
}
void loop() {
  float temp = dht.readTemperature();
  display.clearDisplay();
  display.setTextSize(2);
  display.setCursor(0,0);
  display.print("Temp: ");
  display.print(temp);
  display.print(" C");
  display.display();
  delay(2000);
}
Attempts:
2 left
💡 Hint
Check how the display object is constructed and which communication protocol it uses.