Arduino MEGA und Nextion Display ohne nextion.h: Einfacher Test schlägt fehl oder ein Noob am Boden

Ein Noob hat Blues und wollte mal was machen!

Jetzt scheitere ich ein "Hello World" von einem Arduino MEGA an ein Nextion zu senden!

Hier das Sketch:

byte NextionTerminator[3] = { 0xFF, 0xFF, 0xFF };
#define SERIAL Serial
#define HMISERIAL Serial1

void setup() {
  SERIAL.begin(9600);
  HMISERIAL.begin(9600);
  delay(1000);

  // Schreibe "Hello World" ins terminal
  SERIAL.print("Hello World");
 
  // Wechseln auf Seite "start"
  HMISERIAL.print("page start");
  HMISERIAL.write(NextionTerminator, 3);

  // Schreibe "Hello World" ins Textfeld t0
  HMISERIAL.print("t0.txt=\"Hello World\"");
  HMISERIAL.write(NextionTerminator, 3);
}

void loop() {
  // Leere loop()
}

Und hier ein Screenshot vom Nextion Editor:

Und eigentlich hatte ich nur vor, dass die Hintergrundfarbe des Textfeldes nach durchlaufen einer Testschleife ( I2C-Status - OK, SPI-Status - OK, - WLan da - OK) von orange auf grün springt! :pensive:

Wie groß können Bretter vor Köpfen werden?

was hat jetzt diese Aussage mit dem Problem des Hello World zu tun???

.
.

Anscheinend groß genug um die Sicht auf den Bildschirm zu versperren so das du dein Posting nicht mehr Prüflesen kannst

Ich habe das vor längerem mal so gelöst und das hat auch funktioniert

  Serial2.print("t0.txt=\"");   
  Serial2.print("mein Text");   
  Serial2.print("\"");          
  Serial2.print("\xFF\xFF\xFF"); 
 
}


void ButtonStartRot() {
  Serial2.print("b0.bco=63488");  
  Serial2.print("\xFF\xFF\xFF");  
}

void ButtonStartWeiss() {
  Serial2.print("b0.bco=65535");
  Serial2.print("\xFF\xFF\xFF");         
}

Die drei Abschlusszeichen nicht als bytes sondern als Text mit Steuerzeichen

Wenn das jetzt jemand genauer analysieren soll dann müsstest du schon die ganze Nextion-Datei zur Verfügung stellen

vgs

1 Like

...sollte keinen Unterschied machen. Könntest du mal ausprobieren, @StefanL38 .

1 Like

Lieber Stefan,
vielleicht weil ich uneigentlich auch einen Text in einem Textfeld ausgeben möchte. :innocent:
Und eigentlich wollte ich ein Textfeld was die Farbe ändert und kein Button, darum habe ich Deinen Tipp - hoffe richtig - einmal für ein Textfeld umgeschrieben.

Im HMI habe ich mal das vscope im Textfeld 'i2c' und 't0' auf global gesetzt.

Dann habe ich das Nextion 3.5" und das MEGA an n Netzteil angeschlossen und 5V eingestellt. Zusammen ziehen beide ca. 250mA. Also wär das MEGA auch nicht überlastet, wenn das Display ohne eigene Stromversorgung an dem Board hängen würde.
Auch mal PINs umgesteckt 16,17 und 18,19...

Ich bekomme es nicht hin!

Hier der Sketch:

#include <Arduino.h>

void setup() {
  Serial2.begin(9600);

  // Setze den Text im Textfeld t0
  Serial2.print("t0.txt=\"");   
  Serial2.print("Hallo Welt!");   
  Serial2.print("\"");          
  Serial2.print("\xFF\xFF\xFF");

}

void loop() {
  // Textfeld i2c auf 50712 setzen
  Serial2.print("i2c.bco=50712");
  Serial2.print("\xFF\xFF\xFF");  
  delay(2000);
  
  // Textfeld i2c auf 63488 setzen
  Serial2.print("i2c.bco=63488");
  Serial2.print("\xFF\xFF\xFF");  
  delay(2000);
}

Und hier das HMI-File:
test.zip (20,9 KB)

Es kommt weder Hallo Welt! Noch wechseln die Farben.

Wär auch Dankbar für n link zu nem simplen Beispiel für platform.io

Danke Welt im Voraus!

Du hast noch nichts dazu geschrieben deshalb frage ich:
Hast du deine Konfiguration compilieren lassen und dann über SD-Karte auf das Display übertragen?

Hast du mal probiert wie der Simulator auf dein Programm reagiert?
Der Debugger hat einen Modus, dass man den Microcontroller über einen USB-COM-Port-Adapter an den PC anschließt und dann die Simulatorsoftware die Befehle die der microcontroller sendet empfängt.

Edit:
im Simulator funktioniert der Code


daraus kann man mutmaßen, dass es an der seriellen Verbindung oder am
nicht auf das Nextion-display hochgeladenen *.tft file liegt.

vgs

Hallo Stefan,

ich habe im Editor auf Compile gedrückt und dann File -> TFT file output und diese direkt auf meine SD-Karte geschrieben. Dann in das Display mit der Karte - Strom drauf - update success abgewartet - Strom weg - Karte raus - Strom an. Display erscheint wie definiert.

OK, den auch noch... viele Dinge. um sich als Elektronik-Bastler halbwegs Vollständig zu fühlen! :rofl:

Ich hab einen Treiber für meinen TTL-USB-Adapter gefunden und jetzt ist daraus ein USB-COM-Port-Adapter geworden, also mit Port16!

Ich bekomme aber keine Verbindung zum Nextion. Bei der 'Send command to:' Auswahl (curr. sim. - nextion device - oder beides) kann ich auch Port16 auswählen.
Ich drücke Connect und er erhöht Schrittweise die Bautrate... bis er mit "Connection failed" abbricht. :face_with_symbols_over_mouth:

Aber sag, wo trägst Du die Befehle ein? Input Area? Wenn ich da t0.txt="welt" eintippe passiert nix.

lg

Windows hat manchmal Probleme mit COM-Ports >=10. Nutze mal USBDeview und räume etwas auf, so dass Du wieder unter 10 bist.

Gruß Tommy

1 Like

Und du hast auch darauf geachtet, dass du RX (MEGA) mit TX (Nextion) und umgekehrt verbindest ?

1 Like

Ich habe das mit folgender Konfiguration getestet.

auf den Arduino Mega 2560 dein Programm geflasht.
Dann die IO-pins von Serial2 das sind Pin 16 und Pin 17 mit einem USB-COM-Port-Adapter verbunden und dann in der Nextion-Software den debugger gestartet.

Arduino-Mega-2560-->---COM-PORT-USB----->-----USB-Stecker------>--USB-Buchse-PC-----Nextion-debugger

Im Nextion-debugger den COM-Port ausgewählt und Start geklickt.

Das bedeutet der Nextion-Simulator empfängt die seriellen Daten vom Arduino Mega und das funktioniert.

vgs

1 Like

und das ist natürlich extrem wichtig wenn du den Mega direkt mit dem Nextion verbindest.

1 Like

WOW!
ES KLAPPT! ES KLAPPT!

Jeder Eurer Tipps war SUPER!

Alter USB-Müll weg!

Ja gelesen und auch gemacht und dann nach dem dröfzigsten an und abstecken doch 'richtig' angeschlossen! :man_facepalming:

Und den COM-PORT-USB als Horch-Port zu benutzen!

Ich werde das morgen Abend ausgiebig testen!

DANKE! #kleinerdrei

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