我正在尝试将数据从我的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()。