|
|
遇到个棘手的问题,一块ardunio lenonardo接一个hc05(蓝牙主机),一块ardunio uno接一个hc05(从机),然后分别通过代码设置成主机从机后,确实是配对了(因为指示灯每秒快闪2下,手机蓝牙收索不到附近的未配对设备),但是发现通过蓝牙调用serial.read()这个函数没有读取到数据,serial.print确实又发送了数据(通过手机调试的时候确实接收到了数据),这个是什么问题,难道说蓝牙不支持serial.read()这个函数么
现在两个蓝牙设备都只能发数据,都不能接收数据
谁遇到过类似的问题
贴上我对蓝牙主机的设置:
#define AT 2
#define LED 13
void setup()
{
pinMode(LED,OUTPUT);
pinMode(AT,OUTPUT);
digitalWrite(AT,HIGH);
Serial.begin(38400);//这里应该和你的模块通信波特率一致
delay(100);
Serial.println("AT");
delay(100);
Serial.println("AT+NAME=Bluetooth-master");//命名模块名
delay(100);
Serial.println("AT+ROLE=1");//设置主从模式:0从机,1主机
delay(100);
Serial.println("AT+PSWD=1234");//设置配对密码,如1234
delay(100);
Serial.println("AT+UART=9600,0,0");//设置波特率9600,停止位1,校验位无
delay(100);
Serial.println("AT+RMAAD");//清空配对列表
delay(100);
// Serial.println("AT+BIND=20:13:02:20:02:40");
// delay(100);
// Serial.println("AT+CMODE=0");
// delay(100);
}
void loop()
{
digitalWrite(LED, HIGH);
delay(500);
digitalWrite(LED, LOW);
delay(500);
}
再贴上蓝牙从机的设置:
#define AT 2
#define LED 13
void setup()
{
pinMode(LED,OUTPUT);
pinMode(AT,OUTPUT);
digitalWrite(AT,HIGH);
Serial.begin(38400);//这里应该和你的模块通信波特率一致
delay(100);
Serial.println("AT");
delay(100);
Serial.println("AT+NAME=Bluetooth-slave");//命名模块名
delay(100);
Serial.println("AT+ROLE=0");//设置主从模式:0从机,1主机
delay(100);
Serial.println("AT+PSWD=1234");//设置配对密码,如1234
delay(100);
Serial.println("AT+UART=9600,0,0");//设置波特率9600,停止位1,校验位无
delay(100);
Serial.println("AT+RMAAD");//清空配对列表
}
void loop()
{
digitalWrite(LED, HIGH);
delay(500);
digitalWrite(LED, LOW);
delay(500);
}
大家帮忙看一下,我的直观感觉是问题应该出在蓝牙身上,因为ardunio的库函数出问题的几率比较小
|
|