# Pinout (Pico 2 W) | Pico pin | GPIO | Function | Goes to | Notes | |---|---|---|---|---| | 1 | GP0 | UART0 TX | OUT KIT tip, via 10 Ω | drive strength 8–12 mA | | 2 | GP1 | UART0 RX | 6N137 output (pin 6), 1 kΩ pull-up to 3.3 V | MIDI IN | | 4 | GP2 | matrix row 1 | KICK, KICK 2, SNARE (col 4 empty) | input, pull-up | | 5 | GP3 | matrix row 2 | HAT, HAT 16, PERC, GHOST | input, pull-up | | 6 | GP4 | UART1 TX | OUT SYNTH tip, via 10 Ω | drive strength 8–12 mA | | 7 | GP5 | matrix row 3 | BASS, MEL A, MEL B, PAD | input, pull-up | | 9 | GP6 | matrix column 1 | KICK, HAT, BASS | driven low one at a time, else Hi-Z | | 10 | GP7 | matrix column 2 | KICK 2, HAT 16, MEL A | 〃 | | 11 | GP8 | matrix column 3 | SNARE, PERC, MEL B | 〃 | | 12 | GP9 | matrix column 4 | GHOST, PAD | 〃 | | 14 | GP10 | encoder A (SIA) | encoder | pull-up | | 15 | GP11 | encoder B (SIB) | encoder | pull-up | | 16 | GP12 | encoder push (SW) | encoder | pull-up | | 17 | GP13 | SEED | button to ground | pull-up | | 19 | GP14 | RUN | toggle to ground | pull-up | | 22 | GP17 | SPI0 CSn | LCD SCE (pin 3) | can be tied to GND instead | | 24 | GP18 | SPI0 SCK | LCD SCLK (pin 7) | | | 25 | GP19 | SPI0 TX | LCD DN / MOSI (pin 6) | | | 26 | GP20 | GPIO | LCD D/C (pin 5) | | | 27 | GP21 | GPIO | LCD RST (pin 4) | | | 31 | GP26 | ADC0 | ENERGY pot wiper | | | 32 | GP27 | ADC1 | DRIFT pot wiper | | | 33 | AGND | | pots, left lugs | | | 36 | 3V3 | | 3V3 strip (AB): LCD, encoder, pots, MIDI OUT rings via 33 Ω, opto pull-up | | | 40 | VBUS | | 5 V strip (Z): 6N137 VCC and enable only | powered from the Pico's USB | | 23 | GND | | GND strip (AA) | all Pico GND pins are common | Free: GP15, GP16, GP22, GP28 (ADC2), and GP17 if SCE is tied to ground. The LCD backlight runs straight from 3.3 V through 330 Ω; GP22 could dim it later through a transistor. ## Firmware notes for these pins - **Pull-ups, not pull-downs.** RP2350 erratum E9 makes the internal pull-downs unreliable on inputs, so every input here is active-low with a pull-up. - **Drive strength.** GP0 and GP4 drive the MIDI current loops directly, about 6–8 mA. That's above the RP2350's default 4 mA drive, so set them to 8 or 12 mA with `gpio_set_drive_strength()`. - **Matrix.** - Drive one column low at a time and leave the others Hi-Z, then read the three rows. On the idle columns, disable the input buffer (`gpio_set_input_enabled(pin, false)`) or enable the pull-up, so erratum E9 leakage can't hold them at a middle level. - The diode bands point to the column. - A short settle (a few µs) after switching columns helps. - Debounce in software. - **UART.** Both UARTs run at 31 250 baud, 8N1. MIDI IN is only used to learn pads, so it can be polled. - **Nokia 5110.** It runs at 3.3 V on SPI up to 4 MHz.