Сопряжение двух HC05 - почему так медленно?

Allrond
Offline
Зарегистрирован: 12.06.2019

Вобщем пытаюсь наладить связь между двумя ARDUINO UNO R3 с помощью двух Bluetooth модулей HC-05. Модули "прошил" и теперь они видят друг-друга. Сопряжение проверяю следующим образом: каждая из плат принимает от собеседника число, вычитает из него единицу и отправляет собеседнику. Проблема в том - что между итерациями проходит около секунды, а задержку я ставлю около 50 микросекунд. В чем моя ошибка?
Код Arduino с модулем Bluetooth HC-05(SLAVE):

void setup()
{
    Serial.begin(9600);
}
void loop()
{
    if (Serial.available())
    {
        String bytes = "";
        int answer =0;
        bytes = Serial.readString();
        answer = bytes.toInt()-1;
        delayMicroseconds(50);
        Serial.print(String(answer));
    }
}

Код Arduino с модулем Bluetooth HC-05(MASTER):

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
const byte BTpin =  7;
boolean BTconnected = false;
void setup()
{
    pinMode(BTpin, INPUT);
    Serial.begin(9600);
    lcd.begin();
    lcd.backlight();
    lcd.clear();
    lcd.print("Start");
    while (!BTconnected)
    {
        if ( digitalRead(BTpin)==HIGH) { BTconnected = true;};
    }
    lcd.clear();
    lcd.print("Head Connected");
    Serial.print(500);
}

void loop()
{
    if (Serial.available())
    {
        String bytes = "";
        int answer =0;
        bytes = Serial.readString();
        answer = bytes.toInt()-1;
        delayMicroseconds(50);
        Serial.print(String(answer));
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print(String(answer));
        lcd.setCursor(0, 1);
        lcd.print(bytes);
    }
}

 

Allrond
Offline
Зарегистрирован: 12.06.2019

P.S. Оба модуля прошиты на 9600 бит/c

Morroc
Offline
Зарегистрирован: 24.10.2016

У вас сейчас при чтении строки оно ждет таймаут, он как раз по умолчанию 1 сек вроде.

Цитата:
Serial.readString() reads characters from the serial buffer into a string. The function terminates if it times out (see setTimeout()).

Попробуйте Serial.readStringUntil('\n') и Serial.println или другой способ передачи.

Allrond
Offline
Зарегистрирован: 12.06.2019

Спасибо, сейчас попробую.

Allrond
Offline
Зарегистрирован: 12.06.2019

Все заработало, спасибо большое!