Button Pad

This project presents a button pad based on the Arduino Leonardo, equipped with an SSD1306 OLED display that shows the real-time clock. With this setup, a compact interface for custom controls (macros, MIDI triggers, commands)—all emulating PC keyboard strokes—is available while always keeping an eye on the time.
It covers wiring the buttons, managing I²C communication with the display, and synchronizing the PC clock via USB. No external RTC module is required: the time comes directly from the computer. In the end, the result is a versatile device perfect for a studio, workshop, or desk.
Supplies
1- M3 × 20 mm screws with nuts and washers
2- Arduino Pro Micro (Leonardo)
3- Illuminated push-buttons
4- Assorted resistors (330 Ω)
5- SSD1306 I²C OLED display
6- Solder
7- Solid-core wire for PCB traces
8- Assorted colored hookup wires
9- Perfboard (prototype PCB)
Tools
PC, Win or macOS
Electrician’s scissors
Pliers
Screwdriver
Soldering iron
Multimeter
Schematic Design

Draft a clear circuit diagram showing every connection—map each button, the SSD1306’s SDA/SCL and power lines, the 330 Ω LED resistors, and the Pro Micro’s pin assignments—so you can wire and solder without errors.
Downloads
Soldering


Solder each component (buttons, headers, display, Pro Micro) and all wiring onto the perfboard—tin pads and leads first, position parts, heat pad–lead junctions to flow solder, trim excess, then inspect joints before powering up.
Pre-Assembly Testing
Before stacking the boards, use a multimeter in continuity mode to verify critical nets—ensure VCC and GND aren’t shorted, each button line connects only to its assigned Pro Micro pin, and SDA/SCL pairs and VIN/GND pins aren’t bridged—catch any wiring mistakes before final assembly.
Assembly

Use M3 screws and nuts as standoffs to space the two boards, ensuring the top board’s connections don’t touch those on the bottom.
Programming & Configuration
Load the provided Arduino sketch and supporting libraries into the Pro Micro via the Arduino IDE. In Preferences → Sketchbook location, confirm the SSD1306 and TimeSync (or equivalent) libraries are installed. Open ButtonPad.ino, select “Arduino Leonardo” as the board, then upload.
After the upload, launch the accompanying Python script (for example via Thonny or your preferred Python IDE) to send the PC’s current time over USB to the pad. Feel free to edit the key-mapping section to change which buttons emulate PC keystrokes or to adapt functionality to your specific needs. Finally, verify that at startup the display shows the synced PC time and that each button triggers the intended action.
*Remember to specify your Arduino COM port in the python code
Enjoy, Explore & Share

Have fun with your new button pad—experiment with custom macros, shortcuts, and workflow tweaks to make it truly your own! And if you’ve built your own replica, don’t forget to share your project and photos so others can learn from your experience.