Nextion- Seitenwechsel durch Arduino

Hallo,

ich möchte für eine Error-Meldung meines Systems am Nextion Display (Nextion 7zoll) eine neue Seite aufmachen, sodass bis dieser Error (Wasserstand zu niedrig) behoben ist keine Programmabläufe gestartet werden können.

Zuvor hatte ich lediglich ein Warnsignal ausgegeben.

der Code hierfür war:

  //sendet eine Warnmeldung an das HMI-Display sobald zu wenig Wasser im Tank ist:
  if (digitalRead(Tanksensor)== HIGH)
  {
    Serial1.print("home.p2.pic=36");
    SerialEnde();
    Serial1.print("home.t0.txt=");
    Serial1.print("\"");
    Serial1.print("Wasser auffuellen!");
    Serial1.print("\"");
    SerialEnde();
    WasserLow = true;
  }
  else if (digitalRead(Tanksensor)==LOW && WasserLow == true)
  {
    Serial1.print("home.p2.pic=2");
    SerialEnde();
    Serial1.print("home.t0.txt=");
    Serial1.print("\"");
    Serial1.print("");
    Serial1.print("\"");
    SerialEnde();
    WasserLow = false;
  }

Das ganze hat auch super funktioniert.

Der aktuelle Code für das Aufrufen der Fehlermeldungsseite:

if (digitalRead(Tanksensor)== HIGH)
  {
    page29.show();
    WasserLow= true;
  }
  else if (digitalRead(Tanksensor)==LOW && WasserLow == true)
  {
    page0.show();
    WasserLow = false;
  }

Das ganze funktioniert zwar, ist aber extrem langsam. Die Fehlermeldungsseite kommt sofort, das Problem ist das zurück kommen zur Home-Seite. Hier dauert es sehr lange (2/3 sekunden). Sehr seltsam finde ich vorallem, dass sobald die Fehlermeldungsseite lange auf bleibt man noch länger warten muss bis man zurück zur Home-Seite kommt…
Ich habe das ganze bis dato nur mit dem Sensor am Tisch ausprobiert. Wenn die Fehlermeldungsseite nur eine halbe Minute offen ist muss man schon ca. 5-8sec warten bis das Display zur Home-Seite zurück kehrt.

Ich habe das ganze auch schon mit Serial.print(“page home”); probiert. Hier scheint die Verzögerung konstant zu sein, aber ebenfalls sehr hoch mit 5-10sec.

Ich verwende übrigens einen Arduino Micro.

Bin ziemlich ratlos woran das ganze liegen kann…

Du solltest schon den kompletten Sketch posten, damit wir sehen können was da abläuft.
Aus den Fragmenten ist schlecht etwas zu erkennen.

#include "Nextion.h"
#include "EEPROM.h"

#define Tanksensor 2

NexPage page0 = NexPage(0,0,"home");
NexPage page29 = NexPage(29,0,"WasserLOW");

NexTouch *nex_listen_list[]= {
  &page0,
  &page29,
  NULL
};

bool WasserLow = false;


void setup() {
  Serial1.begin(9600);
  while (!Serial1)
  {};
nexInit();

pinMode(Tanksensor, INPUT);   //Digital I/O Pin 2 als Eingang setzen
  
}
void loop() {

 /*
  //sendet eine Warnmeldung an das HMI-Display sobald zu wenig Wasser im Tank ist:
  if (digitalRead(Tanksensor)== HIGH)
  {
    Serial1.print("home.p2.pic=36");
    SerialEnde();
    Serial1.print("home.t0.txt=");
    Serial1.print("\"");
    Serial1.print("Wasser auffuellen!");
    Serial1.print("\"");
    SerialEnde();
    WasserLow = true;
  }
  else if (digitalRead(Tanksensor)==LOW && WasserLow == true)
  {
    Serial1.print("home.p2.pic=2");
    SerialEnde();
    Serial1.print("home.t0.txt=");
    Serial1.print("\"");
    Serial1.print("");
    Serial1.print("\"");
    SerialEnde();
    WasserLow = false;
  }*/

  
  //sendet eine Warnmeldung an das HMI-Display sobald zu wenig Wasser im Tank ist:
  if (digitalRead(Tanksensor)== HIGH)
  {
    page29.show();
    WasserLow= true;
  }
  else if (digitalRead(Tanksensor)==LOW && WasserLow == true)
  {
    page0.show();
    WasserLow = false;
  }
}

Hab versucht alles dazugehörige rauszukramen.
Der ganze Sketch hat 1000 Zeilen, den kann ich nicht hier einfügen^^

Ah.....ok.
Du verwendest die Nextion Library, da muss ich passen, da ich die nicht verwende, aus den von dir genannten Gründen.
Die Library hat Fehler, die nicht direkt nachvollziehbar sind. So wie der von dir beschriebene.

Ok, das ist schonmal gut zu wissen^^

In dem Fall suche ich mal im Code der Lib nach Fehlern..

Ich hoffe ich kann es umgehen den ganzen Sketch umzuschreiben^^