首页 > 解决方案 > 如何使 BLE 服务器仅在状态发生变化时通知?

问题描述

我正在使用 Arduino IDE 在我的 esp32 上使用 ble,并试图做到这一点,因此当有人打开 LED 时,esp32 会通过“ON”或“OFF”通知客户。目前使用我的代码,每次循环时都会发送更新,但我只想在引脚 15 的值发生变化时通知。

我想我需要探索当事情发生变化时想要发送 serial.print 的人的相同概念。

这是我的相关代码。

if (deviceConnected) {
    if(digitalRead(15)==LOW){
      pCharacteristic->setValue("ON");

    }
    else{
      pCharacteristic->setValue("OFF");

    }
    pCharacteristic->notify();

我找到了这个示例代码,但不确定它是否有用或如何将它结合到我的

int old_something;

void loop ()
{
 int something = get_my_data ();
 if (something != old_something)
   Serial.print (something);  // display if it changed
 old_something = something;
 }

标签: c++arduinobluetooth-lowenergyarduino-ideesp32

解决方案


弄清楚了。现在它在这里工作

//Way at the Top
boolean oldState = LOW;

//Down in Loop
 boolean newState = digitalRead(15);

  if (deviceConnected) {
    if (newState != oldState) {
      if (newState == LOW) {
        pCharacteristic->setValue("ON");

      }
      else {
        pCharacteristic->setValue("OFF");

      }
      pCharacteristic->notify();
    };

    oldState = newState;

推荐阅读