在这里的新手,请阅读有关HC-05的所有问题,但在这种情况下并不能帮助我。我正在Arduino代码中控制HC-05的AT命令,以便可以按我的Master蓝牙/ Arduino端上的按钮,该按钮将请求最近的INQ命令的从设备响应其地址,例如。 + INQ:2016:6:61785。主设备将其读取为字符串,冒号被逗号替换,并与其余命令配对发送给主设备BT模块,以将两个设备配对。 这一切都很好,但是这里的问题是,地址后的确认“确定”直接出现在地址之后,该地址然后在我的字符串中而不是地址中出现,而不是总是出现在大多数情况下,因此在每个时间都是命中注定的不时地。我怎么看不到“ OK”呢?出于某种原因而无法正确解决这个问题。使用Arduino板时,它的工作情况要好一些,好像地址和“ ok”之间有一点延迟,因此字符串首先获取了地址,但是对于我自己的Atmel328p原型,“ ok”有时到达得太快。 这是我用于AT命令的代码。
//*****Setup Routine for Slave device*******
ButtonState = digitalRead(Button); // read AT Setup Mode button
if (ButtonState == LOW) {
digitalWrite(SetLED, HIGH); // Switch Setup LED ON during Setup
digitalWrite(HC_05_SETUPKEY, HIGH); // Set AT command mode when powering up
delay(500);
digitalWrite(HC_05_PWR1, LOW); // Power VCC
digitalWrite(HC_06_PWR2, LOW); // Power VCC
wdt_reset();
delay(1000);
digitalWrite(HC_05_PWR1, HIGH); // Power VCC
digitalWrite(HC_06_PWR2, HIGH); // Power VCC
wdt_reset();
delay(1000);
wdt_reset();
delay(1000);
wdt_reset();
BTSerial.println("AT");
delay(500);
wdt_reset();
BTSerial.println("AT+RMAAD"); // Delete previously paired device
delay(500);
wdt_reset();
BTSerial.println("AT+INIT"); // Initialize Bluetooth Module before Inquiry
delay(1000);
wdt_reset();
delay(1000);
wdt_reset();
BTSerial.println("AT+INQ"); // Inquire Nearest Receiver
// delay(11)
// Here is where the "ok" creeps in too quickly sometimes
String BTName = BTSerial.readString(); // Read Inquired Data from Bluetooth
Module
String a = (BTName.substring(5, 9) + ","); // De construct and add commas to
String
String b = (BTName.substring(10, 11) + ",");
String c = BTName.substring(12, 17);
delay(1000);
wdt_reset();
String g = ("AT+BIND=");
String h = g + a + b + c; // Construct String command
BTSerial.println(h); // Bind the two Bluetooth Modules
delay(1000);
wdt_reset();
String i = ("AT+LINK=");
String j = i + a + b + c; // Construct string command
BTSerial.println(j); // Link the two Bluetooth Modules
delay(1000);
wdt_reset();
digitalWrite(HC_05_SETUPKEY, LOW); // Cycle the Bluetooth Module Power
delay(10);
digitalWrite(HC_05_PWR1, LOW); // Power VCC
digitalWrite(HC_06_PWR2, LOW); // Power VCC
delay(1000);
wdt_reset();
delay(1000);
wdt_reset();
digitalWrite(HC_05_PWR1, HIGH); // Power VCC
digitalWrite(HC_06_PWR2, HIGH); // Power VCC
digitalWrite(SetLED, LOW);
// wdt_reset();
}