无法将数据从 Arduino 蓝牙板获取到 PC



我正在尝试将数据从我的PC传输到Arduino板。我能够看到Arduino使用Tera术语发送到PC的内容,但我没有从PC到Arduino获取任何数据。我尝试更换引脚和所有东西(甚至测试另一个蓝牙板)。我使用的是Arduino Mega 2560。

这是代码:

#include <AFMotor.h>
#include <NewPing.h>
#include <SoftwareSerial.h>
#define LED 52
#define RxD 17 
#define TxD 14 
SoftwareSerial blueToothSerial(RxD,TxD);
void setup() {
  blueToothSerial.begin(9600);
  blueToothSerial.println("Bluetooth On please press 1 or 0 blink LED ...");
  pinMode(LED, OUTPUT);
  pinMode(RxD, INPUT);
  pinMode(TxD, OUTPUT);
}
byte BluetoothData;
void loop()
{
  if (blueToothSerial.available())
  {
    BluetoothData = blueToothSerial.read();
    if(BluetoothData=='1'){ // if number 1 pressed...
      digitalWrite(LED, 1);
      blueToothSerial.println("LED  On D13 ON ! ");
    }
    if (BluetoothData=='0'){ // if number 0 pressed...
      digitalWrite(LED, 0);
      blueToothSerial.println("LED  On D13 Off ! ");
    }
  }
  delay(100); // prepare for next data...
}

根据软件串行库的文档,Arduino Mega 2560上的引脚17不支持更改中断,因此它不适用于您的蓝牙设备。而是选择文档中列出的 Rx 引脚(例如 0、11、12、13、14、15)。

此外,为了使Arduino接收蓝牙数据,应使用SoftwareSerial侦听方法。尝试修改您的代码,使其使用此方法,例如

void loop()
{
  blueToothSerial.listen();
  if (blueToothSerial.available() > 0)
  {
    BluetoothData = blueToothSerial.read();
    if(BluetoothData=='1'){   // if number 1 pressed ....
      digitalWrite(LED, 1);
      blueToothSerial.println("LED  On D13 ON ! ");
    }
    if (BluetoothData=='0'){// if number 0 pressed ....
      digitalWrite(LED, 0);
      blueToothSerial.println("LED  On D13 Off ! ");
    }
  }
}

请注意,当使用 listen() 时,我认为没有必要调用 delay()。

最新更新