I have started to investigate how I can drive a large bank of LEDs directly from my Beaglebone or Raspberry PI. I have developed a video before:

where I drove a 2 colour 8×8 LED common anode dot matrix display using three 74HC595s and a transistor array UDN2981A to source the current. This used the Arduino as the platform to drive the array and it worked very well, with a very fast refresh rate.

So, now I want to do this for the Beaglebone/PI and as while the processor rate should allow me to have a much more advanced output, the pin current limitations are going to be a problem. In addition, I would like to have some level of fading to give me a true multi-colour display, rather than the 2 colour display I had before.

So, my solution seems to be the TLC5940 from Texas Instruments (Link to the Datasheet), which is a 16 channel LED driver with dot correction and grayscale PWM control. Wow! So, 16 channels is great; dot correction means that I don’t need colour graded LEDs; and 12-bit grayscale control means 4096 different grayscale PWM levels. It also has a constant current driver on each output, which should mean no resistor banks…

That makes this a very powerful chip for driving LEDs or motors. I will order a few and plan to build a circuit that drives an LED array in the not too distant future. (If some time has elapsed use the search function on the site to see if the video/guide exists)

I am going to drive an 2.4″ (60.2mm) 8×8 RGB array RGB 8×8 Display Luckylight KWM50884ARGBB which has a common anode configuration and 32 pins. The forward current per dot is 25mA (the max forward current per dot is 100mA at 1/10 duty cycle and 0.1ms pulse width). The forward voltage at a forward current of 20mA is R: 2.0V, G: 3.2V, B: 3.2V.