Forum: Mikrocontroller und Digitale Elektronik größeres OLED mit Arduino lib


von Marko R. (marko_rocznik)


Lesenswert?

Ich habe meinen Sohn jetzt für Arduino begeistern können. Lockmittel 
war, dass wenn er den Baukasten mit den ganzen Elektroniksachen durch 
hat ich ihm ein Display kaufe und er dann Spiele für seinen Mega2560 
schreiben kann.

Irgendwie will er unbedingt ein OLED haben, ich finde da aber nichts was 
etwas größer ist.

Was wäre denn eure Empfehlung, möglichst mit Adruino-Lib.

Marko

von N. M. (mani)


Lesenswert?

Ob Spiele Entwicklung auf einem "größeren" Display mit 8k SRAM Spaß 
macht...

von Ben K. (bkaiser)


Lesenswert?

Leider die falsche Platform für Spieleentwicklung. :-/

von Wastl (hartundweichware)


Lesenswert?

Marko R. schrieb:
> Irgendwie will er unbedingt ein OLED haben, ich finde da aber nichts was
> etwas größer ist.

So sollte "man" erst mal herausfinden warum es OLED sein soll.
Es gibt genügend Displays als TFTs so wie es jedes Handy
heutzutage hat. OLEDs sind heute einfarbig oder teuer, TFTs
bekommt man sicher günstiger, bunt und in höherer Auflösung.

Grösster Nachteil den ich sehe ist bei OLEDs die Degenerierung.

YMMV

von Vanye R. (vanye_rijan)


Lesenswert?

> Irgendwie will er unbedingt ein OLED haben, ich finde da aber
> nichts was etwas größer ist.

Du musst definieren was "etwas groesser" ist. OLED mit 2.4" und 
einfarbig sind noch gaengig und bereits deutlich groesser wie die 
ueblichen 1.3" Teile. Noch groesseres wird dann exotisch, also selten 
und der Preis steigt exponentiell.

Wenn du dagegen an sowas wie ein Handy denkst, also sagen wir mal 6" mit 
RGB dann wird das Interface wohl eure Faehigkeiten uebersteigen und dein 
bescheidener Controller ist damit auch ueberfordert.
Du bist dann in der Klasse wo man sowas wie einen Raspberry Pi mit
aufgestecktem Display nimmt. Die sind aber TFT und keine Oled, einfach
aus preisgruenden.

Vanye

von Marko R. (marko_rocznik)


Lesenswert?

OK, dann wird es ein TFT. Welches würdet ihr empfehlen?
Ich denke möglichst groß bei mäßiger Auflösung, damit er nicht zu viele 
Pixel schreiben muss und man trotzdem noch was erkennt.
Möglichst mit SPI.
Das hier schaut brauchbar aus:
https://www.reichelt.de/arduino-shield-display-3-5-320-x-480-ard-shd-lcd3-5-p291375.html?&nbc=1&trstct=lsbght_sldr::282497

Würdet ihr einen ST7796 der ILI9486 als Kontroller wählen?

Marko

@Vanye:
An meinen Fähigkeiten scheitert es nicht, ich mache sowas beruflich, 
kenne mich mit den Hobbyisten-Sachen aber nicht aus. Arduino habe ich 
letzte Woche das erste Mal angefasst, denke aber es ist für ihn, nachdem 
er mit dem Calliope "fertig" ist, das richtige.
Und da sich so ein pupertierender nichts mehr von seinem Alten sagen 
lässt muss es halt ein Display sein, das möglichst gut unterstützt und 
in Foren komplett mit allem dokumentiert ist.

: Bearbeitet durch User
von J. S. (jojos)


Lesenswert?

Für mehr Freude ist mehr Speicher nötig und dann ist man beim Cortex-M. 
Die Bodmer/TFT_eSPI kennt Sprites, was für bewegte Objekte hilfreich 
ist, aber auch mehr Speicher braucht. Ein guter und sehr günstiger 
Controller ist da der Raspberry Pico. Als Tufti 2040 von Pimoroni gibt 
es das als kompakte Einheit mit Display und Akkuanschluss, also für so 
einen Gameboy Clone schon ideal. Durch schnelles SPI mit DMA dauert 
selbst ein kompletter Screen Refresh nur wenige ms.
https://www.berrybase.de/pimoroni-tufty-2040

