蓝牙hc05 ardunio uno的一个奇怪问题
遇到个棘手的问题,一块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的库函数出问题的几率比较小
是arduino默认串口的问题,你用软件自定义串口代替默认的连接PC的串口应该就没有问题了。
因为默认串口已经和PC连接,所以只接受PC的数据。 设置那些AT指令的时候,不用键入回车换行符吗?是不是这里的问题 不知道怎么弄?? 应该是上面说的原因:
是arduino默认串口的问题,你用软件自定义串口代替默认的连接PC的串口应该就没有问题了。
因为默认串口已经和PC连接,所以只接受PC的数据。
可以用软串口连接蓝牙,话说昨天调蓝牙到半夜 我也遇到蓝牙配置的问题了,不知所措。通过电脑串口软件配置
页:
[1]