INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Nextion und die Probleme mit Arduino....
14.10.2019, 15:12
Beitrag #1
Nextion und die Probleme mit Arduino....
Hallo zusammen,

Nextion-TFT treibt mich noch in den Wahnsinn.
Zunächst ist es ein tolles Teil, aber so richtig erfolgreich bin ich noch nicht. Ich hatte mich für meine Steuerungsprojekte für ein TFT-Display entschieden. Der Editor ist nach kurzer Zeit gut beherrschbar.
Ich habe meine Probleme mit der bidirektionalen Codeschubserei.

Die Library soll man ja nicht verwenden und die Zusammensetzung des Sendecodes mit Seitenvorwahl ist soweit schon verstanden. Auch habe ich nicht direkt Probleme mit dem Verständnis zu der ganzen Schnittstelle.

Fast alle Versuche mit der Kommunikation scheiterten, viel Sucherei im www und Foren und Tutorials bringen mich nicht richtig weiter.

Meine Versuche im kleinen Rahmen:
1. Text von Arduino nach TFT und zurück
2. Zahlen von Arduino nach TFT und zurück
3. TFT steuert über Arduino einen Digitalausgang, z.B. eine LED
4. Arduino steuert auf dem TFT eine LED, also eine Anzeige rot-grün
5. Abfrage im Arduino nach gedrückten Buttons auf dem TFT


Nun geht es ans Eingemachte, ich hatte ein paar Versuche durchgeführt
1. Arduino sendet Text an Nextion auf ein t0-Feld. -> OK
2. Arduino sendet Integerzahl an Nextion auf ein t0-Feld -> OK ?
3. Arduino sendet Floatzahl an Nextion auf ein t0-Feld -> OK ?
4. Nextion mit zwei Button steuert eine LED am Arduino ??


1. Senden eines Textes von Arduino nach TFT mach ich so:
Code:
Serial.print("p0.t0.txt=\"EIN\"");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);

Senden von Zahlenwerten nach TFT mach ich momentan so:
Ich habe eine kleine Routine erstellt, in dem ich Integer und Float im Zählbetrieb hochzählen lasse und diese Werte an das TFT sende. Nehme ich die aktuellen Werte und sende diese an das TFT auf ein Textfeld, so wird alles korrekt angezeigt, auch die Floatwerte.
Verwende ich ein Zahlenfeld auf dem TFT, geht gar nichts mehr, z.B. so:

Code:
Serial.print("Floatzahl.val=\"");
Serial.print(zahl_float);

Lt. Böcker muss man Zahlen zuerst konvertieren…..was ich vermutet hätte, es geht aber auch so.
Oder denke ich hier total falsch?

Ich muss dazusagen, dass im Editor von Nextion immer der Fehlercode 0x1A gemeldet wird, obwohl die Zahlen richtig angezeigt werden. Also stimmt doch was nicht.


Code:
// Zähler
// Testprogramm zum Testen der Kommunikation an das TFT
// das Problem von µC zu Nextion ist die Konvertierung von Zahl nach String....schreibt Böcker.
// in diesem Beispiel sende ich erfolgreich einen Integerwert und einen Floatwert ans TFT.
// die Felder auf dem TFT sollen z.B. Zahlenwerte anzeigen. Hier muss man die Anzeigefelder aber
// als Textfelder verwenden, sonst gehts nicht.
// Die Pfadangaben mit....page x und dann den entsprechenden Feldnamen ist wie im Beispiel funktionsfähig.
// Code läuft, 11.10.2019/HF



int zahl_int = 0;
float zahl_float = 0.0;

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

void loop() {
  
zahl_int = (zahl_int + 1);
zahl_float = (zahl_float +1.25);

delay(500);

//Integerzahl
//-----------
Serial.print("Integer.txt=\"");
Serial.print(zahl_int);
Serial.write ('"');
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);

//Floatzahl
//---------
Serial.print("Float.txt=\"");
Serial.print(zahl_float);
Serial.write ('"');
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);

//Integerzahl mit Seitenvorwahl
//-----------------------------
Serial.print("page0.Integer.txt=\"");
Serial.print(zahl_int);
Serial.write ('"');
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);

//Text
Serial.print("page0.text0.txt=\"");
Serial.print("TestHallo");
Serial.write ('"');
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);

delay(500);

Serial.print("page0.text0.txt=\"Hallo123!\"");    //andere Schreibweise
//Serial.print("Arduino");
//Serial.write ('"');
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);


Serial.print("page1.t0.txt=\"");
Serial.print("Servus");
Serial.write ('"');
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);

delay(500);

Serial.print("page1.t0.txt=\"");
Serial.print(10);
Serial.write ('"');
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);

//Floatzahl
//---------
Serial.print("Floatzahl.val=\"");
Serial.print(zahl_float);
Serial.write ('"');
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);

}

