October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsWindows FixRecommendedWindows errors stealing your time? Find the fix fastScan stability, cleanup and performance issues.Fix NowOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
ThatPainter
Arduino

Pixel Art on OLED Displays: From Bitmap to Working Hardware

Choose an OLED and driver that match, size pixel art to the screen’s native grid, and use the image representation required by the library. This guide covers module-specific wiring, DisplayIO and framebuf workflows, and a simple test sequence.

By ThatPainter Team 5 min read
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

ThatPainter is reader-supported. When you buy through links on our site, we may earn an affiliate commission. Learn More

To display pixel art on an OLED, choose a module first, make the artwork fit its native pixel dimensions, and use software that supports that module’s controller and interface. For a monochrome SSD1306, map the art to on/off pixels, render it through a compatible driver, and send the driver’s buffer to the display.

There is no universal bitmap file or wiring setup for every OLED. Check the exact module documentation and the library for your board before choosing an export format, connecting pins, or copying code.

Choose the OLED and board

Start with the screen’s resolution, controller, interface, and electrical requirements. Adafruit’s monochrome OLED guide documents 128×32 and 128×64 SSD1306 displays; the correct canvas dimensions must match the module and the dimensions passed to its driver.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#1 Best Overall
Hosyond 5 Pcs 0.96 Inch OLED I2C IIC Display Module 12864 128x64 Pixel SSD1306 Mini Self-Luminous OLED Screen Board Compatible with Arduino Raspberry Pi (White)
  • 0.96 inch,Resolution: 128 x 64, View angle: > 160°, Support voltage: 3.3V-5V DC, Power consumption: 0.04W during normal operation, full screen lit 0.08W
  • Embedded Driver IC: SSD1306. Communication: I2C/IIC Interface, only need two I / O ports
  • It compatibles with Arduino Nano, R3 board and Mega, Raspberry pi, 51 MCU, STIM 32, etc.
  • No backlight is required, and the display unit can be self-luminous. It has ultra-high contrast, bright and clear dots, and it is easy to read even small fonts
  • There are no fonts embedded in the OLED controller, users can create fonts through font generation software.
Decision What to check Why it matters
Resolution The module’s pixel dimensions, such as 128×32 or 128×64 Sets the artwork canvas and the dimensions used to initialize the driver.
Interface I2C or SPI, plus any module jumper settings Determines the wiring, pins, and bus setup required.
Controller and driver Controller support in the library and whether your firmware uses DisplayIO or framebuf The driver must match both the display and the board’s software environment.
Electrical requirements Supply voltage, logic level, and any onboard regulator or level shifter These are product-specific; do not assume every SSD1306 module has the same requirements.
Assembly Breakout, wired module, or board-mounted display Determines whether you need a breadboard and jumper wires.

The cited Adafruit 128×32 SPI module is a monochrome SSD1306 display with a 4-wire SPI interface. Its product page specifies 3.3V supply and logic, with an onboard regulator and level shifter. Those details apply to that product, not to all OLED modules. See the specific product documentation and the monochrome OLED guide before wiring a different display.

Connect the module

Use the pin labels and wiring instructions for your exact board and display revision. In Adafruit’s documented I2C example, connect power, ground, SCL to clock, and SDA to data. Reset requirements depend on the module revision. SPI examples use clock and data lines along with control connections such as chip select, D/C, and reset where required.

  1. Identify the display’s controller, resolution, interface, and revision from its documentation.
  2. Check the module’s voltage and logic-level requirements against the board.
  3. Wire the power, ground, bus, and control pins according to that module’s guide.
  4. Run the vendor’s basic display example before trying to render artwork.

Pin names and jumper settings vary. Follow the selected module’s wiring guide rather than treating these examples as a universal pinout.

