Play Tetris on This DIY 16x16 LED Matrix Module
Off-the-shelf parts convert 8x8 LED matrices into a larger 256-pixel display.
No matter how big you make something, there will always be someone who wants it to be bigger. Inexpensive 8x8 LED matrix displays are common but somewhat small. They work great for text characters but are not too exciting for games. Using off-the-shelf parts, Erik van Zijst built a custom 16x16 LED matrix that, with the addition of a few buttons, plays Tetris. His build guide covers the steps from the initial schematic to the PCB design, the code, and even how to debug the final circuit.
If you are not interested in building a custom 16x16 LED matrix, then consider van Zijst’s excellent write-up as a guide to building and testing a digital circuit. For an example of how in-depth he went, instead of just providing a schematic of the matrix, the guide explains how components like shift registers and MOSFETs operate.
An interesting design choice was to use a constant current driver for the LEDs in the matrix, instead of current limiting resistors. This choice results in wasting less power and makes for a more elegant printed circuit board. Speaking of the PCB, van Zijst used KiCad and has made the design files available on GitHub.
Also available on the GitHub repository is the ATmega328P code that drives the display. Even though this is the popular processor for Unos and Nanos, it is not a typical Arduino code project. Van Zijst configures the timers to update the matrix at 125 Hz. He estimates the screen update takes about half of the microcontroller’s cycles, leaving the rest for other operations — like playing Tetris!
You can find the full write-up for the custom 16x16 LED matrix here. And in the GitHub repository, you can find all of the design files. The repo has the schematic, PCB, and code.