da die GLCDs immer billiger werden, schiele ich immer mehr nach einem größerem Display.
Aktuell hab ich ein 4,3" in meiner Steuerung. Ist ja schon nicht schlecht, aber 7" wär natürlich was anderes
Allerdings denk ich auch etwas an die "Arbeit" für meinen Arduino.
Da würd ich gern etwas Basics mit euch diskutieren,
Ich stell jetzt mal ein paar Thesen auf.
1.) Für den Arduino ist es ein Befehl eine Linie zu zeichnen. Die "zeitliche Belastung" dafür ist unabhängig von der Größe des Displays und unabhängig von der Länge der Linie. Beim zweiten Teil bin ich mir nicht sicher. Da wäre es interessant zu wissen, ob die Umsetzung von Start-und Endpunkt in Pixel am Arduino, oder im Chip des Displays passiert.
2.) Wenn ich den Bildschirm gedanklich in zwei Hälften teile, und diese geschickt mit Informationen bespiele, dann ist es für den Arduino auch nicht mehr "Arbeit", als wenn ich auf einem kleineren Display zwei Seiten projektiere und die immer umschalte. Ich seh halt bei einem größeren GLCD mehr Informationen auf einmal.
Nicht die Größe sondern die Auflösung ( pixel) ist ausschlaggebend.
Wenn der Bilschirminhalt im Arduino zwischengespeichert werden muß braucht der Arduino viel RAM, den er nicht hat (Arduino Due ausgenommen). Wenn der Kontroller Chip des Displays den Bildschirmspeicher bereitstellt kann auch ein "kleiner" Arduino das Display bedienen. Kauf auf alle Fälle ein Display das explizit für Arduino geeignet beschrieben wird und wo der Verkäufer eine Bibliothek und Beispiele zur Ansteuerung mit Arduino bereitstellt.
Die Position der Pixel für zB ein Strich berechnet immer Arduino.
Wie gesagt der Bildschiraufbau bzw dessen Berechnung ist nicht das Problem. Problem ist der Speicher.
Um was für ein Display handelt es sich denn? Ist es Monochrom oder Farbe?
Grundsätzlich gibt es Drei sorten von graphischen Displays:
A) Ganz ohne eigenem Speicher, d.h. die daten werden ständig vom Controller zum Display geschaufelt. Das ist mit einem Uno praktisch nicht machbar.
B) Semi-Intelligentes Display mit eigenem Graphik-Speicher. Allerdings kann man praktisch nur (wie Uwe schon sagte) ein Pixel setzen.
C) Display mit eigenen high-level Graphik-Routinen. Logischerweise teuer. Nur diese Displays können ganze Linien selbständig zeichnen.
Das, was man so üblicherweise zu erschwinglichen Preisen zu kaufen bekommt sind Typ B) Displays. Die gibt es so ab $5 aus Fernost. Libraries wie die interne TFT.h, die UTFT, die Adafruit libs unterstützen recht viele Typ B) Controller.
Aber Achtung: Displays zwischen 128x128 bis 240x320 werden oft verkauft und werden prima unterstützt. Wenn es größenmäßig darüberhinaus geht, sollte man vor dem Kauf nach einer geeigneten Library suchen.
Wenn wir also von Typ B) Displays reden, dann steigt der Zeitaufwand für das Linien-Zeichnen linear mit der Länge der Linie.
Entscheident ist natürlich die Dimension des Displays in Pixel. Wenn dein 4.3" Display 320x240 groß ist, aber das 7" Display 800x600 hat, dann könnte es schon passieren, dass Du mehr zeichnen musst. Da dann vielleicht auch das DPI (Verhältnis Pixel zur Display-Diagonalen) größer wird, möchtest Du vielleicht größere Fonts verwenden, die dann ebenfalls mehr Zeit zum Zeichnen brauchen.
Nicht die Größe sondern die Auflösung ( pixel) ist ausschlaggebend.
Ist mir klar, kam wohl nicht so rüber
Kauf auf alle Fälle ein Display das explizit für Arduino geeignet beschrieben wird und wo der Verkäufer eine Bibliothek und Beispiele zur Ansteuerung mit Arduino bereitstellt.
Ich verwende Displays mit SSD1289 und SSD1963 Controller. Dazu die UTFT...LIB von Henning Karlsen.
Ich geh davon aus, dass es so abläuft:
Der Arduino hat einen Befehl: Zeichne Linie von P1[X=0;Y=0] nach P2[X=0;Y=19] in Weiss. Linienstärke 1 Pixel.
Die LIB wandelt das so um, dass folgendes herauskommt: Es sind 20 Pixel in Weiss zu zeichnen. Diese Information wird dann über den Datenbus an den Displaycontroller übergeben.
Der Displaycontroller schreibt dann die 20 neuen Pixel in seine Bildschirmspeicher und refresht den Bildschirm.
So ähnlich sehe ich es auch in meiner aktuellen Software. Ich stelle so ca. 30-40 Linien/Rechtecke sowie Texte dar.
Sonst läuft auf dem MEGA noch ein kleiner Webserver, und etwas Steuerungssoftware. Freier RAM sind noch ~5k.
Allerdings dauert ein Zyklus ca 1 sec. Davon braucht die Grafikausgabe ~0,4 sec.
Anders wäre es ja nicht machbar.
Bei einem 5" Display mit 800x480 Pixel bräuchte man dann 384.000 Byte Speicher. Dann könnte man alle Pixel mit 256 verschiedenen Farben im Arduino halten.
Etwas viel für den MEGA. Selbst für den DUE
Wenn wir also von Typ B) Displays reden, dann steigt der Zeitaufwand für das Linien-Zeichnen linear mit der Länge der Linie.
Ich denke wir reden von dem Typ. 8)
--> Das Zeichnen einer Liniengrafik auf einem 3,2" Display dauert genauso lange wie auf einem 7" Display, wenn man die Größe der Grafik nicht verändert!
olikraus:
Entscheident ist natürlich die Dimension des Displays in Pixel. Wenn dein 4.3" Display 320x240 groß ist, aber das 7" Display 800x600 hat, dann könnte es schon passieren, dass Du mehr zeichnen musst. Da dann vielleicht auch das DPI (Verhältnis Pixel zur Display-Diagonalen) größer wird, möchtest Du vielleicht größere Fonts verwenden, die dann ebenfalls mehr Zeit zum Zeichnen brauchen.
Genau darauf wollte ich mit meiner "Idee" der Teilbildschirme aus dem ersten Post raus.
Wenn man es geschickt anstellt, dann kann man so die Information von 2 oder mehr Seiten eines kleineren Displays auf einem großen darstellen, ohne dass man mehr Ressourcen beim Arduino verschwendet, aber doch alles auf einmal sieht, und nicht immer lästig zwischen den Bildern umschalten muss.
Alles unter der der Regel: Nicht größer zeichen, sondern mehr darstellen.
Aber Achtung: Displays zwischen 128x128 bis 240x320 werden oft verkauft und werden prima unterstützt. Wenn es größenmäßig darüberhinaus geht, sollte man vor dem Kauf nach einer geeigneten Library suchen.
Ich hab gerade nachgeschaut.
Die UTFT von Henning Karlsen unterstützt auf alle Fälle 5,0" mit 800x480 pixel. (SSD1963-Controller) Das 7.0 Zoll hat die gleiche Auflösung/Controller. Sollte also kein Problem sein, sogar ein 7 Zoll zu nehmen. DIe Augen werden ja auch nicht besser
Guck dir mal die Nucleo Boards von ST an. Die Dinger kosten so wenig, wie ein China-Arduinoclone, hat aber genügend Bums unter der Haube
Sogar die Arduino Header wurden beibehalten.
nix_mehr_frei:
Guck dir mal die Nucleo Boards von ST an. Die Dinger kosten so wenig, wie ein China-Arduinoclone, hat aber genügend Bums unter der Haube
Und hab ne komplett andere Entwicklungsebene
Dann nehm ich lieder eine DUE. Da brauch ich nix an der Software ändern, sondern nur ein paar Level-Shifter für meine Peripherie einbauen.