Personal build · Physical computing
10×10 LED matrix + Pong
A hand-soldered LED display that started as an electronics exercise and ended up running a simple two-player game of Pong.
Starting pointWhy I built it
The project began as a three-dimensional LED cube and changed direction during the build. A 10×10 matrix made each LED easier to read and created a better surface for patterns, motion, and eventually a simple game.
The cathodes are connected across rows while the anodes form columns. That wiring keeps the number of controller connections manageable, but creates a constraint: arbitrary LEDs cannot simply remain on together without lighting unintended intersections.
MultiplexingHow the display works
Multiplexing solves the intersection problem by illuminating the required LEDs in rapid sequence. Each point is on for only a short time, but the cycle repeats quickly enough for persistence of vision to turn those moments into one stable image.
That changed the software from a list of switches into a small display engine. Patterns had to be represented, scanned, and redrawn continuously while still leaving enough time to read inputs and update the game state.
- The row-and-column wiring determined how the drawing code had to work.
- The refresh timing had to be fast enough for the image to look steady.
- Testing each row before assembly made failed LEDs much easier to replace.
FabricationSoldering the matrix
The matrix was assembled as separate LED rows before being joined into the complete grid. Heat can destroy an LED, and every added connection makes a failed component harder to reach, so testing became part of the assembly rhythm rather than a final step.
The wiring was not especially tidy, but colour-coded leads helped preserve the column mapping, crimped connections reduced movement at the LED legs, and stripboard made the controller side more predictable than free-form soldering.


InteractionAdding Pong
Once the matrix could draw repeatable shapes, the next challenge was interaction. Variable resistors became paddle controls. The program mapped each input to a vertical position, advanced the ball through a set of paths, detected paddle contact, and redrew the frame fast enough to keep the display convincing.

NotesWhat I would change
If I rebuilt it, I would design the support, resistor network, cable routing, and diffusion layer before soldering the first row. But that is also why the project was valuable: every awkward decision made the relationship between physical layout, electronics, timing, and code impossible to ignore.



