Close
0%
0%

Pad25 — A Python-programmable control pad

A 25-key control pad with RGB LEDs, encoders, and a color display. Create simple configurations in an app, or program it directly in Python

Similar projects worth following
Pad25 is a programmable desktop controller with 25 keys, individual RGB lighting, two rotary encoders with push switches, two auxiliary buttons, and a 240 × 320 color LCD.

A planned companion application running on your computer will let you configure actions, execute commands, and make the controls respond to the active window or application. Labels, lighting, and key assignments will be able to change as you move between tasks.

Use Pad25 as a shortcut deck, USB MIDI controller, or a custom interface for your tools. For more complex behavior, program it directly in Python using MicroPython, with access to its controls, display, LEDs, USB keyboard output, and MIDI.

Built around the RP2040, Pad25 runs Python scripts on the device. Copy files onto its USB drive to customize its behavior without rebuilding the firmware.

A controller that follows your workflow

Pad25 combines physical controls with a display and programmable lighting. Its 25-key grid provides direct access to actions, while two rotary encoders with push switches support adjustments, navigation, and selection. Two auxiliary buttons provide additional inputs.

The 240 × 320 color LCD can show labels, settings, menus, status information, and graphics. Individually controlled RGB LEDs help identify actions and provide immediate feedback.

A companion application for your computer

A desktop companion application is planned as a central part of the project. It will provide an easy way to configure Pad25 and connect its controls to actions on the computer.

The application is intended to support:

  • Application-aware controls: change assignments, labels, and lighting when the active application or window changes.
  • Commands and scripts: launch programs and execute commands on the computer from a key press or encoder action.
  • Desktop integration: connect device actions to computer-side functions beyond keyboard shortcuts.
  • Two-way feedback: send information back to Pad25 so its display and LEDs can reflect what is happening on the computer.

For example, switching from a text editor to a music application could automatically replace editing shortcuts with music controls. A key could run a script on the computer, with the result shown on the device.

The companion application is planned; these computer-side integrations are development goals.

Direct Python programming

For behavior beyond the configuration app, Pad25 can be programmed directly in Python using MicroPython.

Scripts running on the device can read keys and encoders, control the LEDs, draw on the LCD, and send USB keyboard or MIDI messages. This gives you control over both the actions and the interface: how inputs behave, what appears on the screen, and how the device communicates its state.

Device-side Python also supports standalone behavior that does not depend on the companion application, such as a MIDI controller or a keyboard shortcut layout.

Keyboard, MIDI, and custom interfaces

USB keyboard output lets Pad25 send keys and combinations to desktop software. USB MIDI support makes it suitable for musical input and controls.

The display supports text, bitmap images, and drawing primitives including lines, circles, ellipses, arcs, and filled shapes. These building blocks can form anything from a simple labeled key layout to menus, visual indicators, and interactive graphics.

Hardware and development

Pad25 is built around the RP2040. Native firmware modules handle hardware access and USB communication, exposing these capabilities through Python APIs.

The device presents its filesystem as a USB drive, allowing Python files to be copied onto it without rebuilding the firmware. A USB serial interface provides access to the MicroPython REPL for development and debugging.

  • The prototype is ready

    Andrey Demenev • an hour ago • 0 comments

    The first prototype of the device has been built. As it often happens with prototypes, there were some mistakes that make updating the firmware not an easy task. I had to hack up something that makes the updates possible, so that's why there is a small board mounted on the side. Turned out that I forgot to order the rotary encoders

View project log

Enjoy this project?

Share

Discussions

Does this project spark your interest?

Become a member to follow this project and never miss any updates