在使用 ArduinoBLE(蓝牙低能耗)时,要确保使用正确的 API 来检查值是否已更新和是否已订阅。在 Arduino nano 33 IoT 上,需要使用 BLECharacteristic::written() 来检查值是否已更新,使用 BLECharacteristic::subscribed() 来检查是否已订阅。
以下是使用示例:
#include
// 声明 BLE 服务和特征
BLEService service("uuid-of-service");
BLECharacteristic characteristic("uuid-of-characteristic", BLEWrite | BLENotify);
void setup() {
// 初始化 BLE
if (!BLE.begin()) {
while (1);
}
// 设置服务和特征
BLE.setLocalName("nano-33-iot");
BLE.setAdvertisedService(service);
service.addCharacteristic(characteristic);
BLE.addService(service);
// 开始广播
BLE.advertise();
}
void loop() {
// 检查是否已连接
BLEDevice central = BLE.central();
if (central) {
// 接收来自中心设备的通知
if (characteristic.subscribed()) {
characteristic.setValue("Hello, central!");
characteristic.notify();
}
// 检查是否有新值写入
if (characteristic.written()) {
String value = characteristic.value();
// 处理来自中心设备的新值
}
}
}