In Verbindung mit dem ESP32 gibt es hierzu mehrere '''Bibliotheken''' um es zu nutzen:
* '''[https://github.com/olikraus/u8g2 U8x8 und U8g2] ''' - Nur für Monochrome Displays, optimiert auf geringen Ressourcenverbrauch
** U8x8: Minimalistische Version ohne Display-Puffer im uC, nur Textausgabe mit einem 8x8 Monospace Font
*** Der folgende Konstruktor funktioniert bei mir: <pre>U8X8_SSD1306_128X64_NONAME_SW_I2C u8x8(/* clock=*/ 15, /* data=*/ 4, /* reset=*/ 16);</pre>
*** Der folgende Konstruktor funktioniert bei mir: <pre>U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ 15, /* data=*/ 4, /* reset=*/ 16);</pre>
* '''[https://github.com/adafruit/Adafruit_SSD1306 Adafruit SSD1306] ''' hat viele Funktionen und wird zusammen mit Adafruit_GFX auch für farbige Displays benutzt.
** Wichtig: Ich musste die Library auf der Platte patchen - konkret musste ich in Adafruit_SSD1306.cpp die Zeile auskommentieren, wo nochmal Wire.begin(); (Zeile 206) aufgerufen wurde. Um dann das Beispielprogram 'ssd1306_128x64_i2c' nutzen zu können, hab ich noch mit <pre>#define OLED_RESET 16</pre> die Display-Reset-Leitung angepasst und die Zeile mit dem display.begin(...) wie folgt erweitert: <pre>Wire.begin(4,15); display.begin(SSD1306_SWITCHCAPVCC, 0x3c);</pre>.
* '''[https://github.com/acrobotic/Ai_Ardulib_SSD1306 Ai_Ardulib_SSD1306] ''' Grundtextfunktionen, braucht kein Display-Update-Befehl.
** Hier muss in den Beispielen die Zeile wo sonst nur Wire.begin(); steht um folgendes erweitert werden:
<pre> pinMode(16,OUTPUT);