mySerial.available() возвращает 0

Я использую bluetooth hc-05, arduino uno и приложение ap, созданное mit app inventor.Проблема в том, что myserial.available возвращает 0, и, следовательно, его цикл не выполняется. Я подключил четыре контакта модуля hc-05. Rx к контакту 10, Tx к контакту 11, VCC к 5V, GND к GND. В приложении показано, что мобильный телефон подключен к HC-05, однако условие не выполнено.

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); 

String name="";
void setup() {
  // Откройте последовательную связь и дождитесь открытия порта:
  Serial.begin(9600);
  while (!Serial) {
    ; // дождитесь подключения последовательного порта. Требуется только для родного USB-порта
  }


  Serial.println("Goodnight moon!");

  // установите скорость передачи данных для порта SoftwareSerial
  mySerial.begin(9600);
  Serial.println("Hello, world?");
}

void loop() { // run over and over
  if (mySerial.available()) {
    Serial.println("Bluetooth is connected");
    name=mySerial.read();
    Serial.println(name);
  }
  else
 {
   Serial.println("Bluetooth is not connected");
  }
}

, 👍1

Обсуждение

Как вы узнаете, получаете ли вы что-нибудь от HC05? Может быть, mySerial.available() возвращает 0, потому что там ничего нет. Есть ли у вас способ проверить, есть ли какие-либо серийные данные? Возможно, светодиод (и резистор), подключенный между контактом TX и +5 HC05. И еще одна моя проблема заключается в том, что HC05-это устройство 3,3 В, и выход TX может быть недостаточно высоким., @Rudy

Вы уверены, что HC-05 подключен к телефону? А вы проверили, что HC-05 действительно работает с последовательным интерфейсом на скорости 9600 бод?, @chrisl

Когда что-то не работает, желательно разбить вещи на более мелкие кусочки, чтобы определить, где может быть неисправность. Попробуйте сделать так, чтобы выход HC05 подавался обратно на вход HC05. Так что, когда вы наберете что-то на телефоне, оно будет отправлено обратно на мобильный телефон. Удаление Arduino из уравнения поможет вам убедиться, что конец HC05 работает., @Rudy


2 ответа


2

Я нашел свое решение. На самом деле я подключал Rx к Rx и Tx к Tx.

,

-2
name=mySerial.read();// false
name=String(mySerial.read()); // true синтаксис
,

Serial.read() возвращает 1 (один) символ., @Juraj