这个错误是因为代码中没有正确定义 Blinker 的工作模式(BLE、WiFi 或 MQTT)。虽然你使用了 #define BLINKER_BLE
,但可能由于库版本或格式问题未被正确识别。以下是修正后的代码:
修正版代码(明确指定 BLE 模式)
#include <Blinker.h>
// ====== 1. 强制设置蓝牙BLE模式 ======
#define BLINKER_PRINT Serial // 可选:开启调试输出
#define BLINKER_BLE // 明确使用BLE模式
// ====== 2. 硬件配置 ======
const int LED_PIN = GPIO_NUM_2; // LED控制引脚
// ====== 3. Blinker组件定义 ======
BlinkerButton btnLed("btn-led"); // APP上的按钮键名
// ====== 4. 回调函数:处理APP按钮指令 ======
void ledControlCallback(const String &state) {
if (state == BLINKER_CMD_ON) {
digitalWrite(LED_PIN, HIGH);
Blinker.print("LED_ON");
}
else if (state == BLINKER_CMD_OFF) {
digitalWrite(LED_PIN, LOW);
Blinker.print("LED_OFF");
}
}
// ====== 5. 初始化设置 ======
void setup() {
Serial.begin(115200); // 初始化串口(调试用)
pinMode(LED_PIN, OUTPUT); // 设置LED引脚为输出
digitalWrite(LED_PIN, LOW); // 默认关闭LED
Blinker.begin(); // 初始化Blinker(自动生成设备名)
btnLed.attach(ledControlCallback); // 绑定按钮回调函数
}
// ====== 6.主循环 ======
void loop() {
Blinker.run(); // 保持蓝牙连接
}
关键修改说明
强制定义
BLINKER_BLE
#define BLINKER_BLE
必须放在所有include之后,确保库能正确识别模式。
检查库版本兼容性
- 如果仍报错,可能是旧版库的语法问题。建议更新到最新版 Blinker库:
在Arduino IDE中:工具 -> 管理库 -> 搜索 "Blinker" -> 更新至最新版
- 如果仍报错,可能是旧版库的语法问题。建议更新到最新版 Blinker库:
备用方案:显式调用BLE初始化
如果依然失败,尝试替换Blinker.begin()
:Blinker.begin(BLINKER_BLE); // 强制指定BLE模式初始化
其他可能的问题
- 开发板支持:确保你的ESP32/ESP8266已正确安装蓝牙支持包。
- 手机APP配置:在Blinker App中添加设备时选择 BLE模式。
如果仍有问题,请提供具体硬件型号和完整的错误日志!
内容由零声教学AI助手提供,问题来源于学员提问