Go Down

Topic: Arduino und Nextion als Sensorsteuerung: Keine Werte-Anzeige im Textfeld... (Read 76 times) previous topic - next topic

Badger1875

´n Abend Gemeinde,

ich hab mir ein kleines Script zusammengefrickelt, mit dem ein Sensorwagen durch einen Schrittmotor an eine bestimmte Stelle gefahren werden kann, die eingegebene und angefahrenen Position wird auf einem kleinen Nokia-Display (5110) angezeigt. Das Display macht was es soll, nur ist es eben sehr klein.

Hier wird im Nokis-Script ein aus mehreren Tatstendrücken erzeugter Wert berechnet
Code: [Select]
else {  // Prüfen ob vierte Ziffer eingegeben wurde
      vierteziffer=x;
      String displayvalue = (String(ersteziffer) + String(zweiteziffer) + String(dritteziffer) + String(vierteziffer));
      drawnokiascreen(displayvalue);

      }


und hier dann angezeigt:
Code: [Select]
void drawnokiascreen(String y) {
 
    u8g.firstPage();
    do {
      u8g.drawHLine(0, 15, 84);
      u8g.drawVLine(45, 16, 38);
      u8g.drawHLine(0, 32, 84);
      u8g.setFont(u8g_font_profont10);
      u8g.drawStr(5, 10, "Eingabe Distanz");
      u8g.setPrintPos(10,27);
      u8g.print(y); //Zeigt eingegebene Distanz an     
      u8g.drawStr(48, 27, "1/10 mm");
      u8g.drawStr(0, 44, "Baer-Pos.");
      u8g.setPrintPos(54,44);
      u8g.print(baer); // Zeigt die aktuelle Position des Bärs an
    }
      while( u8g.nextPage() );
 
}


Soweit so gut...

Badger1875

Nun hab ichs versucht, das Ganze aufs Nextion umzufrickeln und bin dann hier gelandet:
Code: [Select]
else {  // Prüfen ob vierte Ziffer eingegeben wurde
      vierteziffer=x;
      String displayvalue = (String(ersteziffer) + String(zweiteziffer) + String(dritteziffer) + String(vierteziffer));
      drawnextionscreen(displayvalue);

      }


Um das obige anzuzeigen, hab ich dann wie folgt die Textfelder angesprochen:
Code: [Select]

 void drawnextionscreen(String y) {
 
    t0.setText(y);
    t1.setText(baer);
       
    u8g.firstPage();
    do {
      u8g.drawHLine(0, 15, 84);
      u8g.drawVLine(45, 16, 38);
      u8g.drawHLine(0, 32, 84);
      u8g.setFont(u8g_font_profont10);
      u8g.drawStr(5, 10, "Eingabe Distanz");
      u8g.setPrintPos(10,27);
      u8g.print(y); //Zeigt eingegebene Distanz an     
      u8g.drawStr(48, 27, "1/10 mm");
      u8g.drawStr(0, 44, "Baer-Pos.");
      u8g.setPrintPos(54,44);
      u8g.print(baer); // Zeigt die aktuelle Position des Bärs an
    }
      while( u8g.nextPage() );
 
}

um dann die folgende Fehlermeldung zu erhalten:
Code: [Select]
C:\Program Files (x86)\Arduino\libraries\Nextion/NexText.h:53:10: note:   no known conversion for argument 1 from 'String' to 'const char*'

E:\Arbeitsordner\Freddie\Arduino\Sensorsteuerung\Sensor_1_Nextion_roh\Sensor_1_Nextion_1\Sensor_1_Nextion_1.ino: In function 'void drawnextionscreen(String)':

Sensor_1_Nextion_1:317: error: no matching function for call to 'NexText::setText(String&)'

     t0.setText(y);

                 ^

E:\Arbeitsordner\Freddie\Arduino\Sensorsteuerung\Sensor_1_Nextion_roh\Sensor_1_Nextion_1\Sensor_1_Nextion_1.ino:317:17: note: candidate is:

In file included from C:\Program Files (x86)\Arduino\libraries\Nextion/Nextion.h:33:0,

                 from E:\Arbeitsordner\Freddie\Arduino\Sensorsteuerung\Sensor_1_Nextion_roh\Sensor_1_Nextion_1\Sensor_1_Nextion_1.ino:10:

C:\Program Files (x86)\Arduino\libraries\Nextion/NexText.h:53:10: note: bool NexText::setText(const char*)

     bool setText(const char *buffer);   

          ^

C:\Program Files (x86)\Arduino\libraries\Nextion/NexText.h:53:10: note:   no known conversion for argument 1 from 'String' to 'const char*'

Sensor_1_Nextion_1:318: error: no matching function for call to 'NexText::setText(String&)'

     t1.setText(baer);


Ich weiß nun nicht mehr weiter, hab schon einiges gelesen, aber ich versteh gerade nur noch Bahnhof!


Vielen Dank schon mal im Voraus!!!


Freddie

Hartig_jue

du brauchst itoa um die Zahlen in char um zuwandelt die Lib kann mit Zahlen in einem Textfeld nichts anfangen

Badger1875

ITOA???

helf mir mal bitte auf die Beine...

Ich sitz seit heute morgen an dem Krimskrams und so wie mir gearde der Schädel brummt, brauch ich da jetzt mal ´ne richtig gute Portion Startpilot...

Freddie

SkobyMobil

Hallo,
"brauch ich da jetzt mal ´ne richtig gute Portion Startpilot..."

