我正在尝试将数据从我的PC传输到Arduino板。我能够看到Arduino使用Tera Term向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...
}
答案 0 :(得分:0)
根据SoftwareSerial库的此文档,Arduino Mega 2560上的引脚17不支持更改中断,因此它不适用于您的Blutooth设备。而是选择文档中列出的Rx引脚(例如0,11,12,13,14,15)。
同样,对于Arduino接收蓝牙数据,应使用SoftwareSerial listen方法。尝试修改代码,以便它使用此方法,例如
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()。