Welche "sparsame" Display Bibliothek verwenden?

Du kannst die "einfachen" oled.print und oled.clear Anweisungen in allen Modi verwenden.

Der Unterschied liegt hier:


// Full Display Frame Buffer (F)

oled.clearBuffer();
oled.print("BlaBlaBla);
oled.sendBuffer();


// Page Buffer (Mode 1 oder 2)

oled.firstPage();
do {
  oled.print("BlaBlaBla);
} while ( oled.nextPage() );

In den Seitenpuffermodi müssen die Ausgabeanweisungen in der do - while Schleife eingebunden sein, nachdem oled.firstPage() aufgerufen wurde.

Bei letzterem Fall ist die Ausgabe etwas langsamer als im "Fullframe" Modus, was aber in vielen Fällen keine merkliche Rolle spielt.

Der verwendete Font ist auch entscheidend. Mal ein Beispiel:
u8g2_font_logisoso18_tf -> 3626 Bytes
u8g2_font_logisoso18_tr -> 1880 Bytes
u8g2_font_logisoso18_tn -> 330 Bytes (Wenn man nur Ziffern * / + - . braucht)

Wenn man nun noch den Unterschied Fullframe Buffer (1024 Bytes) und Modus 1 (128 Bytes)
betrachtet, kann man bei vernünftiger Auswahl von Buffer und Font einige Kilobyte! sparen.

Kommt man mit 8x8 Zeichen aus, kann man auch auf den u8x8 "Modus" umschalten:

Je nach bestehender Anwendung macht es dann wenig Sinn, sich nach einer anderen Bibliothek umzuschauen und Bestehendes komplett umzukrempeln, wenn man die beschriebenen zwei Stellschrauben nutzt.

Wenn das nicht ausreicht... ja dann muss man halt doch was anderes suchen und umsteigen.

Ergänzung: Die Wahl der Buffermethode macht sich vor allem und entscheidend im RAM bemerkbar!

Beispiel (Nano Clone) :
Ein Programm im Modus 1:
RAM: [===== ] 46.2% (used 946 bytes from 2048 bytes)
Flash: [===== ] 45.1% (used 14542 bytes from 32256 bytes)

Gleiches Programm im Modus F
RAM: [========= ] 89.9% (used 1842 bytes from 2048 bytes)
Flash: [===== ] 45.1% (used 14544 bytes from 32256 bytes)

Der Vergleich ist zwar nicht so ganz sauber, weil vor dem Compilieren nur der Buffemodus geändert wurde, aber nicht die Programmierung der Ausgabe. Aber im Prinzip passt es.

Programm: