Bluetooth 无法从Arduino蓝牙板向PC获取数据
我正试图将数据从电脑传输到Arduino板。我可以用Tera术语看到Arduino发送到PC的内容,但我没有从PC到Arduino的任何数据。我尝试过更换引脚和其他一切(甚至测试另一块蓝牙板)。我用的是Arduino Mega 2560 代码如下: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
#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是一个阻塞函数,但它会立即返回。您知道如何排除故障以确定问题的根源吗?