汇集网友智慧,解决技术难题
LED 手机 蓝牙 调试 串口调试 发送
赞0
评论
2025-10-23
2025-10-22
Jzynhx 发表于 2025-10-22 14:13
// 引入ESP32蓝牙串口库 #include <BluetoothSerial.h> // 定义LED引脚(默认使用ESP32板载LED,引脚为GPIO2,低电平点亮) #define LED_PIN 2 // 创建蓝牙串口对象 BluetoothSerial SerialBT; // 存储手机发送的指令(初始化为空字符串) String receivedData = ""; void setup() { // 1. 初始化串口(用于VSCode串口监视器调试,波特率115200) Serial.begin(115200); // 等待串口监视器连接(仅调试用,可不加) while (!Serial) { delay(100); } // 2. 初始化LED引脚为输出模式 pinMode(LED_PIN, OUTPUT); // 初始状态:LED熄灭(GPIO2高电平,因板载LED为共阳设计) digitalWrite(LED_PIN, HIGH); // 3. 初始化蓝牙(设备名称为“ESP32_LED_Control”,手机搜索时可见) SerialBT.begin("ESP32_LED_Control"); // 打印蓝牙初始化结果(串口监视器查看) Serial.println("蓝牙已开启,可在手机搜索并连接:ESP32_LED_Control"); Serial.println("连接后发送 'ON' 点亮LED,发送 'OFF' 熄灭LED"); } void loop() { // 4. 检查是否有蓝牙数据从手机发送过来 if (SerialBT.available() > 0) { // 读取1字节数据(支持多字符指令,如“ON”“OFF”) char c = SerialBT.read(); // 若读取到换行符(手机APP发送时需勾选“发送新行”),说明指令完整 if (c == '\n') { // 打印接收到的指令(调试用) Serial.print("接收到指令:"); Serial.println(receivedData); // 5. 解析指令并控制LED if (receivedData.equalsIgnoreCase("ON")) { // 忽略大小写,支持“on”“On” digitalWrite(LED_PIN, LOW); // 点亮LED(GPIO2低电平) SerialBT.println("LED已点亮"); // 向手机回传状态 Serial.println("LED已点亮"); // 向串口监视器回传状态 } else if (receivedData.equalsIgnoreCase("OFF")) { digitalWrite(LED_PIN, HIGH); // 熄灭LED(GPIO2高电平) SerialBT.println("LED已熄灭"); // 向手机回传状态 Serial.println("LED已熄灭"); // 向串口监视器回传状态 } else { // 指令无效时,向手机提示正确格式 SerialBT.println("指令无效!请发送 'ON' 或 'OFF'"); Serial.println("指令无效!请发送 'ON' 或 'OFF'"); } // 清空指令缓存,准备接收下一条指令 receivedData = ""; } else { // 未读到换行符时,将字符追加到指令缓存中 receivedData += c; } } // 主循环空闲,可添加其他逻辑(如LED闪烁检测) delay(10); }
点击图片添加到编辑器内容中
点击文件名将附件添加到文章中
提交
tyw
319个答案
天意无罪
287个答案
xch
240个答案
jjjyufan
209个答案
coody
203个答案
LcwSwust
172个答案
chunyang
135个答案
地瓜patch
128个答案
赞0
评论
2025-10-23
赞0
评论
2025-10-22
赞0
评论
2025-10-22
赞0
代码如上,图片好像看不到
评论
2025-10-22
赞0
评论
2025-10-22
您需要登录后才可以回复 登录 | 注册