我想将数据从Javascript应用程序发送到Flora板,通过蓝牙在LED上显示颜色

时间:2017-04-23 17:56:32

标签: javascript arduino bluetooth-lowenergy

我正在使用JavaScript应用程序通过蓝牙向Flora板发送数字,具体取决于数字的范围,LED显示某种颜色。该应用程序能够连接到电路板,但它无法点亮LED。该号码保存在上一页的会话存储中。

初始变量是:

var app = {}; // Object holding the functions and variables
var BluefruitUART = null; // Object holding the BLE device
var BLEDevice = {}; // Object holding Bluefruit BLE device information
BLEDevice.name = 'Adafruit Bluefruit LE'; // Bluefruit name
BLEDevice.services = ['6e400001-b5a3-f393-e0a9-e50e24dcca9e']; // Bluefruit services UUID
BLEDevice.writeCharacteristicUUID = '6e400002-b5a3-f393-e0a9-e50e24dcca9e'; // Bluefruit writeCharacteristic UUID

然后将消息发送到Arduino的函数是:

app.sendMessage = function(message, int index) // Send a message to Bluefruit device
{
   var data = evothings.ble.toUtf8(message);
   BluefruitUART.writeCharacteristic(
        BLEDevice.writeCharacteristicUUID,
        data,
        function() {
          console.log('Sent: ' + message);
        },
        function(errorString) {
          console.log('BLE writeCharacteristic error: ' + errorString);
        }
    )
};

将消息发送到Arduino的按钮是:

<button class="green wide big" onclick="app.sendMessage('on', sessionStorage.AQI)">ON</button>

Arduino IDE上的代码是:

void setup() {
  pinMode(LEDpin, OUTPUT);
  Serial.begin(9600);
  setupBluefruit();
}

void loop() {
  String message = "";
  while (ble.available()) {
    int c = ble.read();
    Serial.print((char)c);
    message.concat((char)c);
    if (message == "on, int") {
      message = "";
      Serial.println("\nTurning LED ON");
      digitalWrite(LEDpin, HIGH);
    }
    else if (message == "off") {
      message = "";
      Serial.println("\nTurning LED OFF");
     digitalWrite(LEDpin, LOW);
    }
    else if (message.length() > 3) {
      message = "";
    }
  }
}

1 个答案:

答案 0 :(得分:0)

这一行:

if (message == "on, int") {

将消息字符串与文字"on, int"进行比较。但是,在实际消息中,您将发送一些实际数字,而不是字符串"int"。要检查message是否以"on"开头,您可以使用startsWith功能,如下所示:

if (message.startsWith("on")) {

运气好的话,这会让LED开启。

接下来就是实际传递一些数字。在sendMessage函数中,您实际上从未使用index参数,因此您需要对其进行更改。然后在Arduino代码中,您可以解析字符串中的数字,如下所示:

if (message.startsWith("on")) {
    int index = message.substring(3).toInt();

将切断字符串的前3个字符("on ")并将余数转换为int。然后您可以使用它来设置LED颜色。有关Arduino字符串处理函数的更多信息,请参阅here