- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 16

Thema: "Perfekte" Funktion für 7-Segment-Display schreiben?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    56
    Beiträge
    2.213
    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.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  2. #2
    HaWe
    Gast
    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);
    }

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    56
    Beiträge
    2.213
    Hm- das wird so nix.
    Ich mache dazu mal ein neues Thema auf- hier ging es um was _völlig_ anderes. Bin mir ziemlich sicher, dass die Nextion-Geschichte auch andere interessiert.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  4. #4
    HaWe
    Gast
    ja, gerne, allerdings ist das Thema 7-segment ja durch, hier gings um Vorschläge zu universellen Alternativen, wo sich der Lib-Aufwand lohnt.

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied Avatar von RoboTrader
    Registriert seit
    08.11.2017
    Beiträge
    125
    Blog-Einträge
    1
    Vielen Dank!
    Mich haben aber auch eure Ausführungen zu den unterschiedlichen Displays interessiert. Denn früher oder später werde ich zugreifen. Ich habe mich doch entschieden, erstmal mit dem zu arbeiten, was hier in meinem Starter-Kit enthalten ist und da alles herauszuholen. Auch, wenn ich mit meinem LCD1602 wohl bald verzweifeln werde.

    Ausser ... auch das frage ich gleich in einem neuen Thread.

    Wo seid ihr nun mit der Diskussion hingewandert?
    -30Y: Basic@Schneider_CPC, Kosmos-Baukästen • -20Y: Mindstorms RCX 1.5, Visual Basic, Pascal, php • NOW: Python3, Arduino MEGA, Raspberry Pi 3, NiboBurger, LEGO Boost/Mindstorms

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    56
    Beiträge
    2.213
    Zitat Zitat von RoboTrader Beitrag anzeigen
    Auch, wenn ich mit meinem LCD1602 wohl bald verzweifeln werde.
    Warum das denn? Ich benutz die Dinger ganz gerne, weil sie recht stabil sind (draussen von Vorteil) und-zumindest mit dem I2C-Backpack, sehr einfach zu handeln.
    Oder hast du die Version ohne I2C? Dann empfehle ich, nachrüsten, die Platine gibts bei den einschlägigen Elektronik-Verramschern für wenig Geld.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied Avatar von RoboTrader
    Registriert seit
    08.11.2017
    Beiträge
    125
    Blog-Einträge
    1
    Könnte man die "normale" HDMI-Bildschirm-Ausgabe auch auf einem ILI9341-TFT oder einem 128x64-OLED anzeigen lassen?
    Also die Shell darauf "sehen"?
    -30Y: Basic@Schneider_CPC, Kosmos-Baukästen • -20Y: Mindstorms RCX 1.5, Visual Basic, Pascal, php • NOW: Python3, Arduino MEGA, Raspberry Pi 3, NiboBurger, LEGO Boost/Mindstorms

Ähnliche Themen

  1. "HALLO" auf 7-Segment-Anzeige über JK-Flip-Flops
    Von bigboss im Forum Elektronik
    Antworten: 3
    Letzter Beitrag: 10.12.2012, 10:39
  2. Fehler beim Schreiben "Device signature = 0x000102" USBasp
    Von spelli2001 im Forum AVR Hardwarethemen
    Antworten: 3
    Letzter Beitrag: 27.08.2012, 12:16
  3. Der "perfekte" Elektromagnet
    Von jojo.glaser im Forum Elektronik
    Antworten: 15
    Letzter Beitrag: 02.12.2007, 18:08
  4. Pinbelegung für LED-Segment Display "+1.8."
    Von Jaecko im Forum Elektronik
    Antworten: 3
    Letzter Beitrag: 15.02.2007, 13:24
  5. Alternativen zur Funktion "Wait" bzw. "Waitms
    Von pinoccio im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 30.04.2006, 14:51

Berechtigungen

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

Solar Speicher und Akkus Tests