Bluetooth 无法从Arduino蓝牙板向PC获取数据

Bluetooth 无法从Arduino蓝牙板向PC获取数据,bluetooth,arduino,pc,Bluetooth,Arduino,Pc,我正试图将数据从电脑传输到Arduino板。我可以用Tera术语看到Arduino发送到PC的内容,但我没有从PC到Arduino的任何数据。我尝试过更换引脚和其他一切(甚至测试另一块蓝牙板)。我用的是Arduino Mega 2560 代码如下: #include <AFMotor.h> #include <NewPing.h> #include <SoftwareSerial.h> #define LED 52 #define RxD 17 #def

我正试图将数据从电脑传输到Arduino板。我可以用Tera术语看到Arduino发送到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...
}
#包括
#包括
#包括
#定义LED 52
#定义RxD 17
#定义TxD 14
软件系列蓝牙系列(RxD、TxD);
无效设置(){
blueToothSerial.begin(9600);
blueToothSerial.println(“蓝牙开启,请按1或0闪烁LED…”);
引脚模式(LED,输出);
引脚模式(RxD,输入);
引脚模式(TxD,输出);
}
字节蓝牙数据;
void循环()
{
if(blueToothSerial.available())
{
BluetoothData=blueToothSerial.read();
如果(BluetoothData=='1'){//如果按了数字1。。。
数码写入(LED,1);
blueToothSerial.println(“D13上的LED灯亮起!”);
}
如果(BluetoothData=='0'){//如果按了数字0。。。
数字写入(LED,0);
blueToothSerial.println(“D13上的LED熄灭!”);
}
}
延迟(100);//准备下一个数据。。。
}

根据该库的文档,Arduino Mega 2560上的插脚17不支持更改中断,因此无法与Blutooth设备配合使用。而是选择文档中列出的Rx引脚(例如0、11、12、13、14、15)

对于Arduino接收蓝牙数据,还应使用软件串行方法。尝试修改代码,使其使用此方法,例如

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()

我会尝试,但我不认为它会解决它,因为我试图附加到14和15也。我不是在写序列号,因为我确实看到Tera术语中的blueToothSerial.println,但我无法获得Arduino中的击键或数据。好吧,试试看,因为Arduino Mega 2560上的插脚17绝对不应该在您的场景中使用。它不起作用,看起来只是一种方式。可能是吗?从Arduino到Tera Term,它工作得非常完美,但当我尝试从Tera Term到Arduino获取数据时,它没有得到任何数据。我认为它只有一种工作方式,因为您的代码没有指示Arduino监听蓝牙信号。这应该可以解释为什么它只有一种工作方式,即从arduino到PC。请参阅我的更新答案。它不工作。我认为listen是一个阻塞函数,但它会立即返回。您知道如何排除故障以确定问题的根源吗?