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

Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.

Yes. A Raspberry Pi Pico or another RP2040 board can drive a typical 1.28-inch, 240×240 GC9A01/GC9A01A round TFT from the Arduino IDE. The reliable path is to install the Earle Philhower Arduino-Pico core, connect the panel to hardware SPI, prove the wiring with a test pattern, and only then add animated eyes or gauges.

This guide assumes a separate Raspberry Pi Pico and a generic four-wire SPI display. Pin labels, voltage handling, reset wiring, backlight circuits and rotation can differ between modules, so check the display’s own documentation before applying the example wiring.

What you are building

The round panel is still addressed as a rectangular 240×240 pixel screen; the corners are simply hidden by the circular glass. That makes it suitable for two related interfaces:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • Animated eyes: eyeballs, irises, pupils, highlights and optional blinking. A pupil can wander, follow a joystick, or represent a sensor state.
  • Circular gauges: tick marks, a needle, a progress arc and a numeric value for speed, temperature, battery level or another input.

The graphics and the data source are separate. Start with simulated values so display problems are not confused with sensor problems, then substitute an analog input, sensor, serial message or wireless value.

#1 Best Overall
Sale
2Pcs Raspberry Pi Pico Development Board, Raspberry Pi RP2040 Dual-core ARM Cortex M0+ Processor, Running Up to 133 MHz, Support C/C++/Python, 2MB Quad SPI Flash Integrated with SPI/I2C/UART Interface
  • The Raspberry Pi Pico is a beginner-friendly microcontroller board that uses MicroPython to give you a taste of the Internet of Things and microcontrollers. The RP2040 is a well-designed microprocessor that can be utilized in almost any Internet of Things project. It has enough power to complete the task quickly.
  • 【Raspberry Pi RP2040 Microcontroller】Raspberry Pi Pico features Dual-core ARM Cortex M0+ processor, flexible clock running up to 133 MHz. With 264KB of SRAM, and 2MB of on-board Flash memory.Supports up to 16 MB of off chip flash memory via a dedicated QSPI bus
  • 【Multiple Software Support】Pico has rich and complete software support, it comes with a complete Rasberry Pi official C/C++ SDK, Micropython SDK.The programming and burning of Pico need to be carried out on the computer. Supported operating systems and computers include:Raspberry Pie with Raspberry Pi OS,Other platforms equipped with Debian based Linux system Computer with MacOS, Computers with Windows, etc.
  • 【Rich Hardware Interface】Raspberry Pi Pico has 30 GPIO pins, 4 pins for analog signal input and 26 × multi-function GPIO pins, 2 × SPI, 2 × I2C, 2 × UART, 3 × 12-bit ADC, 16 × controllable PWM channels.USB 1.1 supported by host and device, The installation mode can be flexibly selected by users to facilitate welding with other development boards.
  • 【Build Project in Tiny Size】Only 2.1cm*5.1cm ( as small as your thumb). Pico has been designed to use either soldered 0.1" pin-headers or can be used as a surface-mountable 'module'.

Parts and software

  • Raspberry Pi Pico or a compatible RP2040 board
  • GC9A01/GC9A01A 1.28-inch SPI TFT (normally 240×240 and 65K color)
  • Short jumper wires, optional breadboard and a USB cable
  • Arduino IDE
  • Arduino-Pico board package
  • Adafruit GFX Library and Adafruit GC9A01A Library

Install the current Arduino-Pico package using the procedure in its documentation: add its current Boards Manager URL in File → Preferences → Additional Boards Manager URLs, open Tools → Board → Boards Manager, install the Earle Philhower RP2040 package, select the exact board and choose its USB port. Upload Blink before attaching the display.

For a first project, Adafruit’s libraries are easiest to explain and install. TFT_eSPI is a good alternative when you need sprites, more fonts or performance-oriented configuration; its driver and pin definitions must be selected in the setup files. Arduino_GFX is another option for projects supporting several display families.

Understand the display pins

A common module exposes:

Display label Meaning
GND Ground
VCC Display power
SCL, CLK SPI clock
SDA, DIN SPI data from the RP2040 (MOSI), not I²C SDA
CS Active-low chip select
DC, RS, A0 Data/command select
RST, RES Hardware reset
BL, BLK, LED Backlight power or control
MISO Often absent on write-only display modules

The RP2040 uses 3.3V logic. Some specific modules advertise 3.3V/5V power input, but that does not make every GC9A01 board 5V-safe. Do not drive a backlight directly from a GPIO unless the module documentation specifies the required circuit.

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