Sollst Du haben. Das, was Du da vor hast- ist ideal für das Nextion.
Als erstes kloppst Du einmal die verdammte NextionLib in die Tonne.
Dann liest Du Dir die Dokumentation zum Nextion durch.

Dort erstellst Du Dir ein NrFeld für die Position, oder ein TextFeld wenn Du es mit Komma (122,49) haben
willst.
Dann bastels Du Dir einen Slider auf dem Nextion. Links Position 0, rechts Positon 100.- was weiß ich.
Dafür braucht es auf dem Nextion "nichts" und auf dem Arduino nicht viel.
Das Nextion übergibt einfach die Position an den Arduino- und der steuert den Motor.
Gruß und Spaß
Andreas
P.S.
wenn Du unbedingt etwas zeichnen willst, dann mache das mit dem Nextion- ist sau schnell.
Zeichnen geht auch mit Variable und Schleife.
Gruß und Spaß
Andreas
P.S. "ITOA???" Integer (Zahl) zu Ascii (Text)
die zweite Maus bekommt den Speck...

Badger1875

Hoi Andreas,

Danke für Deine Antwort!

Ich hab schon beim Lesen einiger Freds und Posts von Dir mitbekommen, dass Du nicht gerade der Freund von den ganzen Libs bist.
Gut, ich würds ja mal probieren, nur mein Problem wird sein, dass ich die Zahlen mit einer Tastaur generieren muss, da Einsatzumgebung von dem Display nichts für einen Touchscreen ist. Zudem sind die Werte zwischen 0 und 2500 mit einem Slider auf dem Display wohl nur schwer einzustellen und es kommt hier wirklich auf die letzte Stelle an....

Es kann doch wohl nicht sein, dass ich diese Minimalanforderung mit dem Ding nicht gebacken kriege....


Freddie

Tommy56

Warum willst Du ein Touchscreendisplay einsetzen, wenn die Umgebung für Touchscreen nicht geeignet ist?

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

SkobyMobil

Hallo,
"dass ich die Zahlen mit einer Tastaur generieren muss"
Auch das ist keine Problem, Nextion liefert ne menge Keyboard´s mit.
Aber mach man.
Hier noch etwas, das helfen könnte
ITOA

Das könnte auch funktionieren:

 
Code: [Select]

char WertFürNextion[15];
  dtostrf(MeinWert, 0, 1, WertFürNextion);


Gruß und Spaß
Andreas
die zweite Maus bekommt den Speck...

Badger1875

Moinsen Tommy,

Warum willst Du ein Touchscreendisplay einsetzen, wenn die Umgebung für Touchscreen nicht geeignet ist?

Gruß Tommy
warum ein Touchscreen?

Das ist ganz einfach...
...ich hätte gerne ein Display mit 3.5" und möchte keins in herkömmlicher Technik, mit der seriellen Schnittstelle ist das Nextion eben die Wahl gewesen.
Außerdem ist der Preis von einem 08/15-Display mit shield teurer als der von einem Nextion bei gleicher Größe. Über die Verdrahtung brauchen wir hier auch nicht reden und beim Nextion belaste ich auch den Arduino nicht mit zusätzlichen Rechenaufgaben zur Darstellung des Bildschirminhaltes.

Wenn ich allerdings die o.a. Probleme nicht gebacken bekomme (ohne das ich jetzt noch 'C' komplett lernen muss) werd ich wohl in den sauren Apfel beissen müssen und doch ein 08/15 Display verwenden!

Grüße

Freddie

Badger1875

..."dass ich die Zahlen mit einer Tastaur generieren muss"
Auch das ist keine Problem, Nextion liefert ne menge Keyboard´s mit...
Jupp, aber eben immer auf dem Touchscreen. Ich hab einiges an Staub und Dreck in der Luft, damit dürfte ich mir in kurzer Zeit das Display ruinieren und zusätzlich ist es imho für diese Zwecke einfach zu klein.
Hier noch etwas, das helfen könnte
ITOA

Das könnte auch funktionieren:

 
Code: [Select]

char WertFürNextion[15];
  dtostrf(MeinWert, 0, 1, WertFürNextion);

...
Das werdi ich mal heute ausprobieren, mal sehen ob ich damit zuerechtkomme!

Danke für eure Hilfen und Ratschläge, so fühl ich mich wenigstens nicht alleine!!!

Grüße

Freddie

Serenifly

Wenn ich allerdings die o.a. Probleme nicht gebacken bekomme (ohne das ich jetzt noch 'C' komplett lernen muss) werd ich wohl in den sauren Apfel beissen müssen und doch ein 08/15 Display verwenden!
Auch ohne Touchscreens und TFT sind Displays und Menüs nichts was man mal schnell einfach so programmiert ohne zu wissen was man tut. Auch auf einem einfachen 20x4 LCD musst du z.B. Werte auf eine konstante Breite formatieren damit nicht Text stehen bleibt.

Ein paar grundlegende Kenntnisse über Datentypen und wie diese konvertiert werden schaden nie.

Badger1875

...nichts was man mal schnell einfach so programmiert ohne zu wissen was man tut...

...in paar grundlegende Kenntnisse über Datentypen und wie diese konvertiert werden schaden nie...
Hallo Serenifly,
da brauchen wir uns auch nicht drüber unterhalten und ich geb Dir uneingeschränkt Recht!
Momentan muss ich dass sch...Display einfach nur zum Laufen kriegen. Wie gesagt es fehlt nur die Wandlung der errechneten Daten vom Arduino auf die erwarteten Daten vom Display, alles andere funktioniert.

Grüße

Freddie

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy