iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
For a Raspberry Pi Pico game that needs color sprites or pixel art, start with a small ST7789 SPI LCD. Raspberry Pi maintains examples for this controller, including a tested 1.3-inch module and a 240×240 PIO configuration. If your game can use monochrome graphics, an SSD1306 I2C OLED or SSD1309 SPI OLED simplifies the display choice. A 16×2 character LCD is appropriate for text and status messages, not graphical play.
The controller name alone is not enough to buy a compatible screen. Confirm the exact panel dimensions, interface, pinout, logic voltage and software requirements for the module you intend to use, then map those requirements against the Pico pins needed for buttons, audio and storage.
Start with the game’s visual requirements
The display should be selected from the game design outward, rather than from a controller name on a product listing. Decide whether the game needs full-color artwork, simple symbols, or text-only feedback.
Color sprites and pixel art: ST7789
An ST7789 SPI LCD is the most defensible starting point for a small color game. Raspberry Pi’s Pico SDK examples include an ST7789 serial-LCD example and an HSTX example that displays a spinning image. The HSTX source identifies a tested WaveShare 1.3-inch ST7789 module: Drive an ST7789 SPI LCD using HSTX. That documentation makes the controller family a well-supported path, but it does not mean every module sold as “ST7789” has the same panel size, wiring or initialization sequence.
#1 Best Overall
- Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
- Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
- Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
- Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
- 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
Monochrome graphics: SSD1306 or SSD1309
For games built from one-bit sprites, outlines, menus or icons, an OLED can be easier to integrate. Raspberry Pi’s SSD1306 I2C example covers 128×32 and 128×64 panels. The Pico example collection also lists an SSD1309 SPI OLED path in its Pico SDK examples. Choose between them according to the bus you need to reserve: SSD1306 uses I2C in the documented example, while SSD1309 is shown over SPI.
Text and status only: 16×2 character LCD
A 16×2 character LCD displays two rows of sixteen characters through an I2C bridge. Raspberry Pi provides a maintained 16×2 I2C character-LCD example. Its fixed character grid is a poor match for moving pixel art, but it can be useful for a menu, score, diagnostic readout or a hardware-testing project where graphics are unnecessary.
How the main options compare
| Display path | Graphics type | Documented interface | Documented sizes or configuration | Best fit | Important qualification |
|---|---|---|---|---|---|
| ST7789 LCD | Color raster graphics | SPI; Raspberry Pi also demonstrates HSTX/PIO support | PIO example defines 240×240 and notes parts with 240- and 320-pixel heights | Color sprites, pixel art and animation | Resolution, orientation, pinout and initialization vary by module |
| SSD1306 OLED | Monochrome raster graphics | I2C | 128×32 and 128×64 panels are covered | Small icons, text, simple games and low-color interfaces | Use a 3.3 V-capable board or suitable level shifting; panel dimensions must still be checked |
| SSD1309 OLED | Monochrome raster graphics | SPI in the listed example path | Not stated in the cited example list | Monochrome graphics when SPI is preferable | Verify the exact module’s resolution and driver requirements |
| 16×2 character LCD | Predefined characters | I2C through a bridge | Two rows by sixteen characters | Scores, menus, diagnostics and text status | Not a practical pixel-art display |
No directly comparable official measurements establish game frame rate, power draw, brightness, response time, cost or current retail availability for these categories. Treat those characteristics as module-specific purchasing questions rather than ranking one controller universally above another.
Check the exact panel before you buy
Controller name versus panel geometry
ST7789 describes the display controller, not a single standardized screen. Raspberry Pi’s ST7789 PIO example defines a 240×240 screen and also notes testing with parts whose height is 240 or 320 pixels. A listing that says “ST7789” may therefore have a different height, aspect ratio, connector, rotation or color order than the example hardware.
Record these values from the module’s own documentation:
Rank #2
- 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
- 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
- Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
- 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
- What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.
- Visible width and height in pixels.
- Controller and any companion touch or backlight circuitry.
- Connector type and the labels printed beside every pin.
- Required initialization commands, reset behavior and orientation settings.
- Input-voltage range and logic-level specification.
- Whether the breakout exposes chip-select, data/command, reset and backlight control separately.
Physical fit and controls
Measure the board and active display area against the enclosure, joystick and buttons. A screen that fits the diagonal measurement may still block access to Pico headers or leave no room for a battery, speaker or control wiring. Reserve Pico GPIO for input controls before committing to a bus arrangement. The Pico-series Microcontrollers documentation describes the available SPI, I2C and programmable-I/O capabilities; use it to identify alternate pin functions and avoid assigning the same pin to two peripherals.
Choose SPI or I2C deliberately
What SPI means for a game screen
SPI uses a clock and data path with device-select signaling. It generally gives a display more transfer bandwidth than a character-oriented I2C arrangement, but it consumes more signal wires and at least one chip-select line. An ST7789 design commonly needs clock, data-out from the Pico, chip select, data/command and reset; the exact labels and required connections depend on the breakout.
Raspberry Pi’s HSTX example is a useful starting point because it names a tested 1.3-inch ST7789 module and shows the wiring expected by that example. Do not copy its pin numbers blindly to a different board: first compare the source code, your module’s labels and the GPIO assignments needed by your buttons.
What I2C means for a monochrome display
I2C reduces the display connection to a shared clock and data bus plus power and ground. It is convenient when the Pico must keep many GPIO pins for controls, but each device must have a usable address and the bus must meet the module’s electrical requirements. The SSD1306 example demonstrates the 128×32 and 128×64 cases; adapt its dimensions and address only after confirming the panel documentation.
When PIO or HSTX matters
The Pico’s programmable-I/O system can implement custom high-speed interfaces, and Raspberry Pi’s maintained examples include PIO display code. The HSTX example describes 62.5 Mbps serial output for its ST7789 setup. That figure is the example’s configured serial output rate, not a guaranteed refresh rate or game frame rate. Actual animation speed also depends on the amount of screen data sent, drawing code, bus configuration, panel behavior and other work performed by the game loop.
Rank #3
- Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
- Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
- Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
- Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
- What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.
Verify voltage and logic levels before wiring
Pico GPIO is a 3.3 V system. Raspberry Pi’s SSD1306 documentation explicitly warns that the Pico GPIO and I2C interface cannot be used at 5 V and calls for a 3.3 V-capable display board or level shifting when a 5 V board is involved. The 16×2 I2C example gives the same general electrical caution for its I2C lines. Read the module’s schematic or specifications rather than assuming that a breakout’s “5 V” marking makes every signal safe.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →- Confirm the display supply voltage range.
- Confirm the logic-high threshold accepted by display inputs.
- Determine whether the breakout includes a regulator or level shifter, and which pins it protects.
- Do not connect a 5 V pull-up to an I2C line that is connected directly to Pico GPIO.
- Connect a common ground between Pico and display.
- Power the backlight according to the board’s documented circuit; do not assume its LED input is a logic pin.
If the module is intended for 5 V logic and has no documented level conversion, use an appropriate level shifter or choose a 3.3 V-compatible board. A level shifter does not correct an incompatible supply voltage, connector pinout or initialization sequence.
A practical selection procedure
- Define the visual minimum. Write down whether the game needs full color, monochrome pixels or text only. This immediately narrows the choice to ST7789, SSD1306/SSD1309 or a character LCD.
- Set the usable rectangle. Decide the minimum width and height for the playfield, score and status areas. For a color screen, check whether a 240×240 layout is sufficient or whether the game needs a different aspect ratio.
- Inventory Pico pins. Reserve GPIO for buttons, joystick axes, audio, SD storage or sensors. Then choose SPI, I2C or a programmable-I/O arrangement that leaves those controls accessible.
- Read the module documentation. Verify voltage, logic levels, connector labels, resolution, color format, reset and backlight requirements. Do not infer these values from the controller name alone.
- Match a maintained example. Start from the Raspberry Pi example closest to the controller and interface: HSTX or PIO for the documented ST7789 path, I2C for SSD1306, SPI for SSD1309, or I2C for the 16×2 character LCD.
- Prototype with short wires. Connect only Pico, display, ground and the required control lines. Confirm that the display initializes before adding buttons, audio or a battery circuit.
- Test the real game layout. Draw the largest sprite, score panel and playfield you intend to use. Check clipping, rotation, color order and whether the update method leaves visible artifacts.
- Freeze the pin map. Once the prototype works, document every Pico GPIO-to-display connection in the source and assembly notes before building the enclosure.
Bring up an ST7789 color screen
1. Identify the module variant
Write down the exact resolution and pin labels from the listing or manufacturer documentation. If the board is described only as a generic ST7789, treat the dimensions and wiring as unconfirmed until you inspect its schematic or a reliable pinout.
2. Start from the official example
Use the HSTX source for the documented WaveShare 1.3-inch setup or the PIO source for the 240×240 configuration. Keep the example’s initialization and timing intact while you prove the wiring. Change one variable at a time: first GPIO assignments, then dimensions, then orientation or color order.
3. Confirm the electrical connections
Connect only the signals required by your specific breakout. Typical labels include power, ground, serial clock, serial data, chip select, data/command and reset, but a board may omit or internally tie some of them. Follow the board’s pinout rather than wiring from a generic diagram.
Recommended Free Tools
Rank #4
- Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
- Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
- Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
- Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
- Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
4. Run a simple visual test
Display a solid color, a border and an orientation marker before attempting the game. A border that appears on the wrong edges indicates a rotation or width/height mismatch; incorrect colors can indicate a color-order setting; no image can result from wiring, reset, chip-select or voltage errors.
5. Add the game renderer
Choose a drawing strategy that matches the screen and memory available to the application. A 240×240 RGB565 frame contains 57,600 pixels and requires 115,200 bytes when stored as two bytes per pixel, before any buffers, sprites or game state are included. If a full framebuffer is inconvenient, render smaller regions or send changed rectangles, provided the display driver supports that approach.
Bring up an SSD1306 or SSD1309 OLED
SSD1306 over I2C
Begin with Raspberry Pi’s SSD1306 example and select the code path matching the panel’s 128×32 or 128×64 geometry. Confirm the I2C address and pull-up arrangement from the module documentation. Keep the first test to text and a few simple shapes so you can distinguish an address problem from a drawing or font problem.
SSD1309 over SPI
The Pico SDK example list includes an SSD1309 SPI example. Because the cited list does not establish one universal panel size or pinout, obtain those values from the exact board documentation before adapting the driver. Check whether the board requires separate data/command and reset signals and whether its backlight or power circuit differs from an SSD1306 board.
Designing a monochrome game
Monochrome displays work well for maze games, falling-block outlines, dashboards, card symbols and text-heavy interfaces. Define a one-bit art style early: use patterns, inverse pixels and animation rather than relying on color to communicate game state. This can reduce the amount of display data you need to redraw, but the sources do not provide a universal refresh-rate or power advantage for every OLED module.
Best Value
- 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
- Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
- Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
- HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
- What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.
Use a 16×2 LCD only when characters are the interface
The 16×2 example is useful when the game’s output is “SCORE 0120,” “LEVEL 03” or a short diagnostic message. It is not a substitute for a raster display: the character cell layout cannot place arbitrary pixels, animate sprites smoothly or show a conventional pixel-art playfield. If you need both graphics and text, use a graphical display and render text within it, or treat the character LCD as a separate debug/status device.
Plan the game around the display’s limits
Resolution and readability
Choose a logical game grid that maps cleanly to the physical panel. Integer scaling keeps pixel art crisp; fractional scaling produces uneven blocks. Leave a margin for score and status instead of allowing sprites to use every edge pixel, especially on a square 240×240 panel.
Memory and update regions
Estimate framebuffer memory before selecting a rendering architecture. Color depth, double buffering and sprite assets all compete with game state. If the display driver can write windows or rectangles, updating only changed areas can reduce transfers, but the benefit depends on the driver and game scene; it is not established by Raspberry Pi’s examples as a measured frame-rate guarantee.
Free tools Windows power users keep installed
One-click scans. No signup required.
Inputs and timing
Display transfers should not monopolize the pins or timing budget needed for buttons and other controls. Poll or debounce inputs independently from rendering, and keep the game’s logical tick separate from display update work so a slow redraw does not make controls feel inconsistent. These are software design choices, not specifications of a particular panel.
Troubleshoot by symptom
Nothing appears
- Power off and recheck ground, supply voltage and the module’s enable or reset requirements.
- Verify that the code’s GPIO assignments match the physical wires and that chip select is asserted for the display.
- Check that the panel’s controller and interface match the example you selected; an SSD1306 I2C driver will not initialize an ST7789 SPI panel.
- Confirm that the display is not being held in reset and that its backlight is controlled as the board documentation specifies.
The image is shifted, clipped or rotated
- Compare the configured width and height with the panel’s actual dimensions.
- Try the documented orientation and column/row-offset settings for that module revision.
- Remember that a 240×320 ST7789 panel needs different geometry from the 240×240 configuration in the PIO example.
Colors or pixels look wrong
- Check color-order and pixel-format settings in the driver.
- Use a solid-color and border test to separate byte-order errors from drawing-coordinate errors.
- Inspect signal integrity and wire length if artifacts appear only at higher clock settings; lower the configured rate while diagnosing.
I2C communication fails
- Confirm the display address and that pull-ups are present at a safe voltage.
- Ensure no 5 V pull-up is connected to Pico GPIO or I2C.
- Check that the panel is powered and that the selected code path matches 128×32 versus 128×64 for SSD1306.
The game is slow
- Measure how many pixels are sent per update rather than assuming the controller’s headline bus rate equals frame rate.
- Reduce the redraw area, simplify full-screen effects or use a smaller logical playfield.
- Profile game logic separately from display transfer and input handling.
- Remember that Raspberry Pi’s 62.5 Mbps figure describes the ST7789 example’s serial output configuration, not a promised real-world refresh rate.
What the official examples do—and do not—tell you
The Raspberry Pi examples establish a supported software starting point for several controller/interface combinations:
- An ST7789 serial LCD image-display path, including an HSTX example tested with a WaveShare 1.3-inch module: source file.
- An ST7789 PIO configuration defining 240×240 and discussing 240- and 320-pixel panel heights: source file.
- SSD1306 I2C support for 128×32 and 128×64 displays: source file.
- An SSD1309 SPI example listed with the broader Pico SDK examples.
- A 16×2 character LCD driven through an I2C bridge: source file.
Those examples do not establish a universal price, brightness, power draw, response time, retail supply situation or measured game frame rate. They also do not prove that every current listing with the same controller label is electrically identical to the tested hardware. Use the examples to shorten software bring-up, then validate the exact module you are building with.
Decision checklist
- Choose ST7789 SPI when color and pixel-art animation are central to the game.
- Choose SSD1306 I2C when a 128×32 or 128×64 monochrome canvas is enough and you want to conserve SPI wiring.
- Choose SSD1309 SPI when monochrome graphics fit but an SPI display path suits your pin plan better; verify the panel-specific geometry and wiring.
- Choose a 16×2 I2C character LCD for text, scores and diagnostics, not a graphical playfield.
- For any choice, verify exact resolution, connector, pinout, voltage, logic level, reset/backlight behavior and software compatibility before applying power.
The practical recommendation
For most new Pico game prototypes, an ST7789 SPI module is the strongest first experiment because Raspberry Pi documents both a color image path and low-level PIO/HSTX examples. Select a specific module only after checking its dimensions and electrical details against those examples. Move to SSD1306 or SSD1309 when the game’s art is intentionally monochrome, and use the 16×2 path only when characters—not pixels—are the required output.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Quick Recap
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.