Example Pico wiring

This is one practical SPI0 arrangement, not a universal GC9A01 pinout. Verify your board and module labels first.

GC9A01 Raspberry Pi Pico example
GND GND
VCC 3V3 OUT when required by the module
SCL/CLK GP2 (SPI0 SCK)
SDA/DIN GP3 (SPI0 MOSI/TX)
CS GP20
DC GP18
RST/RES GP19
BL/BLK 3V3 or the module’s specified backlight circuit

The mapping is illustrated by a community Pico/GC9A01 project; it is not a standard shared by all inexpensive modules.

Rank #2
hiBCTR 6-Pack RP2040-Zero Board, Dual-Core Cortex M0+, Pico
  • DUAL-CORE PERFORMANCE & MEMORY: Features the RP2040 microcontroller chip with a dual-core ARM Cortex M0+ processor running at a flexible clock speed up to 133 MHz. Equipped with 264KB of on-chip SRAM and 2MB of on-board Flash memory, providing ample space for complex code and data storage. Includes an on-chip accelerated floating point library for demanding calculations.
  • VERSATILE I/O & PERIPHERALS: Provides access to 29 GPIO pins from the RP2040 chip (20 accessible via pin headers, others via soldering). Features a rich set of peripherals including 2x SPI, 2x I2C, 2x UART, 4x 12-bit ADC, and 16 controlled PWM channels. Supports USB1.1 host and device modes for flexible connectivity and communication.
  • CUSTOM PERIPHERALS & POWER MODES: Includes 8 programmable I/O (PIO) state machines, allowing for the creation of custom peripheral support beyond standard hardware. Supports low-power sleep and hibernation modes, making it suitable for battery-powered applications. Programming is simplified with drag-and-drop file transfer via USB mass storage recognition.
  • COMPACT FORM & EASY INTEGRATION: Features a stamp hole design allowing the board to be directly soldered onto a user-designed backplane for compact and robust integration into custom projects. Includes an accurate on-chip clock, timer, and a temperature sensor. The pins arrive unsoldered, offering flexibility for either direct mounting or use with the included pin headers.
  • COMPLETE 6-PACK SET & SUPPORT: Includes 6 x RP2040-Zero Microcontroller Boards and 6 x Pin Header Sets. Digital documentation and technical support for setup, programming, and troubleshooting are available through our store customer service.

Run a display test first

Install Adafruit GFX Library and Adafruit GC9A01A through Sketch → Include Library → Manage Libraries. Then try this small test before writing animation code:

#include <Adafruit_GFX.h>
#include <Adafruit_GC9A01A.h>
#include <SPI.h>

#define TFT_CS  20
#define TFT_DC  18
#define TFT_RST 19

Adafruit_GC9A01A display(TFT_CS, TFT_DC, TFT_RST);

void setup() {
  display.begin();
  display.setRotation(0);
  display.fillScreen(GC9A01A_BLACK);
  display.fillCircle(120, 120, 80, GC9A01A_BLUE);
  display.drawCircle(120, 120, 80, GC9A01A_WHITE);
  display.setTextColor(GC9A01A_WHITE);
  display.setTextSize(2);
  display.setCursor(62, 110);
  display.print("GC9A01");
}

void loop() {}

The expected result is a blue circle, white outline and text. The exact constructor should match the installed library version; Adafruit’s current guide and example are the reference for its product.

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

Drawing eyes

Keep important artwork inside an inscribed circle (roughly radius 115). A useful two-eye starting layout is left center (75,120), right center (165,120), eye radius 35–45 pixels and pupil radius 12–20 pixels.

Draw each eye as a white or colored eyeball, an iris, a dark pupil and a small highlight. To aim a pupil at a target direction, normalize the direction vector and clamp its travel:

float length = sqrt(dx * dx + dy * dy);
if (length > 0.0f) { dx /= length; dy /= length; }
float maxOffset = eyeRadius - pupilRadius - 3;
int pupilX = eyeX + dx * maxOffset;
int pupilY = eyeY + dy * maxOffset;

For a beginner animation, redraw each eye’s bounding rectangle: restore the background, draw the eyeball, then the iris, pupil and highlight. Do not call fillScreen() for every frame. Full-screen clearing increases SPI traffic and commonly causes flicker.

