bin gerade am verzweifeln mit meinem Arduino Mega.
Der Arduino bekommt von Serial3 eine vierstellige Zahl von einem anderen Arduino, der den Wert eines Potentiometers liest. Beispiel: Der Arduino sendet als Wert 4400. Dann empfängt auch der Mega 4400 und kann es im Seriellen Monitor ausgeben.
Da ich diesen Wert auf einem Nextion Enhanced 3.5'' ausgeben will, muss ich vorher noch "t2.txt=" und """ printen. Wenn ich das tue, dann schreibt er sechsmal "t2.txt=" und spaltet die 4400 in vier einzelne Zahlen und schreibt sie jeweils hinter "t2.txt=".
Hier der Code des Arduino Unos welcher den Wert sendet:
Du solltest nach der Ausgabe ans Nextion incommingData leer machen und Du solltest alle Zeichen von Serial3 lesen oder nur 4 Zeichen und nicht mehr senden.
Lass Dir die Zeichen mal alle als HEX ausgeben, dann siehst Du was da noch kommt.
Tommy56:
Du solltest nach der Ausgabe ans Nextion incommingData leer machen [...]
Also einfach incommingData = 0 ?
Tommy56:
Lass Dir die Zeichen mal alle als HEX ausgeben, dann siehst du was da noch kommt.
Da passiert nicht viel, ich bekomme nur die Zahlen als HEX.
Tommy56:
[...]Du solltest alle Zeichen von Serial3 lesen oder nur 4 Zeichen und nicht mehr senden.
Ich sende ja nur jedes mal 4 Zeichen. Ich hatte das nur so gemacht, weil ich sonst immer die vier Stellen der Zahl einzeln im Seriellen Monitor angezeigt bekommen habe. Also wenn ich 1234 gesendet habe, dann wurde mir Zeile für Zeile 1, 2, 3 und 4 angezeigt
Tommy56:
Nein, Du sendest mehr Zeichen. Lies mal nach, was println macht.
Wie leert man einen String?
Du solltest ein paar Grundlagen lernen.
Gruß Tommy
Ok, habe ich verstanden. Aber wie kann ich das Problem lösen? Mein eigentliches Problem ist ja, dass die Zahl nicht mehr zusammen im Seriellen Monitor steht, sondern jede Stelle einzeln, sobald ich irgendetwas davor oder danach schreibe...
janpho:
Du könntest beim sendenden Arduino ein Erkennungszeichen anfügen (z.B. ein "&") und beim empfangenden Arduino ein Serial.readStringUntil('&') anfügen.
Normal nimmt für sowas ein Linefeed. Das wird bei println() automatisch gesendet. Und im seriellen Monitor kann man es auch einstellen