Build an inexpensive
handheld Arduino color console

If you love classic games like Tetris and Breakout you can now build a portable Arduino console and play anywhere you are.
Required components
Arduino Pro Mini 3.3V 8 MHz
At only 8MHz the Arduino Pro Mini 3.3v is slow by today's standards but fast enough for most classic games.
Other Arduinos or compatibles can be used in its place. If an 5v Arduino like the Uno is used you must use a Level shifter from 5v to 3.3v or you'll risk frying the TFT.
2.2" TFT 240x320 SPI
This high quality 2.2" TFT screen has an integrated ILI9341 controller and we will be connecting to it using Hardware SPI.
While the screen is sold as an 240x320 pixels TFT, we're going to use it at 320x240 pixels, rotated using a simple hardware configuration switch, making it more suitable for video games.
The size is perfect for a small handheld videogame and fast enough for most classic video game titles.
The TFT screen features an SDCART reader but for now we'll not be using it.
3-axis joystick
A joystick with 3 axis is used to control de videogame, horizontal and vertical plus fire.
The first two controls connect to the Arduino using 2 ADC pins and the fire button a regular digital pin.
Buzzer
Sound FX is an important component of Videogames. A small buzzer is present to provide sound feedback to the player. It can be used to play music and sound effects.
Other components
- Power switch
- 4 AA Battery holder
- 4x LR6/AA (rechargeable) battery
- Female and Male headers
- Perforated board/breadboard/PCB
- Wire
- 0.1µF capacitor
Build images

Instead of soldering the components directly to the perforated board both the Arduino and the TFT screen are placed on female headers, so that they can be easily removed and replaced without the need to solder.
At the top of the board there are five pins that allow a programmer to be connected and upload a sketch to the Arduino. This way we can upload game sketches without removing the Arduino from the board.
The joystick breakout is attached to the board using 4 screws. Alternatively it can be unsoldered from its breakout and soldered directly unto the board.
Two M3 screws can be seen here. They keep the battery holder on the backside secured to the board.

Connecting the TFT screen to the Arduino
Arduino Pin | TFT Pin |
---|---|
Vcc | Vcc |
Gnd | Gnd |
5 | CS |
4 | RESET |
6 | D/C |
11 | SDI (MOSI) |
13 | SCK |
9 | LED |
12 | SDO (MISO) |
Pins 11 to 13 are Arduino's hardware SPI pins. When hardware SPI is used, the Arduino SPI hardware handles all the communication overhead and we get more processing power for our code. Usually it also means the communication is faster.
Pins 5, 4, 6 and 9 are regular digital Arduino pins. 9 controls the backlight, without it there won't be any image on the TFT screen. Pin 4 resets the TFT controller when required. Pins 5 and 6 help with SPI communication by telling the TFT when data or commands are being sent.
Connecting the Joystick to the Arduino
Arduino Pin | Joystick Pin |
---|---|
Vcc | +5v |
Gnd | Gnd |
A0 | VRx |
A1 | VRy |
2 | SW |
The joystick works well with only 3.3v supplied to the 5v pin.
Pins A0 and A1 are analogue pins and they tell the Arduino the direction the Joystick is being pushed.
When the joystick is pressed down a click is heard and a signal is sent to the Arduino.
Connecting the Buzzer to the Arduino
Arduino Pin | Buzzer Pin |
---|---|
Gnd | Buzzer - |
3 | Buzzer + |
Buzzers only have 2 pins. The (+) pin is usually longer and has a + sign next to it.
Connecting the batteries to the Arduino
Arduino Pin | Battery connector |
---|---|
Raw | + |
Gnd | - |
Connect the battery positive to the RAW pin on the Arduino.
4 rechargeable batteries will provide around 4.6v that will be converted into 3.3v by the onboard regulator.
Programming the Handheld Arduino color console
Congratulations. If you followed the instructions you'll be ready to upload a game.
To upload the game you'll need another Arduino or a serial programmer like the FTDI.
Arduino Pin | Programmer (FTDI) |
---|---|
Vcc | Vcc |
Gnd | Gnd |
Tx | Rx |
Rx | Rx |
Rst | Grn/DTR |
A 0.1µF capacitor should be placed between the Rst/Reset pin on the Arduino and the DTR pin.
Get games for your Handheld Arduino color console
To test your build you can use download a Tetris version from
https://github.com/vilaca/Handheld-Color-Console made specially for this project.
More games will soon follow.