So, nun muss ich hier mal die Gemeinde um Hilfe bitten, ich dreh mich im Kreis.

Was mir noch Sorgen bereitet, ist die Frage, wie reagiere ich auf eine gedrückten Button auf dem TFT, um im Arduino eine Aktion auszulösen.

Vielleicht kann hier jemand kurz helfen, schon mal vielen Dank.

Gruß Franz
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.10.2019, 15:29 (Dieser Beitrag wurde zuletzt bearbeitet: 14.10.2019 15:47 von Tommy56.)
Beitrag #2
RE: Nextion und die Probleme mit Arduino....
Was heißt OK? OK oder ?
Fehlercode: 0X1A Variable name invalid

Das Nextion kennt keine Floatzahlen, da musst Du ein Textfeld nehmen und den Wert in eine Zeichenkette umwandeln. Diese in " einschließen.

Die Endezeichen (3x0xff) solltest Du in eine Funktion auslagern.

Die Buttons habe ich gerade nicht im Kopf. Evtl. über das Touch-Ereignis.

Gruß Tommy

Edit: Button
0X65 Touch event return data 0X65+Page ID+Component ID+TouchEvent+End
Return this data when the touch event created by the user is pressed.
Definition of TouchEvent: Press Event 0x01, Release Event 0X00)
Instance: 0X65 0X00 0X02 0X01 0XFF 0XFF 0XFF'
Meaning: Page 0, Button 2, Press

Du musst natürlich auch von der seriellen Nextion-Verbindung lesen.

Edit2: Serial ist kein Bus und an Serial hängt bereits USB. Nimm lieber Softwareserial auf anderen Pins.

Edit3: Schau Dir mal diese Diskussion nebenan an. Da hast Du ein schönes Beispiel von Whandall.

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.10.2019, 22:39 (Dieser Beitrag wurde zuletzt bearbeitet: 14.10.2019 22:42 von GuaAck.)
Beitrag #3
RE: Nextion und die Probleme mit Arduino....
Hallo,

mir scheint, Du hast nicht die richtige Doku zu dem Display. Im Anhang als ZIP eine Version, die ich vor knapp 3 Jahren von der Nextion-Homepage geladen habe.

Eine üble Falle hat mich genervt: Auch Leerzeichen müssen sein oder dürfen nicht sein. Und es scheint Produktabhängikeiten zu geben, zu denen ich keine Info gefunden habe. Meine 3,5" Displays können nur 2 Plottkanäle und nicht 4. (Reicht mir völlig aus.)

Der Simulator in der IDE ist gut, das Verhalten unterscheidet sich aber in wenigen Einzelheiten vom Verhalten des Displays.

Zu float: Ich mache das so:
Code:
Serial1.print("t2.txt=");
Serial1.write(0x22);
// iIstwert_dez ist die Temperatur als Integer in 1/10 Grad
Serial1.print(iIstwert_dez / 10);
Serial1.print(",");
Serial1.print(abs(iIstwert_dez) % 10);
....

Ansonsten: Habe gerade wieder eines gekauft....

Gruß
GuaAck
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.10.2019, 08:23
Beitrag #4
RE: Nextion und die Probleme mit Arduino....
Hallo zusammen,

zunächst darf sich keiner stören, dass ich 3x die Serial.write... separat mache. Es ist ein absoluter Basicstand, da Nextion für mich interessant wäre, ich aber noch Probleme habe.

Ich hatte vergessen, dass ich die Versuche mit dem Nextion-Editor machte. Ab heute hab ich ein 4,3" zum Lifetest da. Ich denke, der Simulator macht mir da was vor, was nicht wirklich funktioniert.
Zitat:2. Arduino sendet Integerzahl an Nextion auf ein t0-Feld -> OK ?
Wie schon erwähnt, dass es nicht richtig klappt sieht man an der Fehlermeldung 0x1A, deswegen auch das ? hinter dem OK, also forsche ich weiter.

Das Beispiel von float zum TFT werde ich ausprobieren.

Vielen Dank für Eure Tipps

Gruß Franz
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.10.2019, 11:33 (Dieser Beitrag wurde zuletzt bearbeitet: 17.10.2019 11:41 von becki.)
Beitrag #5
RE: Nextion und die Probleme mit Arduino....
Hallo Franz,

ich habe hier einen kleinen Code wie ich daten an das Nextion sende.

Code:
RtcDateTime currentTime = rtcObject.GetDateTime();
  char date[10];
  char zeit[5];
  //------------Uhrzeit an Display senden ----------------------------  
  sprintf(date, "%02d.%02d.%d",     //%d allows to print an integer to the string
          currentTime.Day(),   //get hour method
          currentTime.Month(), //get minute method
          currentTime.Year()  //get second method
         );
  sprintf(zeit, "%02d:%02d", //:%02d",     //%d allows to print an integer to the string
          currentTime.Hour(),   //get hour method
          currentTime.Minute()//get minute method
         );
  if (oldtime != currentTime.Minute() || test == 70)
  {
  mySerial.print("page0.zeit.txt=\"");
  mySerial.print(zeit);
  mySerial.print('"');
  mySerial.write(0xff);
  mySerial.write(0xff);
  mySerial.write(0xff);
  oldtime = currentTime.Minute();    
  }

