0

我使用 SoftwareSerial.h 库编写了以下代码

void loop(){
//BT LED READ
    if(BTSerial.available())
    {
        int c = BTSerial.read();
        Serial.println(c);
        Serial.print("\n");

        if (c == 1)
            digitalWrite(ledpin, HIGH);

        else if (c == 0)
          digitalWrite(ledpin, LOW);

  //BUTTON PRESS CODE
        buttonState = digitalRead(inputPin);
        if(buttonState == HIGH)
        {
            digitalWrite(outputLed, HIGH);
            BTSerial.print(22);
        }
        else
        {
            digitalWrite(outputLed, LOW);
        } 
    }

//Serial.println(digitalRead(state));

}

为了配合我的代码,我在 Xamarin Studio 中编写了一个移动应用程序。我的代码所做的是,它接受来自应用程序的调用(0 或 1 字节),使其打开 LED。

其次,我想要完成但又苦苦挣扎的是,我希望 Arduino 通知我的应用程序(或写......我真的不确定这个库允许我做什么,因为我很难找到一些详细的文档)当我的面包板上的一个按钮被按下时——按下时它也会打开一个 LED。

我意识到,如果我将按钮按下的代码封装在BTSerial.available()其中,它就不起作用,这意味着它不会向我的应用程序发送任何数据,当我按下按钮时 LED 也不会亮起。- 虽然它仍然接受发送给它的参数。

反之亦然,如果我不将我的按钮代码封装在BTSerial.available()我的手机中,我可以将数据写入我的手机,但我的手机无法将数据发送到 BT 设备。

这里发生了什么,为什么我不能同时访问这两个功能,什么是潜在的修复?

4

1 回答 1

0

我认为您不清楚 BLE 特性的属性以及 HM-10 的功能。它的方式本质上是一个 UART 桥接器,从微控制器到 RX 的所有内容都将作为特征通知发送,而来自特征写入的所有内容都将传递到 TX,然后再传递给微控制器。因此,在您的情况下,您必须将按钮按下部分从 BTSerial.available() 部分中取出,以便您拥有的两个功能是独立的。你必须打开你的应用程序的通知。

于 2019-05-04T14:08:42.760 回答