Rank #3
Seeed Studio XIAO RP2040 Microcontroller, with Dual-Core ARM Cortex M0+ Processor, Supports Arduino, MicroPython and CircuitPython with Rich Interfaces.
  • 📌【Powerful MCU】 XIAO RP2040 is a microcontroller using the Raspberry RP2040 chip with 264KB of SRAM, and 2MB of onboard Flash memory. This microcontroller has dual-core ARM Cortex M0+ processor, and it can runs at up to 133MHz.
  • 📌【Multiple Interfaces】 This version of XIAO have 11 digital pins, 4 analog pins, 11 PWM Pins,1 I2C interface, 1 UART interface, 1 SPI interface, 1 SWD Bonding pad interface.
  • 📌【Flexible Compatibility】Support Micropython/Arduino/CircuitPython. Easy project operation: Breadboard-friendly & SMD design, no components on the back.
  • 📌【Small Size】 As small as a thumb(20x17.5mm) for wearable devices and small projects.
  • 📌【Broad Compatibility】 Pins compatible with Seeeduino XIAO and supports Seeeduino XIAO's Expansion board.

Random idle movement can be made smoother by interpolating the current pupil position toward a new target. A joystick, potentiometer, accelerometer, distance sensor or serial cursor can replace the simulated target later. Blinking is a small state machine: open, closing, closed and opening; cover the upper part of the eye with a background-colored shape rather than erasing the entire screen.

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

Drawing a circular gauge

Define a center, radius, value range and angular sweep. Convert a value to an angle like this:

float fraction = (value - minValue) / (maxValue - minValue);
fraction = constrain(fraction, 0.0f, 1.0f);
float angle = startAngle + fraction * (endAngle - startAngle);
int x = cx + cos(angle) * radius;
int y = cy + sin(angle) * radius;

sin() and cos() use radians. Draw the dial background, ticks and labels once. For each update, restore the old needle region, draw the new needle and redraw a center hub over it. A progress arc can be built from short line segments or an arc primitive, with a contrasting active color.

For a combined 240×240 layout, try eye centers around (78,80) and (162,80), a gauge centered near (120,165) with radius 48–55, and a 0–100 value below the eyes. Adjust for your bezel and rotation.

Redraw and memory strategy

Partial redraw is the simplest optimization: maintain a static background and update only the eye or gauge bounding box. Sprites or off-screen regions can remove tearing when supported by your library. A full RGB565 240×240 framebuffer requires about 115,200 bytes, a substantial share of the RP2040’s 264KB SRAM once the stack, program data and other buffers are included. Do not assume that full-screen double buffering is always comfortable.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #4
hiBCTR 3-Pack RP2040-Zero Board, Dual-Core Cortex M0+, Pico
  • DUAL-CORE PERFORMANCE & MEMORY: Features the RP2040 microcontroller chip with a dual-core ARM Cortex M0+ processor running at a flexible clock speed up to 133 MHz. Equipped with 264KB of on-chip SRAM and 2MB of on-board Flash memory, providing ample space for complex code and data storage. Includes an on-chip accelerated floating point library for demanding calculations.
  • VERSATILE I/O & PERIPHERALS: Provides access to 29 GPIO pins from the RP2040 chip (20 accessible via pin headers, others via soldering). Features a rich set of peripherals including 2x SPI, 2x I2C, 2x UART, 4x 12-bit ADC, and 16 controlled PWM channels. Supports USB1.1 host and device modes for flexible connectivity and communication.
  • CUSTOM PERIPHERALS & POWER MODES: Includes 8 programmable I/O (PIO) state machines, allowing for the creation of custom peripheral support beyond standard hardware. Supports low-power sleep and hibernation modes, making it suitable for battery-powered applications. Programming is simplified with drag-and-drop file transfer via USB mass storage recognition.
  • COMPACT FORM & EASY INTEGRATION: Features a stamp hole design allowing the board to be directly soldered onto a user-designed backplane for compact and robust integration into custom projects. Includes an accurate on-chip clock, timer, and a temperature sensor. The pins arrive unsoldered, offering flexibility for either direct mounting or use with the included pin headers.
  • COMPLETE 3-PACK SET & SUPPORT: Includes 3 x RP2040-Zero Microcontroller Boards and 3 x Pin Header Sets. Digital documentation and technical support for setup, programming, and troubleshooting are available through our store customer service.

Actual animation speed depends on SPI settings, wiring, library, board core and changed area; avoid promising a universal frame rate. If updates look slow, shorten wires, reduce the region, precompute tick coordinates, lower animation demands or move to TFT_eSPI sprites.

