Новичок здесь, прочитайте все вопросы о HC-05, но в этом случае мне это не поможет. Я управляю AT-командами моего HC-05 в своем коде Arduino, так что я могу нажать кнопку на моей главной стороне Bluetooth / Arduino Master, которая запросит ближайший подчиненный с командой INQ, например, ответить на его адрес. + INQ: 2016: 6: 61785. Это записывается мастером в строку, двоеточия заменяются запятыми и отправляются в модуль Master BT с остальными командами для сопряжения двух устройств.
Это все работает очень хорошо, но проблема здесь в том, что подтверждение «хорошо» после того, как адрес приходит сразу после адреса, который затем появляется в моей строке вместо адреса, не всегда, но в большинстве случаев, так что это удар и пропустить каждый сейчас и тогда. Как я могу не читать "хорошо".? Просто не могу понять это по какой-то причине. С платой Arduino она работает немного лучше, как если бы между адресом и «ок» была небольшая задержка, поэтому строка сначала захватывает адрес, но с моим отдельным прототипом Atmel328p «ок» иногда приходит слишком быстро.
Вот фрагмент кода, который я использую для команд 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();
}