Zitat Zitat von Rabenauge Beitrag anzeigen
Na sicher geht da so einiges- hab auch ein Midi-Keyboard, wo ein 1.8er TFT drauf hockt, und in Echtzeit alle möglichen Werte ausgibt.
Und ne "Bastel-Tischuhr" mit noch so einem, die Uhrzeit (gross, grafisch), Datum, Temperatur, Luftfeuchte und Luftdruck anzeigt.
Bei beiden erinnere ich mich lebhaft, wie ich jede Engstelle einzeln aufgespürt und eliminiert habe, damit da nix ruckelt.
Was ein Stress-obwohl mir sowas auch Spass macht (ich programmier gerne grafische Geschichten), Aber _irgendwo_ ist halt Ende der Fahnenstange.

Du hast offenbar nie von den Nextions gehört oder?
Teurer-nun ja.
Bissel evtl. schon. Mein 3.5er kam 35€- aber seit ich das Ding hab, käm ich im Leben nicht mehr drauf, was anderes zu nehmen.
Der Vorteil ist hier, dass du den Rechner teilweise gar nicht belastest.
Und: nen "normales" 3.5er hätt ich in Deutschland grad auch nicht billiger bekommen...

Hab meines gerade am Arduino hängen, momentan zeigt es nen LCARS-Startscreen.
Wenn man den antippt, kann man die Helligkeit des Displays einstellen (so in 80 Stufen, mehr machen grad keinen Sinn) mit nem kleinen Slider.
Tippt man wieder, kommt man auf die nächste Seite: das wird eine Art Hauptmenü.
Da gibts bisher aber nur nen Zurück-Button.
Bis an diesen Punkt funktioniert das schon- _ohne_ dass der Arduino überhaupt _irgendwas_ macht!
Der versorgt das Ding bis jetzt lediglich mit Strom....und trotzdem hab ich eine einwandfreie, grafische Ausgabe, die ich auch noch nach Belieben dimmen kann, und noch Platz für viele, viele weitere Seiten.
Das Ganze reagiert übrigens völlig ohne Ruckler, selbst die Hintergrundbilder (screenfüllende Bitmaps) sind, beim Seitenwechsel, _sofort_ da.

Kurz gesagt: ich bin begeistert. Auch wenn die Qualität des Displays selber nich besser ist als die der "alten" TFT's , allemal ein grosser Schritt nach vorne.

Und, da das Ganze echt simpel zu handhaben ist, würd ich auch nem Anfänger nix anderes mehr empfehlen. Es ist _nicht_ schwieriger, als die normalen TFT anzusteuern, eher im Gegenteil.

Aber klar auch: wenn ich mir nur mal eben die Uhrzeit irgendwo ausgeben will, und kann oder wills nicht über den Rechner machen, dann nehm ich auch eher ein kleines I2C-OLED- sowas hat man immer griffbereit.
naja, ca. 3x so teuer, aber auch größer, ist sicher ok, aber die kleineren müssen auch nicht unbedingt schlecht sein.
Aber selber darauf gestoßen bin ich tatsächlich bisher nicht auf die Nexions.

Hast du Lust, mal meinen Benchmark drauf laufen zu lassen, mit deinem Mega?

Bei dir ntl mit anderen TFT-Libs und Pins:

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, 15, 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);
}