Nextion Display mit Controllino Probleme

Moin
Vorweg, ich bin Arduino und Nextion Neuling :wink:
Ich programmiere eine Steuerung für eine Salznebelsprüh-Anlage, dabei habe ich nun mehrere Fragen. Zuerst habe ich das Nextion NX8048K070-11C mit Buttons und Timer und mehreren Seiten geschrieben, anschließend das Arduino Programm vom Controllino MINI....Nun habe ich diese mit RX und TX über die Serielle Schnittstelle verbunden.
Jetzt habe ich das Problem das ich im Seriellen Monitor nicht immer jeden Button sehen kann oder es sich dann aufhängt und keine Buttons mehr anzeigt, bis ich den Seriellen Monitor Neustarte.
Vielleicht kann mir ja jemand helfen.

#include <SoftwareSerial.h>

SoftwareSerial nextion(6, 5); // RX, TX

String daten_display = "";

void setup() {
Serial.begin(9600);
nextion.begin(9600);
}

void loop() {
if (nextion.available() > 0)
{
daten_display += char (nextion.read());

}
if (daten_display == "Testvorgang") {
Serial.println("Testvorgang");
daten_display="";
}
if (daten_display == "Spülvorgang") {
Serial.println("Spülvorgang");
daten_display="";
}
if (daten_display == "10 min") {
Serial.println("10 min");
daten_display="";
}
if (daten_display == "48 Std") {
Serial.println("48 Std");
daten_display="";
}
if (daten_display == "72 Std") {
Serial.println("72 Std");
daten_display="";
}
if (daten_display == "240 Std") {
Serial.println("240 Std");
daten_display="";
}
if (daten_display == "480 Std") {
Serial.println("480 Std");
daten_display="";
}
if (daten_display == "720 Std") {
Serial.println("720 Std");
daten_display="";
}
if (daten_display == "b0") {
Serial.println("b0");
daten_display="";
}
if (daten_display == "b1") {
Serial.println("b1");
daten_display="";
}
if (daten_display == "b2") {
Serial.println("b2");
daten_display="";
}
if (daten_display == "b3") {
Serial.println("b3");
daten_display="";
}
if (daten_display == "b4") {
Serial.println("b4");
daten_display="";
}
if (daten_display == "b5") {
Serial.println("b5");
daten_display="";
}
if (daten_display == "b6") {
Serial.println("b6");
daten_display="";
}
}

Mit freundlichen Grüßen Tim

Auf AVR Arduinos solltest Du die String-Klasse nicht verwenden. Sie fragmentiert den Speicher viel zu schnell und führt danach zu unkontrollierten Zuständen.

Sehe ich das richtig, der Arduino wird bei Dir nur als USB zu seriell Adpater verwendet?

Leider hat der TO seinen Beitrag doppelt gepostet und es geht hier weiter.

Was könnte ich denn anstatt String daten_display="" nehmen?

Ja grade bin ich dabei die ganzen Button vom Display auf den Controllino zu bekommen, es soll aber auch noch Magnetventile und relais angesteuert werden.

Sorry, aber sollen wir jetzt tatsächlich dein Problem in 2 Threads beantworten ?

Nein, alles gut....:slight_smile: Das mit dem Messumformer habe ich verstanden, da ich einen Pt100 Sensor brauche. Nun geht es darum das ich keine konstanten Werte auf meinen Seriellen Monitor bekommen. Welchen string sollte ich eurer meinung nach nehmen?

Verwende char arrays statt Strings.
Und kennzeichne den anderen Thread als erledigt.

Habe es durch char array ersetzt. Nun zeigt er mir diesen Fehler überall an. Mfg

sketch_mar08a:5:12: error: expected initializer before 'daten_display'
char array daten_display= "";
^~~~~~~~~~~~~

Könnte sein, dass du damit noch nicht umgehen kannst ?
Dann schau dir das hier mal an

Nein ich habe es wohl gelesen aber nicht wirklich verstanden. Anbei habe ich es genau so wie in dem Link gemacht. Nur das ich etwas mehr Buttons habe, sonst ist es identisch.... warum kommt der Controllino nicht mit mehreren Seiten und Button klar?

Und wie kommst du da drauf ?
So lange du nicht die Speichergrenze sprengst, ist es dem egal. Und hier kann es bei Strings schnell zum Problem kommen, das wurde dir ja schon geschrieben.

Der Fehler war, das er kein "Ü" erkennt. somit hat er nicht sauber gearbeitet!

Schön.....war.
Du hast also den Fehler beseitigt.
Magst du uns mitteilen, wann und wo der Fehler auftrat und wie du ihn beseitigst hast ?
Oder dürfen wir weiter raten ?

Oben im Programm steht der Spülvorgang, und durch dieses Ü haben wir kein sauberes Signal bekommen.

Und was genau verstehst du unter "sauberes Signal" ?
Auch ein Ü wird wird für ein Nextion richtig übertragen und kann angezeigt werden.
Ich tippe auf einen Fehler in deinem Code für dein Nextion.

Hallo Tim,

es gibt ein paar Regeln deren Beachtung eine Menge Sympathiepunkte einbringt und die Bereitschaft zu helfen deutlich erhöht:

Code ausnahmslos immer als vollständigen Sketch als sogenannte Code-Section posten

In der Arduino-IDE einen Rechtsklick mit der Maus machen
Dann wird ein Kontext-Menü angezeigt.
Dort "für Forum kopieren" auswählen.
Dann zum Forum wechseln und einfach Strg-V drücken.
schon fertig.
Code-Sections haben eine begrenzte Höhe = verbrauchen wenig Bildschirmhöhe = viiiel weniger scrollen und können mit einem einzigen Mausklick in die Zwischenablage kopiert werden.

Lieber fünf Sätze mehr Erklärung schreiben als zu wenig.
Hier kann niemand hellsehen. Die anderen User haben immer nur die Information zur Verfügung die du geschrieben hast.

Ein Userforum ist kein "WhatsApp-Smalltalk for fun" mit aneinandergereihten Kurzantworten zur gegenseitigen Belustigung

sondern der ernsthafte Versuch zu helfen. Kann selbtverständlich mit Humor sein aber eben mindestens eine präzise Beschreibung was man gemacht hat.

vgs

Vorher am besten in der IDE noch Strg+T drücken, dann wird der Code ordentlich formatiert :wink:

Sehr guter Hinweis. :ok_hand: :+1:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.