Rank #2
ELEGOO 0.96 Inch OLED Display Screen Module, Self-Luminous, SSD1306, 3PCS
  • Three Displays For More Projects: Build a sensor dashboard, robot status panel and classroom demo at the same time, or keep spare modules ready for testing; each compact screen delivers 128x64 graphics with self-luminous pixels and no backlight
  • Fixed Yellow-Blue Zones Make Status Information Easy To Scan: Use the yellow upper band for headings, alerts or icons and the blue lower area for readings and menus; the display colors are fixed by the OLED panel rather than programmable RGB, and the screen does not support touch input
  • Four-Wire I2C Connection Saves Controller Pins: Connect GND, VCC, SCL and SDA according to the module labels, scan the I2C bus and use the default 7-bit address 0x3C; the 0x78 PCB marking represents the corresponding 8-bit write-address format used by some documentation
  • Works With Common 3.3 V & 5 V Project Platforms: Add compact visual feedback to compatible microcontroller and single-board computer projects, but verify the module pin order, supply voltage, I2C logic levels, pull-up voltage and SSD1306 software configuration before powering
  • Three Modules Plus Ten Dupont Wires: Includes 3 OLED display modules, 5 female-to-female and 5 male-to-female jumper wires; controller boards, breadboards and enclosures are not included, and multiple displays on one I2C bus require unique addresses where supported or an I2C multiplexer

Match the artwork to the pixel grid

For a monochrome display, each pixel is on or off. Make the canvas the same size as the screen, or deliberately scale the art to fit. Keep shapes and details readable at native resolution; a design that looks clear when enlarged may lose important features on a small screen.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. Set the canvas to the display’s documented pixel dimensions.
  2. Reduce the artwork to the monochrome values supported by the display.
  3. Inspect the image at native size and simplify details that do not read clearly.
  4. Use the image representation required by your particular library and board.

A bitmap is not necessarily a ready-to-load art file. The sources document creating an in-memory DisplayIO bitmap, palette, and TileGrid, but they do not establish one export format that works for every editor and display library. Check your driver’s documentation for the conversion step and expected representation.

Choose a software route

The correct setup depends on your firmware and board. Adafruit’s DisplayIO SSD1306 example initializes a display with its pixel dimensions, creates a display group, and attaches that group as the root group. It then represents the image using a bitmap, palette, and TileGrid. The guide notes that DisplayIO is available only on Express boards in the described context because of memory limits on non-Express boards.

Rank #3
1.5inch RGB OLED Display Module, 128x128 Pixels 16-bit (65K Colors)
  • This is a general 1.5inch RGB OLED display module, 128x128 pixels, 16-bit high color (65K colors),clearly displays colorful images, with embedded controller, communicating via SPI interface.
  • Driver: SSD1351. Display color: RGB, 65K colors
  • Supports 4-wire SPI OR 3-wire SPI interface, configured via onboard resistor
  • Dimension: 44.5 x 37 (mm),Operating voltage: 3.3V / 5V,Viewing angle: >160°,Interface: 4-wire SPI, 3-wire SPI

A separate framebuf driver uses a different setup. In that workflow, drawing changes the in-memory buffer, and the driver’s show() operation sends changed pixel data to the physical display. Do not combine setup instructions from DisplayIO and framebuf as if they were interchangeable.

  1. Choose a driver that explicitly supports the display controller.
  2. Confirm the driver works with your board and firmware.
  3. Initialize the display using its documented width, height, bus, and control pins.
  4. Build or load the artwork in the representation the driver expects.
  5. Call the driver’s display-update operation after drawing so the image is sent to the screen.

Use the current library documentation for your firmware and board. Some older CircuitPython hardware examples are no longer supported; Adafruit’s OLED guide and linked documentation provide the relevant setup context.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Test before displaying finished art

A simple test image makes it easier to separate wiring and driver problems from artwork or conversion problems. Start with a border, a filled shape, a diagonal, and a checkerboard, then replace the test with your art once the display behaves as expected.

Rank #4
HiLetgo 2.42" SSD1309 128x64 OLED Display Module 2.42 Inch OLED LCD Display Module IIC I2C 4 Pin or SPI 7 Pin Optional
  • 2.42" SSD1309 128x64 OLED Display Module
  • Driver IC: SSD1309; Dot Matrix: 128x64
  • IC I2C 4 Pin and SPI 7 Pin Optional
  • Display color: Blue/Green/White/Yellow Optional
  1. Run the basic display example and confirm that the screen initializes.
  2. Draw a border and filled shape to check dimensions and drawing.
  3. Display a checkerboard or small recognizable icon to inspect pixel mapping.
  4. Render the artwork and use the driver’s update operation to send it to the screen.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

OLED brightness and on-time

Adafruit’s product guidance for its cited module warns that a pixel kept on for over 1,000 hours will start to dim, and recommends turning off the display when it is not needed to help keep brightness uniform. Treat this as guidance for that product, not a universal lifetime guarantee for every OLED.

