Hi!
Und zwar brauch ich mal eure Hilfe. Ich experimentiere zurzeit mit einen Arduino Nano, einem Bluetooth Modul und hätte eine Frage zu meinem Sketch. Sobald ich mein Handy über eine App mit dem Bluetooth Modul verbinde dann erscheint direkt im Seriellem Monitor die Meldung “ LEDPIN---2---LoW “. dabei habe ich noch keinen Wert eingegeben. Ich bin davon ausgegangen, dass die Meldung erst erscheint wenn der BTwert 2 ist und nicht schon vorher.
Daher die Frage : Wie Kriege ich das hin, dass Serial.println("LEDPIN---2---LoW"); oder Serial.println("LEDPIN---1---HiGH"); auch nur dann erschein wenn ich die Werte 1 oder 2 eingebe und nicht schon vorher?
Vielen Dank im Voraus
PS: Falls es jemand ausprobieren möchte
int ledPin=6;
int BTwert=0;
void setup(){
Serial.begin(115200);
pinMode(ledPin,OUTPUT);
}
void loop(){
if(Serial.available()>0){
BTwert = Serial.read();
}
if(BTwert=='1'){
digitalWrite(ledPin,HIGH);
Serial.println("LEDPIN---1---HiGH");
}
if (BTwert=='2'){
digitalWrite(ledPin,LOW);
Serial.println("LEDPIN---2---LoW");
}
}
Trotzdem muß dieses Zeichen im Datenstrom vorgekommen sein, damit die Ausgabe gesendet wird.
Denke, die per BT übertragenen Daten enthalten eine Menge mehr, als nur die von Dir gedachten 'Befehle' der Zeichen 1 und 2.
Wenn Du Dir die Zeichen anzeigen lässt, Die empfangen wurden?
Sinnvoll wäre hier sowohl als Zeichen (zumindest bei ASCII>32) + als HEX-Wert.
Das ist völlig ok hier.
Die impliziten Casts machen genau das erwünschte.
Das Problem dürfte sein, dass das BT Modul eine lustige Meldung von sich gibt, wenn eine Verbindung aufgebaut wird.
In der Meldung wird sich, unter Anderem, eine einzige 2 befinden.
In C sind char und int ziemlich gleich, bis auf die Anzahl Bits. Insofern kann ein Vergleich mit '1' durchaus sinnvoll sein.
Mich hätte auch interessiert, was beim Verbinden über die BT Schnittstelle an den Arduino geschickt wird. Eine Verbindung mit USB sollte jedenfalls richtig funktionieren, da werden keine zusätzlichen Zeichen übertragen.
Beim Ändern des Codes: es sollte unbedingt vermieden werden, daß die "LEDPIN..." Meldungen bei jedem Durchlauf von loop() geschickt werden. Am einfachsten: BTWert nach dem Senden löschen.
2tens: Wenn ich das Sketch um “ if (BTwert=='3')“ erweitere kommt auch die Meldung im Seriellem Monitor raus. Dabei ist der Wert 3 nicht in der App vorhanden. Ein Bild dazu habe ich mit hochgeladen.
3tens: Ich habe auch ein Bild von der App hochgeladen die ich nur zur Probe mit App Inventor geschrieben habe. Hier sieht man die gesendeten Zahlen.
4tens: Falls es hilfreich ist habe ich ein Bild vom Bluetooth Modul hochgeladen.
PS: ich werde eure Tipps ausprobieren und berichten.
Ich kenne den Nano nicht un hab auch noch kein BT Modul verwendet. Gehe aber mal davon aus das es ebenso wie beim UNO ist. Die Serielle Schnittstelle ist mit dem UART verbunden und geht letztlich über Pin 0 und 1.
So kann das meiner Meinung nach nicht gehen. Aus Deinem Screenshort habe ich entnommen das das BT Modul nicht initialisiert ist. Wie kommst Du darauf das es über Seriell angesprichen wird. Wo ist es angeschlossen ?
Beim Uno würde ein BT serielles Modul an die SoftSeriell angeschlossen
Such dir mal irgendwo ein Beispiel zu der Verwendung des BT.
Ich habe deinen Sketch mal probiert an einem Nano ,das geht. Ich habe aber eine fertige App aus dem Store benuzt. Vieleicht ist in deiner App was nicht io.
Rudik:
... Falls es jemand ausprobieren möchte ...
Es wäre schön, wenn Du den Code in Deinem Ursprungsposting noch in Code-Tags fassen würdest. Wenn ich in zehn Jahren mal nachsehe und Dein Posting finde, will ich nicht "... was für ein Blödmann war denn das ..." denken müssen.