Nextion ohne Library

Hi, ich nutze ein Nextion Display mit einem Aurduino Uno/Mega und bis jetzt habe ich die Nextion Library verwendet, aber leider habe ich das Problem, dass sobald ich einen DHT22 Sensor oder eine Uhr ins Programm einbaue, dass dann die Buttonbefehle nicht mehr ordentlich beim Arduino ankommen bzw umgesetzt werden.
Nun hab ich überall gelesen das es Probleme mit der Nextion Library geben kann und will es nun ohne probieren. Das senden von Texten klappt auch, aber leider verstehe ich nicht wie ich Buttons abfragen kann.

Könnte mir bitte einer von euch ein Beispiel zeigen?
Ich möchte einen Button b0 abfragen und wenn der betätigt wurde mit einer anderen Funktion reagieren.

#include <RTClib.h>  
RTC_DS3231 rtc;//Uhrzeit
byte NexT[3] = {255, 255, 255};
int TEST = 5;
int Stunde;
int Minute;
void setup()
{
  Serial.begin(9600);
  Serial2.begin(9600);
  rtc.begin();
}
void loop()
{
  DateTime now = rtc.now();
  Stunde = now.hour();
  Minute = now.minute();

  Serial2.print("t0.txt=\"");
  Serial2.print(Stunde);
  Serial2.write('"');
  Serial2.write(NexT, 3);

  Serial2.print("t2.txt=\"");
  Serial2.print(Minute);
  Serial2.write('"');
  Serial2.write(NexT, 3);

  Serial2.print("t3.txt=\"");
  Serial2.print(TEST);
  Serial2.write('"');
  Serial2.write(NexT, 3); 
}

Schau mal ins Instruction-Set Nummer 19 Touch event.

Gruß Tommy

Ich habe gerade festgestellt dass das Display Probleme macht, da der DHT22 und das Uhrmodul die ganze Zeit senden und dadurch das Display es nicht Schaft Befehle an den Arduino zu schicken.

Pied89:
Ich habe gerade festgestellt dass das Display Probleme macht, da der DHT22 und das Uhrmodul die ganze Zeit senden und dadurch das Display es nicht Schaft Befehle an den Arduino zu schicken.

Dann musst du in deinem Sketch verhindern, dass die RTC und der Sensor ständig ausgelesen wird.
Das kannst du durch einen entsprechenden Timer machen.

Hallo,
ist es ein normales Nextion oder ein erweitertes. Das erweiterte hat eine RTC on Board.
Wie möchtest Du denn die NextionAnzeigeZeit synchronisieren? Wenn die lfd. Sekunden angezeigt werden sollen, dann
könnte es in Deinem Sketch eng werden. Wenn Du aber alle Minute synchronisieren möchtest, so hast Du immer mindestens
59sek. Zeit etwas anderes zu machen.
Du schreibst also nur ins Nextion, wenn sich etwas ändert.
Mit dem Fühler machst Du es genau so. Nur ans Nextion senden, wenn sich etwas ändert.

Mit dem Button kannst Du es machen, wie Tommy schon gesagt hat.
Wenn es einfach werden soll so sende einfach mit einem Button ein Kommando in HEX.
Z.B. Sendet der Button ein "ButtonA" im Format HEX.
Das kannst Du auf dem Arduino ziemlich einfach auswerten.
Wenn Dein Sketch etwas mehr hergibt, dann kannst Du ihn ja noch einmal neu einstellen.
Wie möchtest Du den überhaupt anfangen?
Gruß und Spaß
Andreas

SkobyMobil:
Wenn es einfach werden soll so sende einfach mit einem Button ein Kommando in HEX.
Z.B. Sendet der Button ein "ButtonA" im Format HEX.

Die gesendeten Bytes sind binär. Hex ist nur eine Darstellungsform für die Deppen vor den Monitoren, also uns.
Er könnte also auch "BA" senden.

Ob man zu den gut dokumentierten Ausgaben des Nextion noch mal ein eigenes Protokoll darüber stülpen will, muss jeder selbst entscheiden.

Je nachdem, was er alles machen will, sollte man sich ein durchgehendes Konzept einfallen lassen. Z.B. 1. Buchstabe als Kennung was es ist (B wie Button) und danach welcher. So eine 2 Zeichenkodierung läßt sich einfacher auswerten, als die Langform.

Gruß Tommy

Ich lass nur die Stunden und Minuten anzeigen, daher geht es. Und ja hab’s jetzt so gemacht das nur noch bei Änderungen Texte an das Display geschickt werden. Ja das mit HEX oder als Namen hatte ich schon gesehen, aber habe es noch nicht kapiert wie ich den Befehl vom Button im Sketch abfrage.

Hallo,
könntest uns ja einmal zeigen, wie Du am Arduino seriell auswertest.

So?

bool readSerial(Stream& stream)
{
  static byte index;

  while (stream.available())
  {
    char c = stream.read();
//***************************************     Werte Empfang     ***************************
    if (((c >= 32) && (c <= 57)) && index < SERIAL_BUFFER_SIZE - 1)//Werte
    {
      serialBuffer[index++] = c;
      Serial.print(c);
}

Gruß und Spaß
Andreas