- Use as a display for an NES emulator. (Works with LUA plugin in FCEUX NES emulator.)
- Custom LED Matrix Display using WS2812B led strips.
- Laser cut grating to prevent pixel bleeding and improve sharpness.
- Arduino or AVR8 display driver code.
- Optional "next block display"
- Optional score display
The basic idea is to have led strips stuck on a plate with a diffuser on top. These are driven by a micro-controller which receives data from a laptop/computer running emulator and some kind of custom script.
For the emulator I choose FCEUX, because it has a built in Lua interpreter which allows me to read pixels from the screen and send them to a serial port.
I used WS2812B LED strips, because they are widely available and fairly straightforward to drive. They generate quite a lot of heat, so I decided to stick them on a sheet of aluminium to act as a heat sink.
People have written libraries for driving WS2812B chips for almost every platform, so I had a lot of options. In the end I settled with Arduino/AVR8. For the Arduino I used the Neopixels library and for the bare-metal AVR I used the light_ws2812 library. I had some ATMega16's so I used one of those. It has just enough RAM to hold 200 pixel values and then some.
There are really cheap 5 V power supplies designed specifically for powering these LED strips. Each LED draws 60 mA at full intensity, so a 12 A power supply is required for powering all 200 LEDs. I will also power the micro-controller, the score display and the Block Preview display from this supply, so max power will be a little over 12 A. I don't plan on running the display on max brightness, so it will probably draw around 4 - 6 A.
I used a 6 digit seven segment display with a MAX7219 display driver chip. The microcontroller could drive the display directly, but then I would need a buffer IC, so it would not save on part count. The MAX7219 has an SPI interface for writing digits to the display.
Block Preview Display
In Tetris you can see the shape of the next block on the side of the playing field. To replicate this I made a 4x2 LED matrix using the same structure as the large matrix. It is wired in series with the main display. I basically extended the LED strip.