Handheld Tetris Game

When: 2014
Technologies: C/C++, Arduino, Atmel ATmega32u4, SPI, TWI / I²C, PWM

For a final microcontroller class project, we were given free rein to design a system with multiple inputs and outputs. I sometimes find that people unfairly consider a “hobbyist” platform like Arduino to be inherently very limited in capabilities, even as a microcontroller for small projects, or that it can’t be useful to professionals, and I wanted show that is definitely not the case. Atmel produces very capable industrial-grade devices, and e.g. Arduino Micro contains an Atmel ATmega32u4, which is more than up to the challenge for many projects.

But can it handle a video game? I said “yes,” because if we look at classic video games from the 70s-80s, hardware was quite limited by modern standards, yet comparable to the humble ATmega. While it has an 8-bit 16MHz processor, the available memory is tiny (only 2.5KB RAM). Wouldn’t you know, it turned out to be more than adequate for Tetris with a twist — accelerometer-based gesture control instead of buttons/joysticks? 🙂  With a minimum of hardware requirements, and some clever software design, many things are possible.