Adafruit, TFT_eSPI or an integrated board?

  • Adafruit GC9A01A: shortest beginner path, clear examples and Library Manager installation. Generic modules may need different initialization or wiring.
  • TFT_eSPI: useful for sprites, fonts and more control, but requires careful driver, pin and setup-file configuration. Its documentation lists GC9A01 and RP2040 support.
  • Arduino_GFX: sensible when one project must support several buses or controller families, at the cost of more configuration.

A separate Pico plus display teaches SPI and lets you replace either part. An integrated board such as the Waveshare RP2040-LCD-1.28 is more compact and may add motion sensors and battery circuitry, but it has a board-specific pin map and internally occupied GPIOs.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Troubleshooting by symptom

Backlight on, no graphics

  1. Check common ground and the module’s required supply voltage.
  2. Confirm the exact RP2040 board and USB port are selected.
  3. Verify CS, DC, reset and hardware SPI pins.
  4. Try rotations 0–3 and run the vendor graphics example.
  5. Only after wiring and power are verified, try another library.

A lit backlight proves only that the backlight has power.

White screen

Suspect the wrong driver or initialization, incorrect DC/CS, an unconnected reset line, or pins that do not match the selected board.

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

Random pixels, corruption or resets

Shorten jumper wires, improve breadboard contacts, check power stability and inspect SPI configuration. In TFT_eSPI, ensure only the intended setup file, driver and pin definitions are active. A directly GPIO-driven backlight or weak USB supply can also cause flicker and resets.

Best Value
Sale
5 Pack Development Board Compatible with Raspberry Pi Pico RP2040, Solderable Pin Header Version, Dual-Core ARM Cortex-M0+ MCU up to 133MHz, 2MB Flash, MicroPython and C/C++ for Education and DIY
  • 🔌Solderable Raspberry Pi Pico RP2040 Development Boards This version comes with unsoldered pin headers, allowing flexible custom wiring and integration with breadboards or custom PCBs, perfect for hobbyists, makers, and embedded projects requiring tailored connections.
  • ⚡High-Performance RP2040 Microcontroller Powered by the dual-core ARM Cortex-M0+ RP2040 processor running up to 133MHz, these boards provide fast processing, 264KB SRAM, and 2MB onboard flash, delivering reliable performance for real-time control and IoT experiments.
  • 🧰Flexible Hardware Interfaces Equipped with 30 GPIO pins, analog inputs, PWM channels, SPI, I2C, UART, and USB 1.1 support, these solderable Pico boards allow users to connect sensors, displays, motors, and other peripherals for educational, DIY, and embedded applications.
  • 📐Compact Design for Custom Projects With its small thumb-sized footprint and solderable headers, the boards can be used on breadboards, custom PCBs, or as surface-mounted modules, making them ideal for space-constrained or portable projects.
  • 🎓Ideal for Learning, DIY and Embedded Systems These Raspberry Pi Pico boards are widely used in education, robotics, automation, and hobby electronics, providing beginners and advanced makers with a reliable platform for firmware development, electronics experiments, and project prototyping.

Rotation or color order is wrong

Use the library rotation and color-order settings; do not rewire solely because the image is upside down.

Needle trails or eye flicker

The old shape is not being restored with the exact background. Redraw the bounding region, keep the background solid, slow the animation, or use a sprite. Avoid full-screen clears in loop().

Next steps

Once the test pattern is stable, add one feature at a time: simulated pupils, blinking, a static gauge, needle animation, then real sensor data. Two displays can share SCK and MOSI while using separate CS pins; select only one at a time. A touch-enabled module adds a separate I²C touch controller and is worthwhile only when touch is part of the design.

Free tools Windows power users keep installed

One-click scans. No signup required.

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

For purchasing, choose Adafruit when documentation and predictable support matter most, a documented Waveshare module when price matters, or an integrated RP2040 display board for a compact motion-aware prototype. Treat prices and module specifications as time- and product-specific, not universal GC9A01 facts.

Frequently Asked Questions

Is the GC9A01 display I²C or SPI?

The common 1.28-inch GC9A01 modules are four-wire SPI displays. A pin labelled SDA or DIN normally carries SPI MOSI data, not I²C SDA.

Do all GC9A01 modules use the same Pico pins?

No. The controller family does not define a universal breakout pinout. Follow the module’s schematic and change the CS, DC, reset and SPI definitions accordingly.

Why does the backlight work but the screen stay blank?

Backlight power does not prove that SPI commands are reaching the controller. Check ground, supply, CS, DC, reset, SPI pins, board selection and library initialization.

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

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.