Source: https://mokxi.com/learn/rp2040-zero-pinout
Updated: 2026-10-26

Learn

# Waveshare RP2040-Zero pinout: every pin, the NeoPixel and the bottom row

Beginner

Written by the Mokxi team, updated October 26, 2026

Start building free Open the editor

Or see every lesson.

- 455 parts on the bench
- 43 boards running now
- 1.00x real time, on every board

Click to open it in the editor

The board’s own NeoPixel on GP16 fading around the color wheel, with Adafruit_NeoPixel and nothing to wire.

The Waveshare RP2040-Zero is the Raspberry Pi Pico’s RP2040 on a board 23.5 by 18 mm, with a USB-C socket, nine pins down each side and five along the bottom. Every pin is named by its GPIO, so the pin marked GP4 is GPIO 4 in code. This page lists all twenty-three pins in Waveshare’s order with what each one can do, the bus defaults, the PWM slices, the NeoPixel and why the board does not belong in a breadboard.

The circuit above is the board in Mokxi on its own, fading its NeoPixel on GP16 around the color wheel. There is no plain LED on the board, which is the first thing to know about it. The table is held to the same board model the simulator runs, and where Mokxi does less than the chip, the page says so.

## Every pin, in Waveshare’s order

With the USB socket at the top, Waveshare numbers the pins 1 to 9 down the left side, 10 to 14 along the bottom from left to right, and 15 to 23 up the right side. The left side reads 5V, GND, 3V3, GP29, GP28, GP27, GP26, GP15 and GP14. The bottom reads GP13, GP12, GP11, GP10 and GP9. The right side, from the top, reads GP0 down to GP8, so pin 23 is GP0 at the top right.

In code a pin is its GPIO number: digitalWrite(4, HIGH) drives GP4, and A0 to A3 are GP26 to GP29. The PWM column names the slice and channel: "PWM 2A" is slice 2, channel A. The bus pins are the defaults of the Arduino core’s board definition for the RP2040-Zero.

Waveshare RP2040-Zero: pins 1 to 23 in Waveshare’s order, USB at the top
Pin | GPIO | What it can do | Watch out for

5V | - | Pin 1. USB 5 V. | Not a GPIO.

GND | - | Pin 2. Ground. | -

3V3 | - | Pin 3. The regulator’s 3.3 V output. | Not a GPIO.

GP29 | 29 | Pin 4. ADC3 (A3). PWM 6B. | -

GP28 | 28 | Pin 5. ADC2 (A2). PWM 6A. | -

GP27 | 27 | Pin 6. ADC1 (A1). PWM 5B. | -

GP26 | 26 | Pin 7. ADC0 (A0). PWM 5A. | -

GP15 | 15 | Pin 8. PWM 7B. SPI1 MOSI (default). | -

GP14 | 14 | Pin 9. PWM 7A. SPI1 SCK (default). | -

GP13 | 13 | Pin 10, bottom row. PWM 6B. SPI1 CS (default). | Bottom row: see below.

GP12 | 12 | Pin 11, bottom row. PWM 6A. SPI1 MISO (default). | Bottom row: see below.

GP11 | 11 | Pin 12, bottom row. PWM 5B. | Bottom row: see below.

GP10 | 10 | Pin 13, bottom row. PWM 5A. | Shorts to GP9 in a breadboard.

GP9 | 9 | Pin 14, bottom row. PWM 4B. Serial2 RX. | Shorts to GP10 in a breadboard.

GP8 | 8 | Pin 15. PWM 4A. Serial2 TX. | -

GP7 | 7 | Pin 16. PWM 3B. | -

GP6 | 6 | Pin 17. PWM 3A. | -

GP5 | 5 | Pin 18. PWM 2B. I2C SCL (default). SPI SS (default). | Shared by Wire and SPI.

GP4 | 4 | Pin 19. PWM 2A. I2C SDA (default). SPI MISO (default). | Shared by Wire and SPI.

GP3 | 3 | Pin 20. PWM 1B. SPI MOSI (default). | -

GP2 | 2 | Pin 21. PWM 1A. SPI SCK (default). | -

GP1 | 1 | Pin 22. PWM 0B. UART0 RX on the chip. | In Mokxi a plain pin; Serial goes to the monitor.

GP0 | 0 | Pin 23. PWM 0A. UART0 TX on the chip. | In Mokxi a plain pin; Serial goes to the monitor.

## The bottom row, and why the board stays out of the breadboard

The five bottom pins, GP13 to GP9, run across the board in one line. Pushed into a breadboard with the side rows straddling the channel, that line lies along the breadboard’s strips, so GP9 and GP10 land in the same strip and short together. Mokxi models this as the bench does: push the board in and the two pins are one net.

