TFT 1.8 , Werte immer hintereinander

Hallo!
Ich habe mir folgenden Code (unten) zusammengestellt, es funktioniert auch alles,ausser das:
Immer wenn ein neuer Wert (z.B: “14%”) vom VB.Net-Programm an den Arduino gesendet wird dann wird der Wert NICHT an ucg.setPrintPos(0,50); geschrieben , sondern immer hintereinander.
z.B: 7 %14 %21 %
Die Position 50 ist immer ok, aber es soll immer ganz links ab “Pos 0” stehen und den alten (vorherigen) Wert überschreiben.
Was mache ich falsch ??
DANKE für Eure Hilfe
Lenny

#include <Adafruit_ST7735.h>
#include <Adafruit_ST7789.h>
#include <Adafruit_ST77xx.h>

#include <Adafruit_GFX.h>
#include <Adafruit_SPITFT.h>
#include <Adafruit_SPITFT_Macros.h>
#include <gfxfont.h>

#include <Ucglib.h>
#include <SPI.h>
#include “Ucglib.h”

Ucglib_ST7735_18x128x160_HWSPI ucg(/cd=/ 9, /cs=/ 10, /reset=/ 8);
String inData ;

void setup() {
Serial.begin(9600);
//Serial.println("\n");
ucg.begin(UCG_FONT_MODE_TRANSPARENT);
ucg.clearScreen();
}
void loop() {
while (Serial.available() > 0)
{
char recieved = Serial.read(); inData += recieved;

// Process message when new line character is recieved
if (recieved == ‘\n’)
{
Serial.print(inData); inData = “”; // Clear recieved buffer
}
}

ucg.setRotate90();
ucg.setFont(ucg_font_ncenR10_tr);
ucg.setColor(255, 255, 255);

ucg.setPrintPos(0,50);

ucg.println(inData);

}

Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).
Dann ist er auch auf mobilen Geräten besser lesbar.
Das kannst Du auch noch nachträglich ändern.

Gruß Tommy

sweety64:
Was mache ich falsch ??

#include <Adafruit_ST7735.h>

#include <Adafruit_ST7789.h>  ??
#include <Adafruit_ST77xx.h>  ??

#include <Adafruit_GFX.h>
#include <Adafruit_SPITFT.h>  ??
#include <Adafruit_SPITFT_Macros.h>   ??
#include <gfxfont.h>

#include <Ucglib.h>
#include <SPI.h>
#include “Ucglib.h”   ??

Hier machst du bestimmt etwas falsch.
Die Libs brauchst du doch nicht alle, oder ?

Und Code-Tags nicht vergessen !

Danke für Erklärungen, habe jetzt aufgeräumt.

#include "Ucglib.h"
Ucglib_ST7735_18x128x160_HWSPI ucg(/*cd=*/ 9, /*cs=*/ 10, /*reset=*/ 8);
String inData ;

void  setup() {
    Serial.begin(9600);
  ucg.begin(UCG_FONT_MODE_TRANSPARENT);
  ucg.clearScreen();
}
void  loop() {
    while (Serial.available() > 0)
    {
        char  recieved = Serial.read(); inData += recieved;
        if (recieved == '\n')
        {
            Serial.print(inData); inData = "";
        }
    }
        ucg.setPrintPos(0, 50);
        ucg.setRotate90();
        ucg.setFont(ucg_font_ncenR10_tr);
        ucg.setColor(255, 255, 255);
        ucg.print(inData);
}

Dazu wäre eine Erklärung sinnvoll. Funktioniert oder macht noch folgende Fehler ?
Und einen Link deiner verwendeten Library, damit wir weiteres prüfen können.

sweety64:

void  loop() {

while (Serial.available() > 0)
   {
       char  recieved = Serial.read(); inData += recieved;
       if (recieved == '\n')
       {
           Serial.print(inData); inData = "";
       }
   }
       ucg.setPrintPos(0, 50);
       ucg.setRotate90();
       ucg.setFont(ucg_font_ncenR10_tr);
       ucg.setColor(255, 255, 255);
       ucg.print(inData);
}

Theoretisch dürfte auf dem Display nichts stehen, wenn
inData = "";
ausgeführt würde, da gelöscht bevor zur Anzeige gekommen.

Da etwas auf dem Display ausgegeben wird, ist inData nicht leer.
Und wenn nicht leer, wird immer weiter angefügt.

Sprich:
if (recieved == '\n')
wird nicht erfüllt.

Im Übrigen ist der Zeitpunkt der Prüfung unglücklich gewählt, da das Steuerzeichen dann schon an inData übergeben wurde.

Mittagspause mal sinnvoll genutzt:
Ich hab mir Deinen Snipes nochmal angesehen.

Wenn Du kein '\n' bekommst, schickst Du evtl. auch keines.
Dann müsstest Du in deinem VB-Code ein vbCrLf auslösen.

Wenn Deine Übertragung auf das % endet, könntest Du auch darauf prüfen.

/* https://forum.arduino.cc/index.php?topic=691142.0 */

String inData;
char recieved;

void setup()
  {
  Serial.begin(115200);
  }

void  loop()
  {
  if (Serial.available())
    {
    recieved = Serial.read();
    Serial.print(F("Zeichen empfangen (hex): "));
    Serial.println(recieved, HEX);
    if (!isControl(recieved))
      {
      inData += recieved;
      Serial.print(F("inData hat folgenden Wert: "));
      Serial.println(inData);
      }
    if (recieved == '\n') // oder '%'
      {
      Serial.print(F("Ausgabe auf dem Display: "));
      Serial.println(inData);
      /*
         ucg.setPrintPos(0, 50);
         ucg.setRotate90();
         ucg.setFont(ucg_font_ncenR10_tr);
         ucg.setColor(255, 255, 255);
         ucg.print(inData);
      */
      inData = "";
      }
    }
  }

[edit] der OP schreibt recieved - angepasst[/edit]