LED Grid

My roommmate and I made this 20 x 10 LED grid for the 2013 World Maker Faire in New York. It is constructed from four strips of 50 LEDs each. Each strip is composed of individually addressable RGB LEDs controlled by the SM16716 chipset. The grid is controlled by an Arduino which provides the basic functionality of addressing the LEDs as well as some more advanced functions, such as scrolling of the entire grid and an implementation of Conway's game of life. More advanced functions, such as scrolling text and iPad input, are handled by a Raspberry Pi which communicates with the Arduino via SPI.

We chose SM16716 LED strips rather than the more common WS2804 strips since they were considerably cheaper. A drawback of this chipset (or at least the strips that we have) is that the signal (transmitted in the data pin) degrades after about 50 or 60 LEDs, so we were not able to daisy chain the strips together. (I am not sure if this is the case with WS2804 strips, but this is something I would be interested in finding out.) As a solution, we connected the data pin from each strip to a separate digital output pin on the Arduino. The clock pins were all connected to the same pin on the Arduino.

At present, the only data sheet I can find on the SM16716 is written in Chinese. The eBay seller included a link to some Arduino code, which from what I can tell was originally written by Mike Tsao. I have substantially modified the code and wrapped it in an LED grid class. Although the code which addresses the grid in row, column format is specific to this particular grid layout, the lower level code should work for arbitrary numbers of strips with arbitrary numbers of LEDs, with each strip connected to a separate digital output pin.

LEDgrid.h

LEDgrid.cpp