Kommunikation mit Nextion Display

Hallo

Mein Name ist Daniel und ich habe mir ein Projekt vorgenommen, damit ich mit einem Controllino einen Nextion Display ansteuern kann.

Ich schaffe es leider überhaupt nicht einen Temperatur Wert darstellen zu lassen.

Ich hoffe sehr das ihr mir dabei helfen könnt.

Hier der Programmausschnitt:

#include <SPI.h>
#include <Controllino.h>
#include <Wire.h>
#include "DHT.h" 
#include <PubSubClient.h>

#define DHTPIN 52
#define DHTTYPE DHT22 

DHT dht(DHTPIN, DHTTYPE);

void setup() {

  Serial.begin(9600);
  Serial1.begin(9600);

  
  dht.begin();
  delay(500);
}

void loop() {
Serial.println("Sende...");
delay(5000); // Fünf Sekunden Vorlaufzeit bis zur Messung.

  float luft = dht.readHumidity();
  float temp = dht.readTemperature(); 
  

  Serial.print("Luftfeuchtigkeit: "); // Ausgabe des Wortes "Luftfeuchtigkeit".
  Serial.print(luft);                 // Ausgeben der gemessenen Luftfeuchtigkeit.
  Serial.print("%\n");                // Ausgeben des Zeichens % und Anwendung eines Zeilensprunges.
  Serial.print("Temperatur: ");       // Ausgabe des Wortes "Temperatur".
  Serial.print(temp);                 // Ausgeben der gemessenen Temperatur.
  Serial.write("°C\n");               // Ausgeben des Zeichens °C und Anwendung eines Zeilensprunges.

  String command = "t0.txt=\""+String(temp,1)+"\"";
  Serial1.print(command);
  Serial1.write(0xff);
  Serial1.write(0xff);
  Serial1.write(0xff);

  Serial1.print("n0.val=");
  Serial1.print(temp);
  Serial1.write(0xff);
  Serial1.write(0xff);
  Serial1.write(0xff);

  Serial1.print("b0.txt=Auslauf");
  Serial1.write(0xff);
  Serial1.write(0xff);
  Serial1.write(0xff);

}

Ich habe hier mehrere Versuche ausprobiert, aber leider ist es mir nicht möglich irgendetwas darzustellen.

Deshalb hoffe ich ihr könnt mir helfen.

Danke

Lg Daniel

Setze deinen Sketch bitte in Code-Tags.

Verwende dazu die Schaltfläche </> oben links im Editorfenster.
Das kannst du auch nachträglich machen.
Dazu den Sketch markieren und die Schaltfläche klicken.

Damit wird dieser für alle besser lesbar.

Kannst du denn andere Texte auf dem Display anzeigen ?

Lass doch erst mal alles andere weg und versuche erst mal einen Text in ein Textfeld auszugeben.

Gruß Tommy

Möchtest du uns denn noch weitere Informationen zukommen lassen ?

Hallo zusammen,

Ich möchte mich vorab für die schnellen Antworten bedanken.
Freut mich das ich unterstützt werde.

Ich bin gerade beim testen, dass ich nur einen Text übergebe - leider schaffe ich es bis jetzt nicht.

Keine ahnung was ich hier falsch mache.

Ich versuche es gerade mit einem Arduino UNO und habe den Nextion angeschlossen RX zu TX und umgekert (müsste ja passen)

Ist das jetzt so, dass beim UNO nur mit Serial.print gearbeitet wird?

Hier noch mal ein Ausschnitt vom Programm:

#include <SPI.h>
#include <Wire.h>
#include <PubSubClient.h>
#include <SoftwareSerial.h>
#include <Nextion.h>

void setup() {

  Serial.begin(9600);

  delay(500);
}

void loop() {
Serial.println("Sende...");
delay(5000); // Fünf Sekunden Vorlaufzeit bis zur Messung.
  
  Serial.print("t0.txt=\"");
  Serial.print("Hallo");
  Serial.write("");
  Serial.write(0xFF);
  Serial.write(0xFF);
  Serial.write(0xFF);

}

Lg
Daniel

Beim UNO solltest Du SoftwareSerial benutzen und nicht die Schnittstelle zum PC.

Wenn Du einen MEGA 2560 hast, nimm für die ersten Schritte lieber den, da Du dafür eine Hardware-Schnittstelle nutzen kannst.

Wirf erst mal alles raus, was Du nicht brauchst, auch die Nextion-Lib, da Du selbst die Kommunikation machst.

Gruß Tommy