For a display that stays on, follow the module’s guidance and avoid leaving a bright, unchanged image displayed unnecessarily.

FAQ

What size should my pixel-art canvas be?

Use the pixel dimensions documented for your display and set the driver to those same dimensions. Adafruit’s examples include 128×32 and 128×64 SSD1306 screens.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Best Value
Hosyond 5 Pcs 0.96 Inch OLED I2C IIC Display Module 12864 128x64 Pixel SSD1306 Mini Self-Luminous OLED Screen Board Compatible with Arduino Raspberry Pi(Blue and Yellow)
  • 0.96 inch,Resolution: 128 x 64, View angle: > 160°, Support voltage: 3.3V-5V DC, Power consumption: 0.04W during normal operation, full screen lit 0.08W
  • Embedded Driver IC: SSD1306. Communication: I2C/IIC Interface, only need two I / O ports
  • It compatibles with R3 board and Mega, Raspberry pi, 51 MCU, STIM 32, etc.
  • No backlight is required, and the display unit can be self-luminous. It has ultra-high contrast, bright and clear dots, and it is easy to read even small fonts
  • There are no fonts embedded in the OLED controller, users can create fonts through font generation software.

Can I use any SSD1306 wiring diagram?

No. Wiring depends on whether the module uses I2C or SPI, its pinout, revision, and electrical requirements. Follow the documentation for the specific module and board.

Can I load a PNG directly onto an OLED?

Do not assume so. The driver may require a particular in-memory bitmap or buffer representation, and monochrome displays need on/off pixel values. Check the conversion and image-format instructions for the library you are using.

Why does my code draw an image but the screen does not change?

Some libraries draw into an in-memory bitmap or buffer first. Use the display-update operation required by your driver to send those changes to the physical screen.

Can I use DisplayIO on any CircuitPython board?

No. Adafruit’s guide says DisplayIO is only available on Express boards in the described context because of memory limits on non-Express boards. Check the current documentation for your board and firmware.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Quick Recap

Bestseller No. 1
Hosyond 5 Pcs 0.96 Inch OLED I2C IIC Display Module 12864 128x64 Pixel SSD1306 Mini Self-Luminous OLED Screen Board Compatible with Arduino Raspberry Pi (White)
Hosyond 5 Pcs 0.96 Inch OLED I2C IIC Display Module 12864 128x64 Pixel SSD1306 Mini Self-Luminous OLED Screen Board Compatible with Arduino Raspberry Pi (White)
Embedded Driver IC: SSD1306. Communication: I2C/IIC Interface, only need two I / O ports; It compatibles with Arduino Nano, R3 board and Mega, Raspberry pi, 51 MCU, STIM 32, etc.
$14.99
Bestseller No. 3
1.5inch RGB OLED Display Module, 128x128 Pixels 16-bit (65K Colors)
1.5inch RGB OLED Display Module, 128x128 Pixels 16-bit (65K Colors)
Driver: SSD1351. Display color: RGB, 65K colors; Supports 4-wire SPI OR 3-wire SPI interface, configured via onboard resistor
$27.95
Bestseller No. 4
HiLetgo 2.42' SSD1309 128x64 OLED Display Module 2.42 Inch OLED LCD Display Module IIC I2C 4 Pin or SPI 7 Pin Optional
HiLetgo 2.42" SSD1309 128x64 OLED Display Module 2.42 Inch OLED LCD Display Module IIC I2C 4 Pin or SPI 7 Pin Optional
2.42" SSD1309 128x64 OLED Display Module; Driver IC: SSD1309; Dot Matrix: 128x64; IC I2C 4 Pin and SPI 7 Pin Optional
$16.99
Bestseller No. 5
Hosyond 5 Pcs 0.96 Inch OLED I2C IIC Display Module 12864 128x64 Pixel SSD1306 Mini Self-Luminous OLED Screen Board Compatible with Arduino Raspberry Pi(Blue and Yellow)
Hosyond 5 Pcs 0.96 Inch OLED I2C IIC Display Module 12864 128x64 Pixel SSD1306 Mini Self-Luminous OLED Screen Board Compatible with Arduino Raspberry Pi(Blue and Yellow)
Embedded Driver IC: SSD1306. Communication: I2C/IIC Interface, only need two I / O ports; It compatibles with R3 board and Mega, Raspberry pi, 51 MCU, STIM 32, etc.
$14.98

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

More from the Paint Desk

Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.