-         

Ergebnis 1 bis 9 von 9

Thema: Nicht nur für Arduino: Preiswerte Displays mit "Intelligenz"-> Nextion!

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    49
    Beiträge
    1.245

    Nicht nur für Arduino: Preiswerte Displays mit "Intelligenz"-> Nextion!

    Anzeige

    Hallöle.
    Im anderen Faden haben wir ja schon etwas drüber gequatscht, aber dort passt es nicht.
    Es geht um die (mehr oder weniger..)bekannten Displays von Itead- die NEXTION's.

    Was isses?
    Na, eben TFT-Displays (mit Touchscreen, bin grad nicht sicher, ob es die ohne auch gibt), die man wunderbar an nahezu jedem Controller benutzen kann.
    Gibts viele oder? Ja eben. Wurde langweilig, darum hat Itead da mal was wirklich neues "erfunden": diese Displays haben ihren eigenen Controller, eigenen Speicher und, die enhanched-Versionen auch noch nette Kleingkeiten wie eine RTC drauf.

    Aber nicht nur das, sondern sie werden ganz einfach über ne serielle Schnittstelle angesteuert.
    Zwei Leitungen und Stromversorgung. Das wars.
    Auch mit Touch-Funktion wird es nicht mehr.

    Mit nem Arduino kann man beispielsweise über die serielle Schnittstelle Daten zum Display senden, die dann _dort_ ausgewertet und auf wunsch auch grafisch ausgewertet werden. Umgedreht kann das Display aber über die gleiche Schnttstelle natürlich auch Daten zum Arduino schicken!
    Zudem kann man das Display standalone programmieren.
    Um beispielsweise einen Taschenrechner zu bauen, braucht man _gar keine_ Zusatzhardware.

    Wie funktioniert das?
    Ich verlinke unten dann nen hervorragendes Tutorial (gibt noch bessere, aber nich auf deutsch), aber prinzipiell werden die Displays mit einem kostenlosen Editor programmiert.
    Na klar: der läuft auf Windows....und Itead sagt, wenn sie genug Displays verkaufen, entwickeln sie vielleicht nen Webeditor, für die Linux-User *
    Ich hab bissel gesucht, und ein Skript gefunden, mit dem man das Ding auch in Wine zum laufen bekommt.
    In diesem Editor kann man mehrere Bildschirm-Seiten anlegen, Bedien-oder grafische Elemente anordnen, deren Verhalten programmieren, und eben _auch_ festlegen, wie auf Kommandos der seriellen Schnittstelle reagiert werden soll-oder welche Kommandos gesendet werden sollen.

    Am Ende kommt dabei eine compilierte Datei heraus, die man mit nem gewöhnlichen seriellen Programmer ins Display einspielen kann, oder, wie ich (hatte keine Lust Wine die nötigen Berechtigungen einzurichten), spielt man die Datei einfach auf SD-Karte. Die im Display einlegen, Neustart-es liest die ein und behält sie dann auch.
    Der Editor bietet noch mehr: man kann sein Machwerk direkt im Editor simulieren (samt Verhalten usw), kann Schriften einbetten, oder auch direkt vom Editor aus ein vorhandenes Display testen.

    Worin liegen denn nun die Vorteile?
    Naja, schonmal versucht, mit nem UNO ein Display mit, sagen wir 800x600 Bildpunkten in RGB anzusteuern?
    Genau....das wird nix vernünftiges.
    Mit Nextion kein Problem, da sich der Arduino um das Display _überhaupt nicht_ kümmern muss. Er schickt im lediglich die anzuzeigenden Daten (z.B. die Zimmertemperatur), und _alles_ andere erledigt Nextion!
    Im Falle der Temperatur dürft das mit ner Handvoll Bytes gegessen sein, nun kann ja jeder, der Lust hat, mal rechnen, welche Datenmengen man da wie schnell aufs Display bekommt!

    Und: wie fix gehen an nem Uno die Pins aus, wenn man mal ein Touch-TFT anbaut?
    Zwei Leitungen genügen dem Nextion. Wirklich...auch einem ausgewachsenen 7-Zöller!

    Und nochwas: man braucht nicht mal eine Bibliothek (es gibt aber eine), da man einfach nur die entsprechenden Daten seriell sendet- so, als würde man sie zur Konsole schicken.

    Der HaWe hatte gefragt, ob ich mal nen Benchmark laufen lassen würde: würd ich. Aber das geht nicht, da ein normales Arduino-Programm für diese Art Display völlig unbrauchbar ist. Es laufen immer _zwei_ völlig unabhängige Programme-eins im Display und eines auf Arduino. Wenn nich grad das eine Daten zum anderen sendet, dann wissen die gar nix voneinander.
    Ein Benchmark dafür müsste völlig anders aussehen....

    Hier eine sehr gute, deutsche Einführung zu Nextion: Böcker

    Lest die mal einfach, ihr werdets kaum glauben, dass es so einfach sein kann (isses aber, ich habs auch erst nich geglaubt).
    Durch die Möglichkeit, die Displays (in Grenzen) völlig eigenständig zu programmieren, kann man tatsächlich bereits mit einem Display ohne jegliche Peripherie (okok, bissel Strom muss rein) Anwendungen bauen.
    Allerdings: die Programmierung ist eingeschränkt.
    Aber für nen einfachen Taschenrechner reichts, da braucht es nicht mal nen Arduino.
    Auch könnte man z.B. einen Sperrbildschirm, der mit einem einzugebenden Code gesichert ist, schon standalone machen-von dem merkt der Arduino gar nichts, und braucht sich somit auch nicht drum kümmern.
    Selbst kleinere Spiele dürften möglich sein (hm, womöglich auch grössere?)....sowas läuft auch so richtig schnell!

    Fazit nach etwa anderthalbem Tag rumspielen (ehrlich gesagt, ging die meiste Zeit dafür drauf, entsprechende Bitmaps zu erstellen, die man als Hintergrund benutzen, und nachträglich z.B. mit touchsensitiven Felder "überziehen" kann):
    nie wieder weniger....vor allem, da die Teile auch nicht so viel mehr kosten, als die ollen, lahmen, speicherfressenden TFT's, die ich sonst benutzt hab.
    Meins ist übrigens eine 3.5"-Ausführung mit "märchenhaften" 480x320 Pixeln. Kostenunkt etwa 34€- das kleinere 2.5er gibts für rund 25.

    Aber: perfekt sind die Dinger natürlich auch nicht: der Blickwinkel ist "geht so", ähnlich den bekannten, billigen TFT auch, und die Farbtiefe ist nicht so, wie man sie heute erwarten würde- bei Verläufen sieht man Streifen.
    Trotzdem: mal den Preis im Auge behalten....


    *selten so gelacht
    Geändert von Rabenauge (22.11.2017 um 09:22 Uhr)
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    16.02.2014
    Ort
    bei Karlsruhe
    Beiträge
    75
    Klingt interessant, insbesondere für das Geld - danke!

    Mußt allerdings Deinen Link mal anschauen. Der funktioniert nur wenn man sich den Text kopiert, nicht aber durch anklicken.

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Andree-HB
    Registriert seit
    10.12.2004
    Ort
    Bremen
    Alter
    47
    Beiträge
    2.556
    Ich habe auch schon mit diesen Displays gearbeitet, sind echt prima!

    Zwei sehr schöne Projekte mit dem Display:
    http://www.serialcominstruments.com/cnc.php
    http://jennifer-grotheer.de/schaltplan/
    Danke an Alle, die uns bei der erfolgreichen 1.000€-Aktion der IngDiba unterstützt haben! | https://www.hackerspace-bremen.de | http://www.pixelklecks.de |

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    49
    Beiträge
    1.245
    @cdk Danke. Hab das korrigiert.

    Zur Performance Erkenntnisse: ich hab gestern noch ein bisschen herumprobiert und, wenn man screenfüllende Bitmaps lädt, dann dauert das geschätzt eine halbe Sekunde. In meinem Fall sind das schon recht grosse: 480x320. Man sieht dann deutlich, wie sich der Bildschirm von links nach rechts aufbaut, aber nur als "flackern".
    Kann man aber mit leben (es ist nur optisch unschön), eine flüssige Bedienung ist damit allemal möglich-man muss ja die betreffende Seite auch erst "wahrnehmen".
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    2.452
    Zitat Zitat von Rabenauge Beitrag anzeigen
    @cdk Danke. Hab das korrigiert.

    Zur Performance Erkenntnisse: ich hab gestern noch ein bisschen herumprobiert und, wenn man screenfüllende Bitmaps lädt, dann dauert das geschätzt eine halbe Sekunde. In meinem Fall sind das schon recht grosse: 480x320. Man sieht dann deutlich, wie sich der Bildschirm von links nach rechts aufbaut, aber nur als "flackern".
    Kann man aber mit leben (es ist nur optisch unschön), eine flüssige Bedienung ist damit allemal möglich-man muss ja die betreffende Seite auch erst "wahrnehmen".
    Die "Schnelliggkeit" eines Displays und seiner Treiber bemisst sich ja gerade in der Geschwindigkeit, in der es in der Lage ist, Texte und Grafiken in schneller Folge anzuzeigen, und zwar direkt, ungepuffert.
    En solcher Test ist ja in einem bereits verlinkten Video (von Marek Buriak) sehr gut zu erkennen, und man sieht, welche Performancesteigerung erreichbar ist, wenn man nur andere Treiberprogramme verwendet:

    https://www.youtube.com/watch?v=vnEwzN14BsU

    Ähnliche Benchmarktests gibt es auch von allen möglichen anderen Grafiktreiber-Libs, nur alle sind sie immer ein wenig anders, also nicht direkt vergleichbar.

    Auch in "meinem" benchmark passiert nichts anderes, auch ich mache nur direkt aufeinanderfolgede Display-Ausgaben (verschiedene ungepufferte Textzeilen und verschiedene ungepufferte Grafiken, wie Linien, Kreise, Dreiecke, Rechtecke, Ellipsen, nur umrandet oder auch gefüllt), so wie man sie auch im täglichen Leben auf Grafikdisplays braucht. A-Bär: Mein test ist vereinfacht und standardisiert für etliche verschiedene Plattformen, jetzt kann man die Leistung direkt miteinander vergleichen.

    Hier kann man extrem gut die Performance auf verschiedenen Pattformen (MCUs, SoCs, TFTs) beurteilen, und da die sehr simplen Display-Befehle in allen gängigen Grafik-Libs (H.Karlsen UTFT, Adafruit GFX, Marek.Buriak) vorhanden sind und auch sehr ähnlich aussehen, müsste es sehr einfach sein, diesen auch aufs Nextion anzuwenden, denn genau das ist es doch, was man auch für seine eigenen Grafik-Programme benötigt, und auch dann will man ja nichts anderes als mal eben ein paar Kreise (Tachometer), Rechtecke (Rahmen), Zeiger (Linien, Dreiecke) und Zahlen und Beschriftungen (Text) auf verschiedenen Farb-Hintergründen (gefüllte Flächen) anzuzeigen.

    Daher nochmal der Testcode für Adafruit (identischer Code auf ILI9341 und auf OLED SSD1306), zum Vergleich auch für Marek Buriaks ILI9341 - man sieht, wie ähnlich die Codes einander sind:

    Code:
    // hw brickbench
    // Adafruit ILI9340 / ILI9341
    
    #include "SPI.h"
    #include "Adafruit_GFX.h"
    #include "Adafruit_ILI9340.h"
    
    
    // for Due/Mega/Leonardo use the hardware SPI pins (which are different)
    
    #define _cs 10
    #define _dc 9
    #define _rst 8
    
    
    // Using software SPI is really not suggested, its incredibly slow
    // Adafruit_ILI9340 tft = Adafruit_ILI9340(_cs, _dc, _mosi, _sclk, _rst, _miso);
    // Use hardware SPI
    
    Adafruit_ILI9340 tft = Adafruit_ILI9340(_cs, _dc, _rst);
    
    
    
    #define  WHITE     ILI9340_WHITE
    #define  TimerMS() millis()
    
    unsigned long runtime[8];
    
    
    void TFTprint(char sbuf[], int16_t x, int16_t y) {
      tft.setCursor(x, y);
      tft.print(sbuf);
    }
       
    
    inline void displayValues() {
    
      char buf[120];
      tft.fillScreen(ILI9340_BLACK); // clrscr()
    
        sprintf (buf, "%3d %9ld  int_Add",    0, runtime[0]); TFTprint(buf, 0,10);
        sprintf (buf, "%3d %9ld  int_Mult",   1, runtime[1]); TFTprint(buf, 0,20);
        sprintf (buf, "%3d %9ld  float_op",   2, runtime[2]); TFTprint(buf, 0,30);
        sprintf (buf, "%3d %9ld  randomize",  3, runtime[3]); TFTprint(buf, 0,40);
        sprintf (buf, "%3d %9ld  matrx_algb", 4, runtime[4]); TFTprint(buf, 0,50);
        sprintf (buf, "%3d %9ld  arr_sort",   5, runtime[5]); TFTprint(buf, 0,60);
        sprintf (buf, "%3d %9ld  TextOut",    6, runtime[6]); TFTprint(buf, 0,70);
        sprintf (buf, "%3d %9ld  Graphics",   7, runtime[7]); TFTprint(buf, 0,80);
       
       
    }
    
    
    int32_t test_TextOut(){
      int  y;
      char buf[120];
     
      for(y=0;y<20;++y) {   
        tft.fillScreen(ILI9340_BLACK); // clrscr()
        sprintf (buf, "%3d %9d  int_Add",    y, 1000);  TFTprint(buf, 0,10);
        sprintf (buf, "%3d %9d  int_Mult",   0, 1010);  TFTprint(buf, 0,20);
        sprintf (buf, "%3d %9d  float_op",   0, 1020);  TFTprint(buf, 0,30);
        sprintf (buf, "%3d %9d  randomize",  0, 1030);  TFTprint(buf, 0,40);
        sprintf (buf, "%3d %9d  matrx_algb", 0, 1040);  TFTprint(buf, 0,50);
        sprintf (buf, "%3d %9d  arr_sort",   0, 1050);  TFTprint(buf, 0,60);
        sprintf (buf, "%3d %9d  displ_txt",  0, 1060);  TFTprint(buf, 0,70);
        sprintf (buf, "%3d %9d  testing...", 0, 1070);  TFTprint(buf, 0,80);
    
      }
      return y;
    }
    
    
    int32_t test_graphics(){
      int y;
      char buf[120];
     
     
      for(y=0;y<100;++y) {
        tft.fillScreen(ILI9340_BLACK);
        sprintf (buf, "%3d", y);  TFTprint(buf, 0,80); // outcomment for downwards compatibility
    
        tft.drawCircle(50, 40, 10, WHITE);
        tft.fillCircle(30, 24, 10, WHITE);
        tft.drawLine(10, 10, 60, 60, WHITE);
        tft.drawLine(50, 20, 90, 70, WHITE);
        tft.drawRect(20, 20, 40, 40, WHITE);
        tft.fillRect(65, 25, 20, 30, WHITE);
        tft.drawEclipse(70, 30, 15, 20); //  original test
        // tft.drawCircle(70, 30, 20, WHITE); // alternatively, just if no drawEclipse is avaiable in the Arduino graph libs!
    
      }
      return y;
    }
    
    
    
    int test(){
    
      unsigned long time0, x, y;
      double s;
      char  buf[120];
      int   i;
      float f;
    
     
     
      // lcd display text / graphs
     
      time0=TimerMS();
      s=test_TextOut();
      runtime[6]=TimerMS()-time0;
      sprintf (buf, "%3d %9ld  TextOut", 6, runtime[6]); Serial.println( buf);
      TFTprint(buf, 0,70);
     
      time0=TimerMS();
      s=test_graphics();
      runtime[7]=TimerMS()-time0;
      sprintf (buf, "%3d %9ld  Graphics", 7, runtime[7]); Serial.println( buf);
      TFTprint(buf, 0,80);
     
    
      Serial.println();
     
      y = 0;
      for (x = 0; x < 8; ++x) {
          y += runtime[x];
      }
     
      displayValues();
     
      sprintf (buf, "gesamt ms: %9ld ", y);
      Serial.println( buf);
      TFTprint(buf, 0,110);
     
      x=50000000.0/y;
      sprintf (buf, "benchmark: %9ld ", x);
      Serial.println( buf);
      TFTprint(buf, 0,120);
    
      return 1;
    
    }
    
    
    
    void setup() {
     
      Serial.begin(9600);
     
      // Setup the LCD
      tft.begin();
      tft.setTextColor(ILI9340_WHITE); tft.setTextSize(1);
     
    }
    
    void loop() {
      char  buf[120];
      test();
     
      sprintf (buf, "Ende HaWe brickbench");   
      Serial.println( buf);
      TFTprint(buf, 0, 140);
     
      while(1);
    }
    Code:
    // hw brickbench
    // ILI9341_due NEW lib by Marek Buriak http://marekburiak.github.io/ILI9341_due/
    
    
    #include <SPI.h>
    
    #include "ILI9341_due_config.h"
    #include "ILI9341_due.h"
    #include "SystemFont5x7.h"
    //#include "Streaming.h"
    
    // For the Adafruit shield, these are the default.
    /*
    #define TFT_RST 8
    #define TFT_DC 9
    #define TFT_CS 10
    // Use hardware SPI (on Uno, #13, #12, #11) and the above for CS/DC
    */
    
    #define    tft_cs     49
    #define    tft_dc     48
    #define    tft_rst     0
    
    
    ILI9341_due tft = ILI9341_due(tft_cs, tft_dc); // <<<<<<<<<<<<<<<<<<<< drop RESET pin !
    
    char textBuff[20];
    
    // Color set
    #define   BLACK           0x0000
    #define   RED             0xF800
    #define   GREEN           0x07E0
    //#define   BLUE            0x001F
    #define   BLUE            0x102E
    #define CYAN            0x07FF
    #define MAGENTA         0xF81F
    #define YELLOW          0xFFE0
    #define ORANGE          0xFD20
    #define GREENYELLOW     0xAFE5
    #define DARKGREEN       0x03E0
    #define WHITE           0xFFFF
    
    uint16_t  color;
    uint16_t  colorFONDO = BLACK;
    
    
    #define  TimerMS() millis()
    
    unsigned long runtime[8];
    
    
    void TFTprint(char sbuf[], int16_t x, int16_t y) {
      tft.cursorToXY(x, y);
      tft.printAt(sbuf,x,y);
    }
       
    
    inline void displayValues() {
    
      char buf[120];
      tft.fillScreen(BLACK); // clrscr()
    
        sprintf (buf, "%3d %9ld  int_Add",    0, runtime[0]); TFTprint(buf, 0,10);
        sprintf (buf, "%3d %9ld  int_Mult",   1, runtime[1]); TFTprint(buf, 0,20);
        sprintf (buf, "%3d %9ld  float_op",   2, runtime[2]); TFTprint(buf, 0,30);
        sprintf (buf, "%3d %9ld  randomize",  3, runtime[3]); TFTprint(buf, 0,40);
        sprintf (buf, "%3d %9ld  matrx_algb", 4, runtime[4]); TFTprint(buf, 0,50);
        sprintf (buf, "%3d %9ld  arr_sort",   5, runtime[5]); TFTprint(buf, 0,60);
        sprintf (buf, "%3d %9ld  TextOut",    6, runtime[6]); TFTprint(buf, 0,70);
        sprintf (buf, "%3d %9ld  Graphics",   7, runtime[7]); TFTprint(buf, 0,80);
       
       
    }
    
    
    int32_t test_TextOut(){
      int  y;
      char buf[120];
     
      for(y=0;y<20;++y) {   
        tft.fillScreen(BLACK); // clrscr()
        sprintf (buf, "%3d %9d  int_Add",    y, 1000);  TFTprint(buf, 0,10);
        sprintf (buf, "%3d %9d  int_Mult",   0, 1010);  TFTprint(buf, 0,20);
        sprintf (buf, "%3d %9d  float_op",   0, 1020);  TFTprint(buf, 0,30);
        sprintf (buf, "%3d %9d  randomize",  0, 1030);  TFTprint(buf, 0,40);
        sprintf (buf, "%3d %9d  matrx_algb", 0, 1040);  TFTprint(buf, 0,50);
        sprintf (buf, "%3d %9d  arr_sort",   0, 1050);  TFTprint(buf, 0,60);
        sprintf (buf, "%3d %9d  displ_txt",  0, 1060);  TFTprint(buf, 0,70);
        sprintf (buf, "%3d %9d  testing...", 0, 1070);  TFTprint(buf, 0,80);
    
      }
      return y;
    }
    
    
    int32_t test_graphics(){
      int y;
      char buf[120];
     
     
      for(y=0;y<100;++y) {
        tft.fillScreen(BLACK);
        sprintf (buf, "%3d", y);  TFTprint(buf, 0,80); // outcomment for downwards compatibility
    
        tft.drawCircle(50, 40, 10, WHITE);
        tft.fillCircle(30, 24, 10, WHITE);
        tft.drawLine(10, 10, 60, 60, WHITE);
        tft.drawLine(50, 20, 90, 70, WHITE);
        tft.drawRect(20, 20, 40, 40, WHITE);
        tft.fillRect(65, 25, 20, 30, WHITE);
        //tft.drawEllipse(70, 30, 15, 20, WHITE); //  original test
        tft.drawCircle(70, 30, 20, WHITE); // alternatively, just if no drawEclipse is avaiable in the Arduino graph libs!
    
      }
      return y;
    }
    
    
    
    int test(){
    
      unsigned long time0, x, y;
      double s;
      char  buf[120];
      int   i;
      float f;
    
     
     
      // lcd display text / graphs
     
      time0=TimerMS();
      s=test_TextOut();
      runtime[6]=TimerMS()-time0;
      sprintf (buf, "%3d %9ld  TextOut", 6, runtime[6]); Serial.println( buf);
      TFTprint(buf, 0,70);
     
      time0=TimerMS();
      s=test_graphics();
      runtime[7]=TimerMS()-time0;
      sprintf (buf, "%3d %9ld  Graphics", 7, runtime[7]); Serial.println( buf);
      TFTprint(buf, 0,80);
     
    
      Serial.println();
     
      y = 0;
      for (x = 0; x < 8; ++x) {
          y += runtime[x];
      }
     
      displayValues();
     
      sprintf (buf, "gesamt ms: %9ld ", y);
      Serial.println( buf);
      TFTprint(buf, 0,110);
     
      x=50000000.0/y;
      sprintf (buf, "benchmark: %9ld ", x);
      Serial.println( buf);
      TFTprint(buf, 0,120);
    
      return 1;
    
    }
    
    
    
    void setup() {
     
      Serial.begin(115200);
     
      // Setup the LCD
    
      tft.begin();
      tft.setRotation(iliRotation270);
      tft.fillScreen(colorFONDO);
      tft.setFont(SystemFont5x7);
    
      tft.setTextColor(WHITE);
    
      Serial.println("tft started");
     
    }
    
    void loop() {
      char  buf[120];
      test();
     
      sprintf (buf, "Ende HaWe brickbench");   
      Serial.println( buf);
      TFTprint(buf, 0, 140);
     
      while(1);
    }

    weitere flink portierte Testcodes ab hier (runterblättern): http://www.mindstormsforum.de/viewto...&t=8491#p68170,
    komplette Benchmark-Tests (außer Grafik auch Rechenperformance) finden sich ab hier: http://www.mindstormsforum.de/viewto...&t=8095#p63773

    Dieser Brickbench Test läuft sogar ohne nennenswerte Änderungen auf einem Raspi mit 1080p HDMI screen und openVG Grafik, oder alternativ auf einem Raspi mit SSD1306 oder SH1106 OLED per I2C
    http://www.mindstormsforum.de/viewto...p=67838#p67839
    http://www.mindstormsforum.de/viewto...p=69371#p69370
    und sogar auf Lego NXTs und EV3s mit NXC, nxtOSEK C, RobotC, GCC C++, Java, C# und ev3Basic!

    Und Code-Änderungen (z.B. andere Grafiken als Zusatz oder Ersatz, an anderer Stelle) müsste man in der Praxis für eigene Programme/Projekte ebenso schnell und simpel umschreiben können.

    Daher würde ich auch fürs Nextion erwarten, dass man in ähnlicher Weise ruck-zuck diesen einfachen Testcode portieren können müsste.
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  6. #6
    Erfahrener Benutzer Roboter Genie Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    49
    Beiträge
    1.245
    Hm- dann mach das doch einfach mal.
    Sicher geht das, dass man dem Teil sagt: zeichne dies, zeichne jenes, und lass dabei mal die Stoppuhr mitlaufen.
    Mir aber ist es zu mühselig denn, egal, welchen tollen Benchmark man laufen lässt, schneller wirds davon dann auch nicht.
    Also rein akademische Forschung.
    Sicherlich, nicht uninteressant-aber meine Wetterstation fasziniert mich da entschieden mehr.
    Aber wenn du willst, dann schreib mal was fürs Nextion- der Editor ist frei und kostenlos verfügbar, kannst du also machen. Das kann ich dann gerne mal einspielen, und dir die Resultate geben.
    Ich brauch dann lediglich die, für _mein_ Display compilierte Datei, die ist schnell mal eingespielt.
    Es ist das NX4832T035.
    Falls du den Arduino einbeziehen willst: es hängt ein MEGA 2560 dran, Schnittstelle ist Serial1.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    2.452
    neinnein, das muss schon jemand machen, der da eingearbeitet ist und die API Funktionen kennt, aber schließlich sind es doch nur solche wie
    tft.setCursor(x, y);
    tft.print(strbuf);
    oder
    tft.fillCircle(x, y, radius, color);

    alle wie in meinem Code eben auch
    - oder?
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    49
    Beiträge
    1.245
    Lies die verdammte Anleitung.
    "Im Prinzip, ja".
    Ganz ehrlich: den Test würd ich machen, wenn ich ein *.hmi-File hätte, aber das selber umsetzen-nee, wozu denn.
    Wie oben schon geschrieben: mir bringt so ein Benchmark nix, weil das Display davon auch nich schneller wird, warum also Zeit darauf verschwenden?
    Soviel davon hab ich auch wieder nicht....
    Ganz einfach eigentlich: du willst den Test-dann schreib ihn.
    Oder wer anderer-ich hab zu tun.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    2.452
    Zitat Zitat von Rabenauge Beitrag anzeigen
    Lies die verdammte Anleitung.
    "Im Prinzip, ja".
    Ganz ehrlich: den Test würd ich machen, wenn ich ein *.hmi-File hätte, aber das selber umsetzen-nee, wozu denn.
    Wie oben schon geschrieben: mir bringt so ein Benchmark nix, weil das Display davon auch nich schneller wird, warum also Zeit darauf verschwenden?
    Soviel davon hab ich auch wieder nicht....
    Ganz einfach eigentlich: du willst den Test-dann schreib ihn.
    Oder wer anderer-ich hab zu tun.
    also, ich habe doch das Display gar nicht, wie soll ich da den Test laufen lassen?
    Auch später, für eigene Projekte, wo Turtlegrafiken (Roboter-Weg über die Zeit plus entdeckte Hindernisse aufzeichnen) bewegte Figuren bei Spielen (Pong, Moonlander, Conway's Game of Life), Oszillografen (graph. Monitoring von Analog-Werten) oder einfach auch mal abwechselnd nur ein paar tabellarische Zahlenwerte und Textstrings (z.B. fürs Debuggen) gebraucht werden, muss ich doch schnell mal ein paar Dinge auf dem Display ausgeben können, und das flexibel, für mehrere verschiedene aktuelle Projekt-Programme willkürlich, bedarfsmäßig, abwechselnd nacheinander.
    Aber wenn das so kompliziert ist, eben mal ein paar Textzeilen, Kreise und Rechtecke nacheinander in for() Schleifen durchlaufen zu lassen, dann weiß ich ehrlich gesagt nicht, ob das Teil wirklich empfehlenswert und nicht tatsächlich viel zu kompliziert ist.
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

Ähnliche Themen

  1. Antworten: 10
    Letzter Beitrag: 01.11.2017, 13:53
  2. Künstliche Intelligenz: "Alpha Go spielt wie eine Göttin"
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 09.03.2016, 12:21
  3. Arduino kann einen "acos" nicht berechnen. [gelöst
    Von Zimt Creme im Forum Software, Algorithmen und KI
    Antworten: 10
    Letzter Beitrag: 09.02.2011, 08:47
  4. Idee für Ansteuerung "mehrerer" 7-Seg.-Displays?
    Von Jaecko im Forum Elektronik
    Antworten: 14
    Letzter Beitrag: 29.01.2008, 12:49
  5. IO-Pins lassen sich nicht richtig mit "bsf"/"
    Von keiang im Forum PIC Controller
    Antworten: 3
    Letzter Beitrag: 21.07.2005, 20:12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •