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.
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.
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.
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.
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.
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.
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.
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:
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.
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.
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.
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.
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.
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?
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?
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.
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.
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.
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.
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.
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.
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.