HC-05 Arduino AT автоматизированная команда INQ
Новичок здесь, прочитайте все вопросы о 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();
}