Es gibt seit einiger Zeit runde Displays mit Breakout Boards mit einer Auflösung von 240x240 Bildpunkten und einer Diagonale von 32mm (1,28").
Diese gibt es für den kleinen Geldbeutel (<10€) z.B. bei Aliexpress
Ich wollte so ein Display über einen ESP8266 (per NodeMCU D1 Mini) ansteuern, da dieser zum Einen mit ausreichend Speicher ausgerüstet ist, zum Anderen ist dieser mit den 3.3V Pegeln des Displays kompatibel. Prinzipiell kann man das Display auch mit jedem anderen Controller ansteuern, muss dann aber ggf. jeweils 2.2k Widerstände in die Signalleitungen setzen, alternativ eine "richtige" Pegelanpassung vornehmen.
Ich musste ziemlich lange nach einer geeigneten Library suchen, die auch mit dem verbauten Controller kompatibel ist - diese funktioniert sehr gut:
https://github.com/Bodmer/TFT_eSPI
(die "User.h" im Library Verzeichnis muss für den Controller anpasst werden)
#define GC9A01_DRIVER
#define TFT_HEIGHT 240 // GC9A01 240 x 240
#define TFT_CS PIN_D8 // Chip select control pin D8
#define TFT_DC PIN_D3 // Data Command control pin
#define TFT_RST PIN_D4 // Reset pin (could connect to NodeMCU RST, see next line)
Falls nicht nur Texte/Fonts, sondern auch Bilder angezeigt werden sollen:
https://github.com/Bodmer/JPEGDecoder
Zum Konvertieren von JPEG-Bildern zu DatenArrays nutze ich dieses Tool:
https://tomeko.net/online_tools/file_to_hex.php?lang=en
Mir war zuerst die Pin-Zuordnung nicht ganz schlüssig, habe ich daher mal dokumentiert:
Display |
Signal |
ESP8266 (PIN) |
Arduino Uno/Nano (PIN) |
GND |
Ground |
GND |
GND |
VCC |
Power Supply |
3.3V |
3.3V |
SCL |
Clock Input (SCK SPI) |
D5 |
D13 (remember R2.2k) |
SDA |
Data Input (SDI/Mosi SPI) |
D7 |
D11 (remember R2.2k) |
RES |
Reset |
D4 (user.h) |
D4 (user.h, remember R2.2k) |
DC |
Data/Command Select |
D3 (user.h) |
D3 (user.h, remember R2.2k) |
CS |
Chip Select (CS SPI) |
D8 (user.h) |
D8 (user.h, remember R2.2k) |
BL |
Backlight Control |
every IO (low="off) |
every IO (low="off, remember R2.2k) |