Back to selected work

Personal build / Physical computing

10×10 LED matrix + Pong.

A hundred LEDs, a lot of solder, a multiplexing problem, and two physical controls: everything needed to turn a rough experiment into a playable display.

Format
10 × 10 LED matrix
Control
Layer and column multiplexing
Input
Two variable resistors
Output
Patterns and playable Pong
Green LED matrix being inspected through a magnifying glass while under construction
100-LED matrix / inspection during fabrication

01 / The ideaMake a display from first principles.

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.

10×10display grid
100hand-soldered LEDs
~4LEDs replaced in testing

02 / The constraintUse time to create the image.

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.

  • Electrical architecture defines the shape of the software that follows.
  • Timing is part of the interface when the display only exists through persistence of vision.
  • Test every row while it is still accessible; later repairs become dramatically harder.

03 / FabricationSolder, test, reinforce, repeat.

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 is honest rather than elegant. Colour-coded leads helped preserve the column mapping, crimped connections reduced movement at the LED legs, and stripboard made the controller side much more predictable than free-form soldering.

Ten rows of green LEDs soldered into a square grid on a workbench
Matrix grid / rows joined
Magnified view of solder joints on the LED matrix
Inspection / solder joints and alignment

04 / InteractionPatterns became a game.

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.

Pong demonstration / video loads only when you press play

05 / LessonsThe messy build taught the useful parts.

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.