0
0
Arduinoprogramming~20 mins

RF communication with nRF24L01 in Arduino - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
nRF24L01 RF Communication Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
What is the output of this nRF24L01 initialization code?
Consider the following Arduino code snippet initializing the nRF24L01 module. What will be printed on the Serial Monitor?
Arduino
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(9, 10); // CE, CSN pins

void setup() {
  Serial.begin(9600);
  if (!radio.begin()) {
    Serial.println("Radio hardware not responding!");
  } else {
    Serial.println("Radio initialized successfully.");
  }
}

void loop() {}
ARadio initialized successfully.
BRadio hardware not responding!
CCompilation error due to missing library.
DNo output, Serial Monitor is empty.
Attempts:
2 left
💡 Hint
The radio.begin() returns true if the module is connected and working.
Predict Output
intermediate
2:00remaining
What will be the output when sending data with nRF24L01?
Given the following Arduino code snippet that attempts to send a message using nRF24L01, what will be printed on the Serial Monitor?
Arduino
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(9, 10);
const byte address[6] = "00001";

void setup() {
  Serial.begin(9600);
  radio.begin();
  radio.openWritingPipe(address);
  radio.stopListening();
  const char text[] = "Hello";
  bool report = radio.write(text, sizeof(text));
  if (report) {
    Serial.println("Data sent successfully.");
  } else {
    Serial.println("Data send failed.");
  }
}

void loop() {}
ANo output because Serial.begin is missing.
BData send failed.
CCompilation error due to wrong write argument.
DData sent successfully.
Attempts:
2 left
💡 Hint
The radio.write() returns true if data is sent successfully.
🔧 Debug
advanced
2:30remaining
Why does this nRF24L01 receiver code never print received data?
Examine the following Arduino receiver code using nRF24L01. It never prints any received data. What is the most likely cause?
Arduino
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(9, 10);
const byte address[6] = "00001";

void setup() {
  Serial.begin(9600);
  radio.begin();
  radio.openReadingPipe(1, address);
  radio.startListening();
}

void loop() {
  if (radio.available()) {
    char text[32] = {0};
    radio.read(text, sizeof(text));
    Serial.print("Received: ");
    Serial.println(text);
  }
}
AThe radio.startListening() is missing, so it never listens.
BThe address used for reading pipe does not match the sender's writing pipe address.
CThe radio.read() function is called with wrong argument type causing runtime error.
DThe Serial.begin() baud rate is too low to print data.
Attempts:
2 left
💡 Hint
The receiver must listen on the same address the sender writes to.
📝 Syntax
advanced
1:30remaining
Which option causes a compilation error in this nRF24L01 code snippet?
Look at these four code snippets initializing the nRF24L01 radio. Which one will cause a compilation error?
ARF24 radio(9, 10); // CE=9, CSN=10
BRF24 radio(9, 10, 11); // Three pins provided
CRF24 radio(9); // Only one pin provided
DRF24 radio(9, 10); radio.begin();
Attempts:
2 left
💡 Hint
Check the RF24 constructor parameters in the library documentation.
🚀 Application
expert
3:00remaining
How many bytes are transmitted when sending this data with nRF24L01?
Consider this Arduino code sending an integer array via nRF24L01. How many bytes are actually sent over the air?
Arduino
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(9, 10);
const byte address[6] = "00001";

void setup() {
  Serial.begin(9600);
  radio.begin();
  radio.openWritingPipe(address);
  radio.stopListening();
  int data[3] = {100, 200, 300};
  radio.write(&data, sizeof(data));
  Serial.print("Bytes sent: ");
  Serial.println(sizeof(data));
}

void loop() {}
A6 bytes
B12 bytes
C3 bytes
DDepends on the radio payload size setting
Attempts:
2 left
💡 Hint
An int in Arduino Uno is 2 bytes. Multiply by array length.