mySerial.print("page0.zeit.txt=\""); Lass dich hier nicht von der "zeit" irritieren
Ich habe das Textfeld gleich umbenannt damit ich immer weiß was wo angezeigt wird.

Und so schalte ich die LED´s an und aus
Code:
// ----------- LED´s schalten ---------------
  if (mySerial.available() == 12)
    {
      for (int i = 0; i <= 12; i++)
      {
       empfang[i] = mySerial.read();
      }
      val   = empfang[0];
      id    = empfang[4];
      type  = empfang[8];
    }
        if (val == 1 && id == 1 && type == 53)
        {
         digitalWrite(D3, HIGH);
        }
        else if (val == 0 && id == 1 && type == 53)
        {
          digitalWrite(D3, LOW);  
        }  
        else if (val == 1 && id == 2 && type == 53)
        {
         digitalWrite(D8, HIGH);
        }
        else if (val == 0 && id == 2 && type == 53)
        {
          digitalWrite(D8, LOW);  
        }
// ---------------------------------------------------------

Und wie Tommy schon sagte habe ich im Nextion Editor die folgenden befehle im
Touch Press Event eingetragen
print bt1.val
print bt1.id
print bt1.type


Zu deinem Punkt 4. das kannst du im Nextion direkt programmieren das er die Farbe oder Bilder ändert und du sehen kannst was gedrückt ist.



Ich hoffe das dir das weiter hilft

Gruß Holger
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.10.2019, 11:51 (Dieser Beitrag wurde zuletzt bearbeitet: 17.10.2019 11:51 von Tommy56.)
Beitrag #6
RE: Nextion und die Probleme mit Arduino....
(17.10.2019 11:33)becki schrieb:  Und wie Tommy schon sagte habe ich im Nextion Editor die folgenden befehle im
Touch Press Event eingetragen
print bt1.val
print bt1.id
print bt1.type
Das habe ich nicht gesagt. Ich habe lediglich auf den Weg hingewiesen, wie das Nextion von sich aus den Touch-Event meldet.
Du kannst natürlich eigene Meldungen bauen, dann hast Du aber Probleme mit der Auswertung der "normalen" Meldungen oder Du musst sie im Stil der Originalmeldungen aufbauen, ohne die Originalen Kennungen zu verwenden.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.10.2019, 12:15
Beitrag #7
RE: Nextion und die Probleme mit Arduino....
Hallo Tommy,

Die Original Kennung habe ich ausgeschaltet und verwende nur meine.

Tschuldigung Tommy da habe ich mich falsch ausgedrückt.
Ich wollte nur sagen das du ja auf den weg hinweist das es Meldungen bei dem Touch Event gibt.
Oder eben wie ich es gemacht habe man sich eigene baut.

Gruß Holger
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.10.2019, 13:51
Beitrag #8
RE: Nextion und die Probleme mit Arduino....
Ok, dann kommt sich das nicht gegenseitig in die Quere.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Probleme mit SD-Karten und Displayansteuerung gleichzeitig reichs 7 204 13.11.2019 18:55
Letzter Beitrag: reichs
  Nextion und Arduino kommunizieren nicht alpenpower 7 225 04.11.2019 10:36
Letzter Beitrag: GuaAck
  Probleme mit Blinklicht auf bestimmte Zeit Prospekteur 15 500 20.10.2019 17:08
Letzter Beitrag: Tommy56
  Wert von einem Arduino zu einem zweiten Arduino senden Thorsten_S 9 581 14.10.2019 14:48
Letzter Beitrag: Thorsten_S
  LED-Symbol auf Nextion-TFT darstellen? alpenpower 4 556 16.09.2019 07:00
Letzter Beitrag: alpenpower
  Probleme mit dem Sloeber-Plugin in Eclipse mash3010 4 1.522 26.06.2019 15:15
Letzter Beitrag: MartinZ
  Makeblock mit Scratch programmieren- Probleme Keinen Schimmer 18 12.451 27.05.2019 15:53
Letzter Beitrag: Hellow2
  LAN- Probleme mit Arduino UNO und W5100 Ethernet Shield SpooN 32 2.807 13.05.2019 16:54
Letzter Beitrag: SpooN
  Probleme Mit Sleep Hoeuzitry 1 551 20.04.2019 22:36
Letzter Beitrag: Chopp
  Probleme mit DCF-77 Empfänger von Pollin unkreativ 11 1.334 04.04.2019 10:48
Letzter Beitrag: unkreativ

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste