一个esp32作为服务端,用蓝牙控制另一个esp32作为客户端灯代码,arduino
时间: 2023-08-27 08:27:51 浏览: 151
带有蓝牙的Arduino可以控制LED!-项目开发
好的,以下是基于Arduino的ESP32蓝牙控制代码,可以通过蓝牙控制另一个ESP32板子上的灯,并且一个ESP32作为服务端,另一个ESP32作为客户端:
服务端代码:
```
#include <BluetoothSerial.h>
#define LED_PIN 2
BluetoothSerial SerialBT;
void setup() {
Serial.begin(9600);
pinMode(LED_PIN, OUTPUT);
SerialBT.begin("ESP32_LED_Control_Server");
Serial.println("Bluetooth device is ready to pair.");
}
void loop() {
if (SerialBT.hasClient()) {
Serial.println("Client connected.");
SerialBT.println("Welcome to ESP32 LED Control.");
while (SerialBT.connected()) {
if (SerialBT.available()) {
char command = SerialBT.read();
if (command == '1') {
digitalWrite(LED_PIN, HIGH);
SerialBT.println("LED turned on.");
}
else if (command == '0') {
digitalWrite(LED_PIN, LOW);
SerialBT.println("LED turned off.");
}
else {
SerialBT.println("Invalid command.");
}
}
}
SerialBT.stop();
Serial.println("Client disconnected.");
}
}
```
客户端代码:
```
#include <BluetoothSerial.h>
BluetoothSerial SerialBT;
void setup() {
Serial.begin(9600);
SerialBT.begin("ESP32_LED_Control_Client");
Serial.println("Bluetooth device is ready to pair.");
}
void loop() {
if (!SerialBT.connected()) {
SerialBT.connect("ESP32_LED_Control_Server");
}
if (SerialBT.available()) {
char response = SerialBT.read();
Serial.println(response);
}
delay(100);
}
```
这段代码实现了以下功能:
- 通过蓝牙串口通信控制LED灯的开关。
- 一个ESP32作为服务端,等待客户端连接。
- 当客户端连接后,将LED灯的状态发送给客户端。
- 当接收到字符 '1' 时,将LED灯的状态设置为HIGH,并向客户端发送消息 "LED turned on."。
- 当接收到字符 '0' 时,将LED灯的状态设置为LOW,并向客户端发送消息 "LED turned off."。
- 当接收到其他字符时,向客户端发送消息 "Invalid command."。
可以通过安装蓝牙串口调试工具来测试该代码,例如在Android系统中安装“Serial Bluetooth Terminal”应用程序。先运行服务端代码,然后运行客户端代码,连接到服务端后,可以通过发送字符 '1' 或 '0' 来控制LED灯的开关,同时客户端会接收到相应的消息。
阅读全文