Dann ginge Spieleentwicklung noch rein in SW, mit dem Retro Projekt
https://www.lexaloffle.com/pico-8.php
Eine sehr minimale Spiele Engine, wo gerade der Minimalismus den Charme 
ausmacht.

von Marko R. (marko_rocznik)


Lesenswert?

OK, ich denke eines der beiden wird es werden:

http://lcdwiki.com/3.95inch_Arduino_Display-Mega2560_ST7796

http://lcdwiki.com/3.95inch_Arduino_Display-Mega2560

Welcher Chip ist besser unterstützt?
- ILI9488
- ST7796S

Marko

von Wastl (hartundweichware)


Lesenswert?

Marko R. schrieb:
> Welcher Chip ist besser unterstützt?

Ziemlich egal, mit geringer Präferenz für ILI9488.

Für Arduinos gibt es hauptsächlich vier Sorten von Displays
was die Steckverbindung angeht.

- das von dir gezeigte Reichelt-Display hat eine 8-Bit
  Schnittstelle die jedoch auf 6+2 Bit (separat zu
  schreiben) aufgeteilt ist, passt auf alle Arduinos.

- normale SPI-Displays die "von Hand" mit dem Arduino
  verdrahtet werden müsssen. Löten oder Dupont Steckverbinder.

- 16-Bit (Interface) Displays die ein Adapterboard brauchen
  um von ihrem 40-poligen Stecker auf den 36-poligen des
  Arduino Mega zu kommen

- 16-Bit (Interface) Displays die bereits mit 36-poligem
  Steckverbinder (Buchse) daherkommen und nur auf den Mega
  passen.

Also Obacht passen welcher Stecker und welches Interface.

von Wastl (hartundweichware)


Lesenswert?

Hier ein Display vom Typ "Reichelt", jedoch mit höherer
Auflösung und ILI9488 (du wolltest ja weniger Auflösung)

Beitrag "LCD 480x320 mit wenig Aufwand zum Anbinden"

Wenn man das so selbst verdrahtet braucht man sich nicht um
die 6+2 Bit Aufspaltung zu kümmern. Ansonsten ist es immer
doppelte Schreibarbeit für den Arduino. Allerdings braucht
man eben einen kompletten 8-Bit-Port, den es beim Arduino Uno
nicht gibt.

von Marko R. (marko_rocznik)


Lesenswert?

OK, dann wird es wohl dieses hier in der 16 Bit-Variante.
Ich glaube was die 8 von der 16 Bit Variante untescheidet ist nur ob ein 
zusätzlicher Level-Shifter aufgelötet ist oder nicht:

https://es.aliexpress.com/item/1005003752743978.html?spm=a2g0o.cart.0.0.202b4ae44rUNXy&mp=1&gatewayAdapt=glo2esp

Marko

von Wastl (hartundweichware)


Lesenswert?

Marko R. schrieb:
> Ich glaube was die 8 von der 16 Bit Variante untescheidet ist nur ob ein
> zusätzlicher Level-Shifter aufgelötet ist oder nicht:

Ist von der Artikelbeschreibung her nicht erkennbar. Ich habe
jedoch bisher kein 8-Bit Display mit 36-poligem Stecker gesehen.
Die 8-Bitter waren immer die 6+2 Typen mit zwei Stecker-Reihen
(vom "Typ Reichelt").

Also was du jetzt ausgesucht hast ist weder niedrig auflösend
noch mit SPI, wie du vorher gewünscht hast.

von Adam P. (adamap)


Lesenswert?

Marko R. schrieb:
> Möglichst mit SPI.

Marko R. schrieb:
> OK, dann wird es wohl dieses hier in der 16 Bit-Variante.

Also wie nun,
erst wollst SPI und jetzt doch Parallel?

Wobei das erste (Reichelt) auch Parallel war, SPI war nur das SD-Karten 
Interface.

Bzgl. RAM:
Je nachdem was man machen möchte, ist es echt ein Krampf wenn man den 
Displayinhalt nicht als "Frame-Buffer" im RAM hat.

Wenn er doch grad erst anfängt mit Arduino und Co.,
warum fängt er dann nicht mit einem simplen Display (KS0108) an um 
erstmal das Prinzip zu verstehen?
Bei OLED und TFT kommen dann noch so Dinge wie z.B. RGB565 hinzu usw.
Klar kann das alles Easy sein, wenn man Klicki_Bunti GUI Apps hat für 
Bildkonvertierung und ne Arduino LIB, aber Verständis entsteht da wohl 
eher weniger.

von Wastl (hartundweichware)


Lesenswert?

Adam P. schrieb:
> Je nachdem was man machen möchte, ist es echt ein Krampf wenn man den
> Displayinhalt nicht als "Frame-Buffer" im RAM hat.

Er will seinen Sohn mit Arduino-Lib anfangen lassen. Da gibt
und braucht es keinen Frame-Buffer.

von Marko R. (marko_rocznik)


Lesenswert?

Ich selber schreibe mir mein Zeug einfach vom Datenblatt selber runter 
wenn ich keine ordentliche Lib habe (fremde Libs zu debuggen dauert 
meist länger als selber zu schreinen..).
Ich hatte mit dem Arduino-Zeug noch nichts gemacht und die letzten 
Minuten mich mal eingelesen. Der Gedanke hinter SPI war, dass man das 
Interuptgetrieben eh im Hintergrund laufen lassen kann, da der MEGA2560 
eh nicht der schnellste ist und man einfach die Pins spart. Ein paar 
YouTube-Videos später scheint das parallele Interface aber doch einen 
Unterschied zumachen.

Im Grunde ist es egal. Wenn ich bei ihm das Display-Fieber zünde, dann 
sucht er sich selber raus was er braucht. Und wenn das erreicht ist, 
dann ist die Mission eh erfüllt - er soll ja nur lernen wie das Zeug 
funktioniert.
Und wenn er Probleme hat, kommt er ja vielleicht doch zu seinem "Alten" 
und fragt...

Vielen Dank für eure Hilfe!
 Ich berichte dann mal über unserer Erfahrungen.

von Vanye R. (vanye_rijan)


Lesenswert?

> Der Gedanke hinter SPI war, dass man das Interuptgetrieben eh im
> Hintergrund laufen lassen kann, da der MEGA2560

Du wolltest ein Display das gross ist. Da sind eigentlich so 320x240
Pixel ueblich. Das Datenblatt zum ILI sagt 10Mhz SCK. Das ist dann
schon etwas langsam. Allerdings hab ich denen selber schon mit 40Mhz
die Daten reingeblasen. Damit bist du an der unteren Grenze von Okay,
Videokucken also eher nicht, sowas wie Tetris aber sicher kein Problem.

Wenn du dich aber schon mit einem TFT zufrieden gibst dann findet
sich bei Alieexpress auch eine Menge Display die etwas kleiner sind
wie QVGA. Auch sehr preiswert. Allerdings haben die oft eine sehr
beschissenes Kontrastverhaeltnis oder engen Blickwinkel. Da merkt
man deutlich das es billig sein soll.

https://de.aliexpress.com/item/1005005990806476.html

Allerdings muss man dann auch sagen das du da ernsthaft mit Hand
anlegen musst. Die Dokumentation bei Ali ist oftmals zweifelhaft,
fuer einen Anfaenger eigentlich unzumutbar.

Vanye

von Falk B. (falk)


Lesenswert?

Marko R. schrieb:
> OK, dann wird es ein TFT. Welches würdet ihr empfehlen?
> Ich denke möglichst groß bei mäßiger Auflösung, damit er nicht zu viele
> Pixel schreiben muss und man trotzdem noch was erkennt.
> Möglichst mit SPI.

Da gab es mal ein 1,8 Zoll LCD. Gibt es das heute noch?

https://docs.arduino.cc/retired/other/arduino-lcd-screen

Ja, wenn gleich leicht geändert.

https://www.reichelt.de/entwicklerboards-display-lcd-1-8-128-x-160-st7735s-debo-lcd128x160-p282502.html?&trstct=pol_3&nbc=1

> Das hier schaut brauchbar aus:
> 
https://www.reichelt.de/arduino-shield-display-3-5-320-x-480-ard-shd-lcd3-5-p291375.html?&nbc=1&trstct=lsbght_sldr::282497
>
> Würdet ihr einen ST7796 der ILI9486 als Kontroller wählen?

Ist am Ende egal. Dein Junior wird jetzt keine Rekorde aufstellen und 
keine Super Power GPU benötigen. Für ein Pacman & ähnliches reichen fast 
alle.

Beitrag "Welchen TFT für Atmega328 oder ähnlichen AVR?"

von Manfred P. (pruckelfred)


Lesenswert?

Marko R. schrieb:
> An meinen Fähigkeiten scheitert es nicht, ich mache sowas beruflich,
> kenne mich mit den Hobbyisten-Sachen aber nicht aus.

Dann schaue Dir zumindest an, wieviel Speicher der Arduino verfügbar hat 
und, wie viel davon für das Grafikdisplay belegt wird. Bleibt da noch 
genug für die eigentlichen Aufgaben über?

von Stefan F. (Gast)


Lesenswert?

Der ATmega2560 hat viel zu wenig RAM, um mit so einem Display Spaß zu 
haben.

Für einen Buffer, der via SPI im Hintergrund-Prozess auf ein 480x320 TFT 
Display übertragen wird, brauchst du schon ca. 300 Kilobyte RAM. Für 
ruckelfreie Wiedergabe bewegter Bilder brauchst du zwei Buffer.

Der ATmega2560 hat 8 Kilobyte.

von Joachim B. (jar)


Lesenswert?

Stefan F. schrieb:
> Der ATmega2560 hat 8 Kilobyte.

und ein ESP32 512KB, ein ATmega 1284p immerhin 16KB

von Rolf M. (rmagnus)


Lesenswert?

Wastl schrieb:
> Adam P. schrieb:
>> Je nachdem was man machen möchte, ist es echt ein Krampf wenn man den
>> Displayinhalt nicht als "Frame-Buffer" im RAM hat.
>
> Er will seinen Sohn mit Arduino-Lib anfangen lassen. Da gibt
> und braucht es keinen Frame-Buffer.

Für Spiele? Da wird's dann aber schon schwierig, wenn man was animieren 
will. Außer man nimmt ein Display, das einen Controller eingebaut hat, 
der komplexere Sachen wie Sprite-Animationen schon von sich aus kann.

Mal zum Vergleich: Der Game Boy Color hatte ein 160x144-Pixel-Display 
und 32kB RAM + 16kB Grafikspeicher und konnte damit bis zu 56 von 
insgesamt 32k Farben gleichzeitig nutzen. Dazu konnte das Cartridge 
neben dem ROM für das Spiel selbst auch nochmal bis zu 128kB RAM haben.

: Bearbeitet durch User
von N. M. (mani)


Lesenswert?

Mit unseren Studenten nehmen wir immer ein ESP32 Board mit Display. 
Kostenfaktor 10-15€ bei Ali.
Damit programmieren sie dann meist Pong. Als nächstes dann 
Bluetooth/WLAN und anschließend Pong über Funk als Multiplayer.
Ressourcen hat es genug um auch später mal einen richtigen Emulator 
laufen zu lassen.

Gerade am Anfang ist es deutlich einfacher mehr Speicher bei so etwas zu 
haben. Der Frustfaktor ist dadurch deutlich geringer und man kann sich 
auf die eigentliche Aufgabe konzentrieren.

Beitrag #7493154 wurde vom Autor gelöscht.
von Vanye R. (vanye_rijan)


Lesenswert?

> Mit unseren Studenten nehmen wir immer ein ESP32 Board mit Display.
> Kostenfaktor 10-15€ bei Ali.

Interessant. War noch gar nicht in meinem Wahrnehmungshorizont 
aufgetaucht. Ich nehme an du meinst sowas:

https://de.aliexpress.com/item/1005004840423443.html

Wie ist denn da dein Eindruck vom Display? Will man da drauf schauen 
oder sieht das eher billig und kontrastarm aus?

> Gerade am Anfang ist es deutlich einfacher mehr Speicher
> bei so etwas zu haben.

Der Meinung bin ich auch.

Vanye

von N. M. (mani)


Lesenswert?

Vanye R. schrieb:
> Ich nehme an du meinst sowas:

Ja sowas in der Art.
Gibt auch noch andere:
https://a.aliexpress.com/_EICOecL
Größeres Display. Mit Touch. Aber halt fast keine Pins raus geführt. 
Kommt drauf an was man alles damit machen möchte.

Vanye R. schrieb:
> Wie ist denn da dein Eindruck vom Display? Will man da drauf schauen
> oder sieht das eher billig und kontrastarm aus?

Von dem Bild auf Ali würde ich das nicht abhängig machen. Schau Mal bei 
YouTube, da gibt's einige Videos dazu. Da sieht man das wahrscheinlich 
besser als auf dem Bild.
Ich finde die was wir haben gut. Sehe gerade aber die gibt es im 
gleichen Formfaktor auch mit OLED (30€). Könnte sein dass es die sind.

Vanye R. schrieb:
>> Gerade am Anfang ist es deutlich einfacher mehr Speicher
>> bei so etwas zu haben.
>
> Der Meinung bin ich auch.

Aus deinem Link mit der Uhr sieht man zumindest ein paar Laufzeit 
Zahlen. 62FPS sind beim 240MHZ Boliden immerhin schon 10% Systemlast. 
Für eine Uhr natürlich etwas übertrieben, bei einem Spiel aber nicht so 
arg.

von J. S. (jojos)


Lesenswert?

Vanye R. schrieb:
> Wie ist denn da dein Eindruck vom Display? Will man da drauf schauen
> oder sieht das eher billig und kontrastarm aus?

Das ist von LilyGo, die entwerfen und bauen sehr coole und wertige 
Sachen:
https://www.lilygo.cc/

Ich habe die erste Version von dem ESP32/Display, das Display ist sehr 
gut, hell, kontrastreich und guter Ablesewinkel.

von Frank K. (fchk)


Lesenswert?

Marko R. schrieb:

> Ich hatte mit dem Arduino-Zeug noch nichts gemacht und die letzten
> Minuten mich mal eingelesen. Der Gedanke hinter SPI war, dass man das
> Interuptgetrieben eh im Hintergrund laufen lassen kann, da der MEGA2560
> eh nicht der schnellste ist und man einfach die Pins spart. Ein paar
> YouTube-Videos später scheint das parallele Interface aber doch einen
> Unterschied zumachen.

Die performanteste Art ein TFT-Display anzusteuern ist über das External 
Bus Interface. Der Mega2560 hat das ja. Das ist etwa Faktor 5 schneller 
als per GPIO-Bitwackelei. Been there, done that.

Und am EBI kann man auch noch ein extra SRAM anschließen. Entweder ein 
32k 62256 oder ein 128k oder 512k mit Bankswitching. Aufgrund des 
Adress-/Datenbus-Multiplexing ist das externe RAM nicht so schnell wie 
das interne, aber ansonsten ist es für den Prozessor ganz normales RAM. 
Der Linker sollte dessen Existenz aber im Linkerscript mitgeteilt 
bekommen.

fchk

von Vanye R. (vanye_rijan)


Lesenswert?

> Der Linker sollte dessen Existenz aber im Linkerscript mitgeteilt
> bekommen.

Ts ts....hab doch letztens erst hier irgendwo gelesen das
man nicht wissen muss was ein Linkerscript ist. :-D

Vanye

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.