HC-05 Bluetooth Serial Иногда получаются неправильные значения - PullRequest
0 голосов
/ 05 июня 2018

Я подключился к HC-05 с Arduino UNO Я отправляю целочисленное значение Пример:

Send           Receive
10             10
11             0
15             15
18             2541

Иногда получаю правильные данные, а иногда неверные данные.

Global:

//Bluetooth
#define BLUETOOTH_SPEED 9600
SoftwareSerial bluetooth(10, 11);

Настройка:

bluetooth.begin(BLUETOOTH_SPEED);

Цикл:

if (bluetooth.available() > 0) {
    integerValue = 0;
    while (bluetooth.available() > 0) {
      byte incoming = bluetooth.read();
      //Serial.println(incoming);
      if (incoming >= '0' && incoming <= '9') {
        integerValue = (integerValue * 10) + (incoming - '0');
        //delay(5);
      }
    }
    bluetooth.flush();
    Serial.println(integerValue);

1 Ответ

0 голосов
/ 06 июня 2018

SoftwareSerial на Arduino - это полудуплексный тип связи.Возможно, у вас есть выделенные контакты для приема и передачи, но один и тот же таймер используется для передачи и приема.Поэтому вы не можете одновременно передавать и получать работу над объектом SoftwareSerial.

Эта часть вашего кода заставляет меня думать, что вы передаете что-то внутри какой-то другой части кода.

bluetooth.flush();

Если да, вам придется реализовать некоторую форму управления потоком, чтобы гарантировать, что вы не передаете и не получаете что-то одновременно на объекте SoftwareSerial.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...