Displaylibraries¶
DISPLAY_CLASS · OLED · E-INK · TFT · ABSTRACTIE
MeshCore kent elf waarden voor DISPLAY_CLASS, van een OLED van een paar
centimeter tot een e-inkpaneel en een kleuren-TFT. In de firmware is
daar bijna niets van te merken: alle schermen zitten achter één interface, en
welke library daadwerkelijk meegecompileerd wordt, bepaalt één bouwvlag per
variant. Die vlag draagt een klassenaam in plaats van een aan/uit-waarde — een
van de vier configuratiemechanieken uit
../library-configuration.md.
[!NOTE] Bron. Deze pagina is geverifieerd tegen de firmware zelf:
MeshCorev1.16.0, commit03b6ef4, 28 juli 2026 — bestandenplatformio.ini, de negenenzeventigvariants/*/platformio.ini,src/helpers/ui/DisplayDriver.h,src/helpers/ui/SSD1306Display.henexamples/simple_repeater/main.cpp.
Hoe MeshCore deze groep aanroept¶
De abstractie heet DisplayDriver. Elke schermdriver erft ervan en
implementeert dezelfde methodes:
src/helpers/ui/DisplayDriver.h r.6-21
class DisplayDriver {
int _w, _h;
protected:
DisplayDriver(int w, int h) { _w = w; _h = h; }
public:
enum Color { DARK=0, LIGHT, RED, GREEN, BLUE, YELLOW, ORANGE }; // on b/w screen, colors will be !=0 synonym of light
int width() const { return _w; }
int height() const { return _h; }
virtual bool isOn() = 0;
virtual bool isEink() { return false; } // default to non-eink, override in eink drivers
virtual void turnOn() = 0;
virtual void turnOff() = 0;
virtual void clear() = 0;
virtual void startFrame(Color bkg = DARK) = 0;
Welke implementatie het wordt, zegt de variant met -D DISPLAY_CLASS=…. De
schetsen kennen alleen die naam:
examples/simple_repeater/main.cpp r.42-46
#ifdef DISPLAY_CLASS
if (display.begin()) {
display.startFrame();
display.setCursor(0, 0);
display.print("Please wait...");
Is DISPLAY_CLASS niet gedefinieerd, dan verdwijnt alle schermcode uit de
build. Er is daarnaast een NullDisplayDriver voor borden die wel de
UI-taak draaien maar geen scherm hebben.
Adafruit SSD1306¶
De SSD1306 is de controller van de kleine monochrome OLED-schermpjes van
128 × 64 of 128 × 32 pixels die op de meeste MeshCore-borden zitten. De
library van Adafruit praat er over I²C of SPI mee en houdt een volledige
framebuffer in RAM aan. Met drieëntwintig varianten is dit de meest
voorkomende displaylibrary in de repo, en SSD1306Display is de
DISPLAY_CLASS van verreweg de meeste borden. De driver zet
SSD1306_NO_SPLASH vóór de include, zodat het Adafruit-logo bij het
opstarten niet verschijnt.
Adafruit SH110X¶
De SH1106 en SH1107 zijn OLED-controllers die sterk op de SSD1306 lijken maar
een iets andere geheugenindeling hebben — een scherm met deze controller
aansturen als SSD1306 levert een beeld dat een paar pixels verschoven is. De
library ondersteunt beide typen. In zeven varianten: lilygo_tbeam_1w,
lilygo_tbeam_supreme_SX1262, nano_g2_ultra, station_g2,
station_g3_esp32, thinknode_m2 en wio-tracker-l1, met SH1106Display
als driver.
zinggjm/GxEPD2¶
GxEPD2 is de standaardlibrary voor e-inkpanelen op Arduino: hij kent
tientallen paneeltypes, elk met hun eigen initialisatiereeks en
verversingsgedrag, en biedt zowel volledige als gedeeltelijke verversing.
Vijf varianten gebruiken hem — lilygo_techo, lilygo_techo_lite,
mesh_pocket, thinknode_m1 en thinknode_m5 — via GxEPDDisplay. De
zesde e-inkvariant, wio-tracker-l1-eink, haalt een fork op:
https://github.com/SoulOfNoob/GxEPD2.git, zonder revisie achter de URL.
Adafruit GFX Library¶
GFX is geen schermdriver maar de tekenlaag eronder: lijnen, rechthoeken,
tekst, lettertypen en bitmaps, allemaal in een framebuffer die een driver
daarna naar het scherm schrijft. SSD1306, SH110X, ST7735/ST7789 en Adafruit
EPD hebben hem alle vier nodig en declareren hem in hun eigen depends=.
In acht varianten staat hij dáárnaast nog eens expliciet in lib_deps —
zie ../dependencies.md, waar dat als bewust
versiebeheer over de keten heen beschreven staat.
Adafruit BusIO¶
BusIO is de gedeelde bustoegangslaag van Adafruit: één API voor een register
op een I²C- of SPI-apparaat, zodat de driverlibraries zich niet met de bus
hoeven te bemoeien. Vrijwel elke Adafruit-library brengt hem via depends=
mee. In precies één variant staat hij expliciet gedeclareerd,
sensecap_indicator-espnow.
Adafruit ST7735 and ST7789 Library¶
ST7735 en ST7789 zijn controllers voor kleine kleuren-TFT-schermen. De
library ondersteunt beide en werkt bovenop GFX. Zes varianten gebruiken hem:
heltec_t096, heltec_t1, heltec_tracker, heltec_tracker_v2,
heltec_v4 en lilygo_tdeck, met ST7735Display, ST7789Display of
ST7789LCDDisplay als driver. Deze library sleept twee libraries mee die
verder nergens genoemd worden — Adafruit seesaw Library en SD — omdat
zijn voorbeelden die nodig hebben.
Adafruit EPD¶
Adafruit EPD is de e-inklibrary van Adafruit, met ondersteuning voor hun
eigen panelen en breakouts. Hij staat in één variant gedeclareerd,
mesh_pocket, exact vastgepind op 4.6.1. In de broncode is geen enkele
include van Adafruit_EPD te vinden; die waarneming staat beschreven in
../dependencies.md.
olikraus/U8g2¶
U8g2 is een monochrome grafische library die een groot aantal
displaycontrollers ondersteunt, met een eigen lettertypesysteem en de
mogelijkheid om zonder volledige framebuffer te werken — bruikbaar op borden
met weinig RAM. Eén variant gebruikt hem, lilygo_techo_card, via
U8g2Display.
lovyan03/LovyanGFX¶
LovyanGFX is een grafische library voor kleurenschermen die op ESP32 gebruik
maakt van DMA en daardoor snel is bij grote schermen. Eén variant gebruikt
hem, sensecap_indicator-espnow, via LGFXDisplay.
heltec-eink-modules¶
Voor de e-inkmodules van Heltec worden twee verschillende forks van dezelfde library opgehaald, allebei als zip van een volledige commit-hash:
| Fork | Commit | Varianten |
|---|---|---|
Quency-D/heltec-eink-modules |
563dd41 |
heltec_e213, heltec_e290 |
todd-herbert/heltec-eink-modules |
9207eb6 |
heltec_wireless_paper |
De bijbehorende drivers zijn E213Display en E290Display. Beide gebruiken
CRC32 om te bepalen of het scherm überhaupt ververst hoeft te worden — zie
utilities.md.
Overzicht¶
| Library | Versie | Varianten | Driver |
|---|---|---|---|
adafruit/Adafruit SSD1306 |
^2.5.13 |
23 | SSD1306Display |
adafruit/Adafruit SH110X |
^2.1.13 · ~2.1.13 |
7 | SH1106Display |
adafruit/Adafruit GFX Library |
^1.12.1 |
8 | tekenlaag |
adafruit/Adafruit BusIO |
^1.17.2 |
1 | bustoegang |
adafruit/Adafruit ST7735 and ST7789 Library |
^1.11.0 |
6 | ST7735Display, ST7789Display, ST7789LCDDisplay |
adafruit/Adafruit EPD |
4.6.1 |
1 | geen include gevonden |
zinggjm/GxEPD2 |
1.6.2 |
5 | GxEPDDisplay |
SoulOfNoob/GxEPD2 |
geen revisie | 1 | GxEPDDisplay |
Quency-D/heltec-eink-modules |
563dd41 |
2 | E213Display, E290Display |
todd-herbert/heltec-eink-modules |
9207eb6 |
1 | E290Display |
olikraus/U8g2 |
^2.35.19 |
1 | U8g2Display |
lovyan03/LovyanGFX |
^1.2.7 |
1 | LGFXDisplay |