Lab 1: Hello World
The classic first program, adapted for a driver with no built-in font. config.init_display() starts the SPI bus and the GC9A01 in one call, and then this lab writes two lines of text in the kit's two font sizes — proof that the wiring, the driver, and both fonts are all reachable before anything more interesting is asked of them.
Sample Program Code
Run this and you should see two lines of white text on a black circle:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | |
Here's what that program draws on the display:

There Is No Built-In Font
framebuf, the module behind the OLED kit's SSD1306 driver, ships a fixed 8-by-8 font for free. This driver is not built on framebuf, and it has no font of its own at all — text() takes a font module as its first argument, so display.text("Hi", x, y, WHITE) simply does not work here. config.py imports two font modules and hands them to you as config.SMALL_FONT (8x16) and config.BIG_FONT (16x32) so every later lab can just ask for one.
The call shape is display.text(font, string, x, y, fg, bg) — six arguments where the OLED kit needed four. The two new ones are not optional, and forgetting the font is the single most common first mistake anyone makes porting OLED code to this driver.