HC-05 Bluetooth - Eingaben am Handy werden nicht umgesetzt

Liebes Forum, ich möchte gerne über Handy-App (Terminal) und Bluetooth, eine LED ein- und ausschalten können. Leider bisher ohne Erfolg - die Eingaben am Handy werden einfach nicht umgesetzt. Nun hoffe ich auf Eure Hilfe...

Folgende Hard- und Software verwende ich (in Klammer: habe ich darüber hinaus noch getestet):

  • Arduino Nano Every
  • HC-05
  • Apps: Arduino Bluetooth Controller, (Bluetooth Terminal, Serial Bluetooth Terminal)

Der sketch sieht wie folgt aus:

[code]
# include <SoftwareSerial.h>

SoftwareSerial BTSerial(10, 11);

int led = 12;




void setup() {

  BTSerial.begin(9600);
  pinMode(led, OUTPUT);

}

void loop() {

  int led = 12;

  if (Serial.available() > 0)
  {
    char data = Serial.read();
    switch (data)
    {
      case 'a': digitalWrite(led, HIGH); break;
      case 'z': digitalWrite(led, LOW); break;
      default : break;
    }
    Serial.println(data);
  }
  delay(50);

}
[/code]

Der Aufbau sieht folgendermaßen aus:

Was habe ich bisher ausprobiert, um das Problem zu lösen:

  1. HC-05 in AT-command-Modus versetzt und verschiedene AT-Befehle ausprobiert (baud-rate und cmode auslesen/ändern etc.). Dies funktioniert.

  2. BTSerial.begin(9600) im sketch gegen Serial.begin(9600) getauscht und LED-Funktion über seriellen Monitor getestet. Funktioniert.

  3. Handy lässt sich mit HC-05 verbinden. Zumindest denke ich das an der geänderten Blinkfolge erkennen zu können.

  4. Baud-Rate und Cmode geändert.

  5. Im AT-Modus kommt es zu Problemen, wenn die LED noch angeschlossen ist.

Hat jemand eine Idee woran es liegen könnte? Vielen Dank schon mal für Eure Antworten!
Grüße Daniel

Hier noch eine Foto vom Aufbau:

Und so sieht es in der App, nach Eingabe aus. Nur leider tut sich an der LED nichts.

Hier definierst Du BTSerial

Und hier fischt Du im trüben:

Danke für Deine Antwort!
Du meinst weil ich char data nirgends initialisiert habe?
Das hab ich jetzt nachgeholt. Ist das so richtig?

[code]
# include <SoftwareSerial.h>

SoftwareSerial BTSerial(10, 11);

int led = 12;

char data = 'z';


void setup() {

  BTSerial.begin(9600);
  pinMode(led, OUTPUT);

}

void loop() {

  int led = 12;

  if (Serial.available() > 0)
  {
    data = Serial.read();
    switch (data)
    {
      case 'a': digitalWrite(led, HIGH); break;
      case 'z': digitalWrite(led, LOW); break;
      default : break;
    }
    Serial.println(data);
  }
  delay(50);

}
[/code]

Ne.
Weil Du nicht BTSerial abfragst, sondern Serial.

Darf eigentlich die USB-Verbindung zum PC bestehen bleiben (damit keine andere Stromquelle benötigt wird), wenn über Handy-App gesteuert werden soll oder ist dann der Serial-Port doppelt belegt?

Ja.
Und kann zur Kontrolle benutzt werden, wenn man das richtig macht.

#include <SoftwareSerial.h>

SoftwareSerial BTSerial(10, 11);

int led = 12;




void setup() {

  BTSerial.begin(9600);
  Serial.begin(9600);
  pinMode(led, OUTPUT);

}

void loop() {

  int led = 12;

  if (BTSerial.available() > 0)
  {
    char data = BTSerial.read();
    switch (data)
    {
      case 'a': digitalWrite(led, HIGH); break;
      case 'z': digitalWrite(led, LOW); break;
      default : break;
    }
    Serial.println(data);
  }
  delay(50);

}

Oh Mann...wie konnte ich das nur übersehen?! :joy:
Danke!

Dies ist mein erster Forums-Eintrag. Ich hab jetzt hier das Flag gesetzt. Muss ich noch was machen, um den Beitrag abzuschließen?

image

Nö. Ausser merken, das es manchmal einfach ist eine Lösung zu finden :wink:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.