Arduino: Verwenden von Serial und Software Serial mit Bluetooth-Modul

Mein Ziel ist es, mithilfe von Arduino die Kommunikation zwischen einem PC und einem Android-Gerät mithilfe eines HC-05-Bluetooth-Moduls einzurichten.

Ich benutze die USB-Kommunikation zwischen dem PC und dem Arduino (Serial Monitor) und eine SoftwareSerial, um eine Verbindung zum HC-05 herzustellen.

Mein Problem ist, dass die Kommunikation von BT zum PC gut funktioniert, aber anders als erwartet nicht funktioniert. Beim Senden vom PC an BT werden alle gesendeten Zeichen vom BT-Gerät nur empfangen, wenn ich den seriellen Monitor auf dem PC schließe oder wenn ich den Arduino zurücksetze.

Ich habe ein Problem mit dem BT-Modul oder der Android-Anwendung ausgeschlossen, denn wenn ich in Arduino einen "ECHO" -Code implementiere (in Android schreiben und in Android senden), funktioniert alles einwandfrei.

Mit dem unten angegebenen Arduino-Code lautet das erwartete Verhalten: Arduino-Reset-> Hallo Wort gesendet, serieller Monitor geöffnet-> nichts passiert, Zeichen auf seriellem Monitor geschrieben-> Zeichen auf BT empfangen, Zeichen auf BT geschrieben-> Zeichen auf seriellem Monitor empfangen , Serieller Monitor geschlossen -> nichts passiert.

Das eigentliche Verhalten ist: Arduino Reset-> Hallo Wort gesendet, Serieller Monitor geöffnet-> 2 Hallo Wort auf BT und 1 ("Gute Nacht") auf PC, Zeichen auf seriellen Monitor geschrieben-> nichts, Zeichen auf BT geschrieben-> Zeichen empfangen auf seriellem Monitor, serieller Monitor geschlossen -> frühere geschriebene Zeichen auf seriellem Monitor empfangen + Hello Word.

Wie kann ich dieses Problem beheben?

Code:

#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX
int a=0;
char c;
char d;
void setup() {
  Serial.begin(9600);
  Serial.println("Goodnight moon!");
  mySerial.begin(9600);
  mySerial.println("Hello, world?");
}
void loop() {
  delay(10);
  if (Serial.available()) {
    c=Serial.read();
    delay(10);
    Serial.write(c);
  }
  delay(10);
  if (mySerial.available()) {
    d=mySerial.read();
    delay(10);
    mySerial.write(d);

  }
}

Antworten auf die Frage(6)

Ihre Antwort auf die Frage