Hallo,
ich bin noch neu hier im Forum, also bitte drauf aufmerksam machen, wenn ich Etwas falsch mache.
Ich habe ein kleines Projekt angefangen, in dem ich Werte von meinem Handy (per Bluetooth, App: Serial Bluetooth Terminal) an das HC-05 Modul sende und der Arduino Mega diese auswertet und eine LED ein bzw. aus schalten. Ich habe alles bisher hinbekommen. Die Werte die ich per Handy an das Modul schicke werden im Seriellen Monitor am Computer angezeigt. Allerdings versuche ich nun, dass der Arduino eine LED ein und aus schaltet wenn ich "off" bzw. "on" sende. Allerdings werden diese Werte nicht richtig ausgelesen und die beiden If Schleifen werden meiner Meinung nach übersprungen. Setze ich allerdings den String btData schon von Anfang an auf "off", oder "on" werden die if-Schleifen geschaltet.
Danke für die schnelle Antwort, leider bin ich neu in dem Bereich und weiß leider nicht wie man dies macht. Im seriellen Monitor habe ich übrigens CR+NL aktiv, beim Senden auch. Wenn du also recht hast, wie lässt sich dies beheben, aber danke nochmals.
Ich habe es jetzt hinbekommen, das Problem lag an der App, die ich benutzt habe. Dort war Newline auf Cr+LF gestellt. Ich habe dies auf Nul gestellt und nun geht es. Was bedeutet dies eigentlich und warum hat es vorher nicht funktioniert?
Da wurde eben mehr gelesen als "on" , genaugenommen war es "on\r\n" (mit den Zeichen für das Zeilenende).
Für meinen Geschmack war der Fehler in deinem
String ist nur sinnvoll, wenn es funktioniert. Bei allen Problemen kommt man ohne String-Objekte besser zurecht.
Eine Möglichkeit wäre, statt "on" / "off" einfach "0" oder "1" zu senden und das mit btSerial.parseInt()
abzufragen. Da werden eventuelle Zeileende-Zeichen ignoriert.
Ist es Absicht, dass jede Sekunde (delay(1000);) an btSerial der Text gesendet wird? Oder wäre es besser, ein richtig empfangenes Kommando genau einmal zu bestätigen?
Vielen Dank für deine Erklärung. Die hat mir wirklich sehr weitergeholfen. Den Befehl mit "delay(1000)" habe ich geschrieben, damit mein "Terminal" auf dem Handy nicht mit Nachrichten zuläuft (tut es zwar trotzdem, versuche es aber zu ändern).