Hallo,
ich stehe vor dem Problem einen String mit bis zu beliebigen 16 Zeichen,
empfangen über HC-06
Data=Bluetooth.readString();
auf einem 16x1 LCD Display mit I2C-Schnittstelle auszugeben.
Leider hat das Display eine 8x2-Organisation so dass nur die ersten 8 Zeichen dargestellt werden.
Wie trenne ich den String (Data) in 2 Blöcke zu 8 Byte also in Data1 und Data2 um sie dann mit
lcd.setCursor(0,0);
lcd.print(Data1);
lcd.setCursor(0,8);
lcd.print(Data2);
korrekt darzustellen. Die Wege über Teilung durch ein , im String scheidet aus da die Zeichenkette undefiniert ist.
Volker
Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).
So ist er auch auf portablen Geräten lesbar. Das kannst Du auch noch nachträglich ändern.
Ein compilierfähiger Sketch wäre auch sinnvoll, da wir z.B. nicht wissen, wie Du Data deklariert hast.
Gruß Tommy
Hallo,
wenn es sich bei Data um ein String objekt handet kannst Du das mit substring(from,to) in zwei Strings aufteilen und dann je in eine Zeile schreiben.
arduino.cc/reference
Wenn es sich um eine C Zeichenkette handet dann
/wiki/C-Programmierung:_Zeichenkettenfunktionen
Heinz
Hallo Heinz,
dein Tip war es. Danke.
void loop() {
String Data;
String Data1;
String Data2;
if (Bluetooth.available()){ //wait for data received
Data=Bluetooth.readString();
if (Data.startsWith( "+DISC:SUCCESS" )) // sendet HC-06 wenn Bluetooth unterbrochen wird
// soll nicht dargestellt werden.
{
digitalWrite(LED,0);
digitalWrite(LED2,1);
}
else {
digitalWrite(LED,1);
digitalWrite(LED2,0);
Data1=Data.substring(0,8);
Data2=Data.substring(8,17);
lcd.clear();
lcd.print("");
delay(500);
lcd.setCursor(0,0);
lcd.print(Data1);
lcd.setCursor(0,1);
lcd.print(Data2);
Serial.println(Data);
}
Damit funktioniert es jetzt.
Volker
Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).
So ist er auch auf portablen Geräten lesbar. Das kannst Du auch noch nachträglich ändern.
Gruß Tommy
Hi
Da Du nicht schreibst, auf welchem Arduino Das bei Dir laufen soll - es könnten also auch 'die Kleinen' sein - aka Uno/Nano - solltest Du Abstand zu String (mit großem S) nehmen, oder zumindest den Platz dafür reservieren (und dann nix größeres drin speichern) - sonst hast Du sporadisch immer mal wieder Abstürze, was den Spaß am eigenen Rechenknecht deutlich reduziert.
MfG