Hi
Was macht das Beispiel des Datenblatt?
Vermutlich sendet die von Dir benutzte App diesen Zeichensalat, weil 'Sie Das So soll' - Wer Das wiederum So bestimmt hat - kA.
Im Groben sitzt der Fehler immer zwischen Sessel und Monitor - muß nicht zwingend der eigene Sessel sein (was aber selten vorkommt).
MfG
postmaster-ino:
Hi
Was macht das Beispiel des Datenblatt?
Vermutlich sendet die von Dir benutzte App diesen Zeichensalat, weil 'Sie Das So soll' - Wer Das wiederum So bestimmt hat - kA.
Im Groben sitzt der Fehler immer zwischen Sessel und Monitor - muß nicht zwingend der eigene Sessel sein (was aber selten vorkommt).
MfG
Hey
Konnte mit dem Beispiel aus dem Datenblatt nicht viel anfangen. Ich habe dieses einfache Beispiel genommen Link. Ich habe die Funktion noch eingebaut das alle empfangene bytes in den Monitor geschrieben werden. Das sieht dann so aus:
LED is on
255
LED is off
255
LED is on
255
LED is off
255
LED is on
255
LED is off
Ansich tut das Programm machen was es soll und zwar die einzelne LED an und auschalten, aber warum sendet er mir diese 255 und nicht eine einfache 1?
Hier noch das Testprogramm das ich leicht verändert habe.
lg
Bluetooth_Test.ino (1.24 KB)
Hi
Oha, ein überraschend aufgeräumter Code (habe trotzdem STRG+T in der IDE gedrückt und, glaube, zwei Leerzeilen entfernt)
char blueToothVal; //Werte sollen per Bluetooth gesendet werden
char lastValue; //speichert den letzten Status der LED (on/off)
byte incomingByte;
void setup() {
Serial.begin(9600); //serieller Monitor wird gestartet, Baudrate auf 9600 festgelegt
pinMode(13, OUTPUT); //PIN 13 wird als Ausgang festgelegt
}
void loop() {
if (Serial.available()) //wenn Daten empfangen werden...
{
incomingByte = Serial1.read();
Serial.println(incomingByte);
blueToothVal = Serial.read(); //..sollen diese ausgelesen werden
}
if (blueToothVal == '1') //wenn das Bluetooth Modul eine „1“ empfängt..
{
digitalWrite(13, HIGH); //...soll die LED leuchten
if (lastValue != '1') //wenn der letzte empfangene Wert keine „1“ war...
Serial.println(F("LED is on")); //..soll auf dem Seriellen Monitor „LED is on“ angezeigt werden
lastValue = blueToothVal;
}
else if (blueToothVal == '0') //wenn das Bluetooth Modul „0“ empfängt...
{
digitalWrite(13, LOW); //..soll die LED nicht leuchten
if (lastValue != '0') //wenn der letzte empfangene Wert keine „0“ war...
Serial.println(F("LED is off")); //..soll auf dem seriellen Monitor „LED is off“ angezeigt werden
lastValue = blueToothVal;
}
}
MfG
Woher Deine 255er kommen, ist mir auch ein Rätsel - wobei ich eher eine 49 (0x31, '1') erwartet hätte.
PS: Du wirfst Serial und Serial1 durcheinander - soll Das so?
(wirft bei mir beim Kompilieren einen Error, daß Serial1 nicht deklariert wäre)
**-->**Du liest Serial1 für die Ausgabe im Terminal aus, verwendest aber die Eingabe via Serial für den Sketch.
fehlkauf_1234:
Ich denke nicht das der Sender das Problem ist. Ich habe 2 verschiedene Apps genommen und bei beiden kam das selbe raus. Könnte es vielleicht an meinem HC-05 Modul liegen? Dass das Modul die empfangenen Zahlen falsch verarbeitet?
Hier der Link zu der App
lg
Hast du mal einen Bluetooth Terminal für Android ausprobiert?
Einfach nur einige Zeilen hin und her schicken.. vielleicht sogar einfach nur das Serial PassThrough testen.
/*
SerialPassthrough sketch
Some boards, like the Arduino 101, the MKR1000, Zero, or the Micro, have one
hardware serial port attached to Digital pins 0-1, and a separate USB serial
port attached to the IDE Serial Monitor. This means that the "serial
passthrough" which is possible with the Arduino UNO (commonly used to interact
with devices/shields that require configuration via serial AT commands) will
not work by default.
This sketch allows you to emulate the serial passthrough behaviour. Any text
you type in the IDE Serial monitor will be written out to the serial port on
Digital pins 0 and 1, and vice-versa.
On the 101, MKR1000, Zero, and Micro, "Serial" refers to the USB Serial port
attached to the Serial Monitor, and "Serial1" refers to the hardware serial
port attached to pins 0 and 1. This sketch will emulate Serial passthrough
using those two Serial ports on the boards mentioned above, but you can change
these names to connect any two serial ports on a board that has multiple ports.
created 23 May 2016
by Erik Nyquist
*/
void setup() {
Serial.begin(9600);
Serial1.begin(9600);
}
void loop() {
if (Serial.available()) { // If anything comes in Serial (USB),
Serial1.write(Serial.read()); // read it and send it out Serial1 (pins 0 & 1)
}
if (Serial1.available()) { // If anything comes in Serial1 (pins 0 & 1)
Serial.write(Serial1.read()); // read it and send it out Serial (USB)
}
}
Ich habe das Problem behoben, dank einem Denkanstoss von postmaster-ino.
Ich musste die Baudrate von meinem Serial1 auf 9600 einstellen. Sie war vorher per Definition auf 38400 eingestellt. Warum auch immer es so nicht geht.
Danke an Alle die sich hier die Zeit genommen haben und einen Beitrag geschrieben haben.
Lg
Hi
Danke für's Feedback!
Wenn Du jetzt der Nachwelt noch einen funktionierenden Sketch hinterlässt, hat sich Das auch für den zukünftigen Lösungssucher gelohnt.
MfG
postmaster-ino:
Wenn Du jetzt der Nachwelt noch einen funktionierenden Sketch hinterlässt, hat sich Das auch für den zukünftigen Lösungssucher gelohnt.
Da mein Programm ziemlich Individuell ist wird jeder der das selbe Problem hat kein Glück mit meinem Programm haben. Ich denke der Lösungsansatz den ich oben schon beschrieben habe wird aufjedenfall helfen.
Diese Einstellung wird als Schmarotzer betrachtet.
Unter Umständen fällt eine spätere Hilfe dann aus, da sie dem Sinn eines Forums widerspricht.
Gruß Tommy
Tommy56:
Diese Einstellung wird als Schmarotzer betrachtet.
Unter Umständen fällt eine spätere Hilfe dann aus, da sie dem Sinn eines Forums widerspricht.
Von Dir brauche ich keine Hilfe und schon garnicht solche Kommentare. Ich habe den Lösungsweg für mein Problem oben im Post beschrieben, denn es ging um das Problem nicht um den Code. Du schreibst unter jeden Post und gibts überall deinen Senf dazu, aber nützliche Kommentare habe ich von dir noch nicht gesehen. Manche Menschen haben einfach nichts besseres zutun, naja.
Falls eine Person mein Programm benötigt, dass alle Fragen beantwortet lach, der kann mir gerne eine Nachricht schreiben und dann werde ich es gerne zu verfügung stellen.
Hi
Tja - wir Alle machen Fehler ... meiner war Es, Dir zu Helfen.
Wieder was gelernt, aber auch Solche muß Es geben.
Viel Spaß noch, Deine Einstellung wird Dich weiter bringen.
MfG