Und in deinem Sketch verwendest du die Nextion Lib doch nicht, also raus damit.

Hast du dir denn diese Seite schon angesehen.
Da sind viele Beispiele drin, die helfen.
Du wurdest doch schon mit seltsamen Wortlaut darauf hingewiesen.

Den Fehler in deinem Sketch habe ich jetzt auch gesehen.
Du musst die Anweisungen entsprechend dem Beispiel aufbauen.
Dazu musst du Seitenname und Feldname richtig ansprechen.
Auch die Steuerzeichen sind wichtig.

Beispiel:

 Serial1.print("page0.Feldname.txt=\"");
  Serial1.print("Dein Text");
  Serial1.write('"');
  Serial1.write(0xFF);
  Serial1.write(0xFF);
  Serial1.write(0xFF);

Hallo zusammen,

ich bin aufs raten von Tommy56 auf einen Controllino Mega umgestiegen (dieser besitzt den selben Mirko Kontroller wie er Mega und ist gleich zu bedienen - es ist alles gleich).

Habe auch jetzt alle Lib entfernt.

Jetzt sieht das Programm so aus:

#include <SPI.h>
#include <Controllino.h>
#include <Wire.h>

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  Serial2.begin(9600);

  delay(500);
}

void loop() {
  Serial.println("Sende...");
  
  Serial2.print("page0.Feldname.txt=\"");
  Serial2.print("Dein Text");
  Serial2.write('"');
  Serial2.write(0xFF);
  Serial2.write(0xFF);
  Serial2.write(0xFF);
}

Ich habe jetzt wieder einiges versuch, komme aber auf keine Lösung.

Ich habe jetzt auch schon einiges gelesen und schaffe es dennoch nicht.

Vielleicht habt ihr ja noch einen Rat.

Lg
Daniel

Du musst mit dem Nextion-Editor Dein Display einrichten.
Ich glaube nicht, dass Du auf Page0 ein Textfeld mit dem Namen "Feldname" eingerichtet hast.
Das muss schon auf beiden Seiten zusammen passen.

Da die Programmierung des Nextion ein Binärfile erzeugt, läßt sich das schwer im Forum vergleichen.

Schau Dir mal dieses und dieses Tutorial an.

Gruß Tommy

Wie sieht den dein Nextion aktuell aus und wie heißen denn die Felder darin ?

Sorry das war ein blöder fehler von mir. Aber geht dennoch nicht.

Kann es vielleicht sein, dass ich beim Nextion etwas falsch mache?

Meine Vorgehensweise:

1 - Größe des Displays ausgewählt.

2 - Textfeld erzeugen - (objektname = t0)
3 - Schriftart ausgewählt
4 - dieses Programm auf die SD - Karte gespeichert und ins Display eingespielt.

Ist hierbei ein Fehler?

Lg
Daniel

GrDa:
Sorry das war ein blöder fehler von mir. Aber geht dennoch nicht.

Kann es vielleicht sein, dass ich beim Nextion etwas falsch mache?

Meine Vorgehensweise:

1 - Größe des Displays ausgewählt.

2 - Textfeld erzeugen - (objektname = t0)
3 - Schriftart ausgewählt
4 - dieses Programm auf die SD - Karte gespeichert und ins Display eingespielt.

Ist hierbei ein Fehler?

Lg
Daniel

Wichtig ist auch der Seitenname, der muss auch übereinstimmen.

Und die Übertragung ins Display muss fehlerfrei laufen.

Auch die serielle hast du richtig angeschlossen ?

ich habe das Nextion "NX8048T070

ich arbeite zur zeit nur mit einem Textfeld und hoffe, dass ich hier etwas anzeigen kann.

der Seitenname ist bei mir page0 - die erste Seite.

Lg
Daniel

Ich meinte die Optik, mach ein Foto davon.
Am besten von der Entwicklungsseite im Nextion Editor.

GrDa:
ich arbeite zur zeit nur mit einem Textfeld und hoffe, dass ich hier etwas anzeigen kann.

Und wie heißt das Textfeld?

Gruß Tommy

Wie kann ich ein Foto posten?
Ich kann es nicht einfügen.

Das Textfeld ist t0 - objektname

Und in deinem Sketch steht auch "t0" ?
Foto kannst du über Preview und Attachments einfügen.

Dann solltest Du es im Code auch so ansprechen und nicht mit Feldname.
Außerdem ist es am Anfang günstig, die Returnwerte am Nextion einzustellen und auszuwerten.

Gruß Tommy

Hier ein Foto