Receiving commands over Bluetooth lets your Arduino talk wirelessly to other devices. This helps control your project without wires.
Receiving commands over Bluetooth in Arduino
void setup() {
Serial.begin(9600); // Start serial communication
bluetoothSerial.begin(9600); // Start Bluetooth serial
}
void loop() {
if (bluetoothSerial.available()) {
char command = bluetoothSerial.read();
// Use the command
}
}Use bluetoothSerial.available() to check if data is ready to read.
Use bluetoothSerial.read() to get one byte (character) from Bluetooth.
if (bluetoothSerial.available()) { char c = bluetoothSerial.read(); Serial.print("Received: "); Serial.println(c); }
String command = ""; while (bluetoothSerial.available()) { command += (char)bluetoothSerial.read(); } Serial.println(command);
This program listens for commands over Bluetooth. When it gets '1', it turns the built-in LED on. When it gets '0', it turns the LED off. It also prints the commands and actions to the Serial Monitor.
#include <SoftwareSerial.h> SoftwareSerial bluetoothSerial(10, 11); // RX, TX pins void setup() { Serial.begin(9600); bluetoothSerial.begin(9600); Serial.println("Bluetooth Command Receiver Ready"); pinMode(LED_BUILTIN, OUTPUT); } void loop() { if (bluetoothSerial.available()) { char command = bluetoothSerial.read(); Serial.print("Command received: "); Serial.println(command); // Example: turn on LED if command is '1' if (command == '1') { digitalWrite(LED_BUILTIN, HIGH); Serial.println("LED ON"); } else if (command == '0') { digitalWrite(LED_BUILTIN, LOW); Serial.println("LED OFF"); } } }
Make sure your Bluetooth module is connected to the correct Arduino pins (here pins 10 and 11).
Set the same baud rate on both Arduino and Bluetooth device (usually 9600).
Use SoftwareSerial library if your Arduino has only one hardware serial port.
Bluetooth commands let you control Arduino wirelessly.
Use available() and read() to get data from Bluetooth.
Test commands by printing them to Serial Monitor and acting on them.
Practice
available() function do when receiving Bluetooth commands on Arduino?Solution
Step 1: Understand the role of
Theavailable()available()function returns the number of bytes available to read from the Bluetooth serial buffer.Step 2: Identify its use in receiving commands
It is used to check if any data has arrived and is ready to be read, so the program knows when to read incoming commands.Final Answer:
It checks if there is data ready to be read from the Bluetooth module. -> Option BQuick Check:
available()checks data presence [OK]
- Thinking available() sends data instead of checking
- Confusing available() with read()
- Assuming available() resets connection
Solution
Step 1: Identify the function to read data
Theread()function reads one byte (character) from the Bluetooth serial buffer.Step 2: Confirm correct syntax
AssigningBluetooth.read()to a char variable correctly stores the incoming character.Final Answer:
char command = Bluetooth.read(); -> Option AQuick Check:
Use read() to get one char [OK]
- Using available() to read data instead of read()
- Using write() which sends data, not reads
- Calling begin() which initializes, not reads
if (Bluetooth.available()) {
char cmd = Bluetooth.read();
if (cmd == 'L') {
Serial.println("LED ON");
} else {
Serial.println("UNKNOWN COMMAND");
}
}Solution
Step 1: Check if data is available
The code first checks if Bluetooth data is available, which it is since 'L' is sent.Step 2: Read and compare the character
The character 'L' is read and compared to 'L', which matches, so it prints "LED ON".Final Answer:
LED ON -> Option AQuick Check:
Received 'L' triggers "LED ON" print [OK]
- Assuming it prints the character itself
- Ignoring the if condition and expecting UNKNOWN COMMAND
- Thinking no output if Bluetooth.available() is true
if (Bluetooth.available > 0) {
char cmd = Bluetooth.read();
Serial.println(cmd);
}Solution
Step 1: Check usage of available()
The code usesBluetooth.availablewithout parentheses, but it is a function and must be called asBluetooth.available().Step 2: Verify other parts
Bluetooth.read()is correct to read a char, andSerial.println()can print characters, so no errors there.Final Answer:
Bluetooth.available should be called as a function with parentheses. -> Option DQuick Check:
available() needs parentheses [OK]
- Forgetting parentheses on available()
- Thinking read() is readChar()
- Believing Serial.println() can't print chars
if (Bluetooth.available()) {
char cmd = Bluetooth.read();
switch (cmd) {
case '1':
digitalWrite(LED_PIN, HIGH);
Serial.println("LED ON");
break;
case '0':
digitalWrite(LED_PIN, LOW);
Serial.println("LED OFF");
break;
default:
Serial.println("Invalid command");
}
}Solution
Step 1: Analyze command reading and control
The code reads a character from Bluetooth and uses a switch to check if it is '1' or '0'.Step 2: Verify LED control and feedback
It sets the LED pin HIGH or LOW accordingly and prints the status, which matches the requirement.Final Answer:
This code correctly reads commands and controls the LED accordingly. -> Option CQuick Check:
Switch-case handles commands and controls LED [OK]
- Thinking if-else is required instead of switch
- Believing digitalWrite can't be used with Bluetooth input
- Confusing data types returned by Bluetooth.read()
Ready to prove it?
Pass the test and this pattern moves unknown
