‹ Back to the archive
April 2026

Cup Pong Accessory

A digital scoring system for cup pong built around an Arduino, custom buttons, and a 3D-printed cup holder.

arduinoelectronicsbreadboardoled3d-printingclaude-codec++group-project
Hero image for Cup Pong Accessory

// Challenges

Print-bed size forced us to downsize the cup layout from 4-3-2-1 to 3-2-1. The cup-holder tolerances also ended up slightly loose, so some cups don't fully press their buttons, making scoring a little inconsistent. Iterating the OLED UI took several passes before the whole group was happy with the layout.

// Skills Used

Arduino C++ Breadboard wiring OLED display programming 3D printing Claude Code UI design Electrical assembly

// Outcome

A working cup pong table with electronic scoring, an OLED display that shows live score and the game name, and a 3D-printed enclosure for the cups and electronics. The project also pushed my "vibe coding" with Claude Code forward. I fed it my components and target behavior and iterated from there, a workflow I plan to keep using through the summer.

Brief

Build a fully functioning tabletop game, rules included. Team of three. I worked with Dylan and David. We landed on cup pong with electronic scoring after a brainstorm round that also considered 3D tic tac toe, air hockey, ping pong, and chutes and ladders.

Process

Roles. Dylan owned the CAD for the cup holder. David owned the rules and game logic write-up. I owned the electrical system and final assembly.

Timeline. We laid out a six-week Gantt chart covering brainstorm, research, sketching, CAD, gathering materials, prototyping, testing, and final tweaks. We did not follow it perfectly but it gave us the structure to keep moving instead of stalling.

Early design. Original sketches had the cups tilted on an angled platform. We pivoted to elevating the cups flat over individual buttons because the tilt added complexity for no real gameplay benefit. We also planned a 4-3-2-1 cup pyramid but had to downsize to 3-2-1 because the larger layout did not fit on the printer bed.

Electrical prototype. I started with the buttons and Arduino on a breadboard, no cup holder yet, running inverted logic where pressing a button meant “cup removed” so I could test the scoring code without needing the full enclosure. Once the logic was right I built the OLED display side, which involved a separate library and a different memory model than the rest of the Arduino sketch.

UI iterations. The display needed to show the current score and the game name and the cup positions. The first version was readable but ugly. Second version cleaned up the typography. Third version added the numbered cups and pulled the score to the top. The group signed off on the third version.

Vibe coding with Claude Code. This is the part that pushed my software side forward. I gave Claude Code my components, what I wanted the UI to do, and the constraints of the Arduino memory model, and iterated from there. The work flow was different from writing every line myself. I described the behavior, reviewed the suggested code, ran it on the Arduino, then asked for fixes when something did not work. After a few rounds the firmware was solid. With my background in coding for FRC robotics and a couple of conferences I attended at the world championships about AI in coding, this skill felt like the one most worth learning right now.

Final assembly. Soldered the buttons into the printed cup holder, mounted the Arduino and breadboard inside the enclosure, and ran the OLED to the front face. The tolerances on the printed cup holders ended up slightly loose, so a couple of cups do not press their button cleanly. The quick fix in the moment was weighting the cups (a small object or a sip of water inside) so the extra weight pushed them down hard enough to register the press. It works. The real fix is tighter tolerances on a future print.

Skills Built

  • Arduino end to end. Wiring, code, display, enclosure. The full stack of a small embedded system.
  • Breadboard prototyping. Knowing how to test a subsystem in isolation before integrating it into the real enclosure.
  • OLED display programming. Memory-constrained UI design where every byte matters.
  • Claude Code as a coding partner. Not a replacement for understanding. A way to move faster once I know what I want.
  • Group project ownership. Dividing work cleanly and not getting in each other’s way.
  • Recognizing fit-and-finish problems. The loose cup tolerances are a known issue I can name and fix, which is a real engineering skill.

What I would do differently

Tighten the tolerance on the cup-to-button fit by 0.1 to 0.2 mm. A few extra minutes of test prints would have saved the inconsistent button presses on the final product.