Step 1: Electronics
* we wanted it to be brighter than a multiplexed display would allow (since any subset of LEDs can be turned on at once)
* we wanted to reduce software complexity that is inherent to multiplexing
* we didn't want there to be any flickering artifacts on video footage of the display
The display is driven by an Arduino-compatible development board called Nanode interfaced to chain of custom made circuit boards hosing Texas Instruments TLC5926 16-bit Constant Current Source Sink Driver. Sixteen of these boards provide the 256 current sinks needed to drive the display. These chips have a similar interface to the familiar 74HC595 shift registers, except that:
* using a single resistor per chip you can set the current that each channel will sink when it's enabled
* they can handle sinking up to 120 mA per channel (!) (we only set the current to about 20 mA on our boards)
* when you set a channel to one it sinks the preset constant current on that channel, whereas a zero pulls no current on that channel
The boards also each have a 74HC125 quad-buffer on board to ensure good signal quality all the way to the end of the chain of boards.
In summary, for our 16 x 16 display, we used one of these boards per row of LEDs and chained them all together to drive all 256 displays.