So keep the RP2040-Zero beside the breadboard and reach it with jumper wires, as the Blink starter does with an LED and a 220 ohm resistor on GP0. The two side rows alone carry I2C, SPI and all four analog inputs, so most projects never need the bottom row; Serial2’s RX on GP9 is the one bus pin down there.

## The NeoPixel, and no plain LED

The only light a sketch can drive is a WS2812 NeoPixel on GP16, PIN_NEOPIXEL, powered from 3.3 V. GP16 is inside the board and reaches no pin. In Mokxi it is a full WS2812 model, so Adafruit_NeoPixel pixel(1, PIN_NEOPIXEL, NEO_GRB + NEO_KHZ800) works as it does on a desk, and the board draws the NeoPixel in the color it was last sent.

There is no LED_BUILTIN on this board, so a Blink that uses it does not compile, which is more honest than one that blinks nothing. Wire an LED and a resistor from a pin to GND instead. Mokxi does not model the power LED.

## Analog inputs, PWM and the pads on the back

The analog inputs are GP26 to GP29, which are A0 to A3, the RP2040’s four ADC inputs, all on the left side. analogRead returns ten bits against 3.3 V unless analogReadResolution asks for more. On a Pico, GP29 measures VSYS inside the board; here it is a pin of its own.

Every GPIO pin can do PWM, and GPIO n is on slice (n / 2) mod 8, channel A for an even pin and B for an odd one. Pins on one slice share a frequency, so GP0 and GP1 share slice 0, and GP10, GP11, GP26 and GP27 all sit on slice 5. Nine more GPIOs, GP17 to GP25, come out as solder pads on the back of the board. Mokxi does not model those pads.

## Serial, I2C and SPI

Serial is the USB port in the Arduino core, and in Mokxi it reaches the serial monitor directly. Serial1 is the same port here, and GP0 and GP1 stay ordinary pins. Serial2 is UART1, with TX on GP8 and RX on GP9, for a GPS module or another board.

Wire.begin() puts I2C on GP4 for SDA and GP5 for SCL. SPI is GP2, GP4, GP3 and GP5 for SCK, MISO, MOSI and SS, and SPI1 is GP14, GP12, GP15 and GP13. Wire and SPI share GP4 and GP5, so a sketch that uses both can put its SPI device on SPI1. In Mokxi the buses run in software on those pins, because the RP2040’s I2C and SPI blocks are not modeled.

## The two buttons, the flash and getting a sketch onto it

Beside the USB-C socket are two buttons, BOOT and RESET, and the board carries 2 MB of flash, as a Pico does. To put a sketch on a real one, hold BOOT while you plug it in, or hold BOOT and tap RESET: the RP2040 then shows up as a drive called RPI-RP2, and the Arduino IDE, or a .uf2 dragged onto that drive, writes the flash. After the first upload the Arduino core usually resets the board into that mode by itself, so the buttons are only needed when a sketch has crashed the USB port.

## Questions

Which RP2040-Zero pins are analog?

GP26 to GP29, which are A0 to A3 in code. They are pins 7 to 4 on the left side.

Which pin is the NeoPixel on the RP2040-Zero?

GP16, which is `PIN_NEOPIXEL`. It is inside the board and reaches no pin.

Does the RP2040-Zero have an LED_BUILTIN?

No. The board has no plain user LED, so `LED_BUILTIN` is not defined. Wire an LED and a resistor to a pin, or color the NeoPixel.

What are the RP2040-Zero I2C pins?

SDA is GP4 and SCL is GP5, the pins `Wire.begin()` uses.

Can I put the RP2040-Zero in a breadboard?

Not with its bottom row in. The five bottom pins sit in one line, so GP9 and GP10 land in the same strip and short together. Keep it beside the breadboard and use jumpers.

Which pins are UART on the RP2040-Zero?

GP0 and GP1 are UART0’s TX and RX, and GP8 and GP9 are `Serial2`’s TX and RX. `Serial` is the USB socket.

Related

## Keep going

Raspberry Pi Pico Pinout: GPIO, PWM, ADC and Power ESP32-C3 SuperMini Pinout: LED, ADC, I2C, Boot Pins Arduino NeoPixel (WS2812B): Wiring and Code How to Use a Breadboard: Your First Circuit Raspberry Pi Pico PWM: Slices, Channels and 1 kHz Run the RP2040-Zero in the simulator Help: the RP2040-Zero model The project page, with the full sketch Beginner

Sources

## Where the facts on this page come from

- Waveshare: the RP2040-Zero wiki (pinout, NeoPixel, back pads)
- arduino-pico: the waveshare_rp2040_zero variant header (PIN_NEOPIXEL, Serial2, SPI, Wire)
- Raspberry Pi: the RP2040 datasheet (PWM slices, ADC inputs)

## Build this for real

Open the editor, change a value and watch the number move with it. Nothing to install, and no account needed.

Start building free Open the editor
