The Possibility Of Driving 16,000 RGB LEDs

Like just about everyone we know, [Luis] decided a gigantic RGB LED matrix would be a cool thing to build. Gigantic LED matrices are very hard to build, though: not only do you have to deal with large power requirements and the inevitable problems of overheating, you also need to drive a boat load of LEDs. This is not easy.

[Luis] found a solution to the problem of driving these LEDs with a new, fancy ARM Cortex M4 microcontroller. All Cortex M4 ARMs have DMA, making automatic memory transfers to peripherals and LED strips a breeze.

The microcontroler [Luis] is using only supports 1024 transfers per transfer set, equating to a maximum of 14 LEDs per transfer. This problem can be fixed by using the ping-pong mode in the DMA controller by switching between data structures for every DMA request. Basically, he’s extending the number of LEDs is just switching between two regions of memory and setting up the DMA transfer.

The result is much better than [Luis]’ original circuit that was just a bunch of SPI lines. It also looks really good, judging by the video below. It’s not quite a gigantic LED matrix yet, but if you want to see what that would look like, check out the huge 6 by 4 foot matrix hanging in the Hackaday overlord office.

17 thoughts on “The Possibility Of Driving 16,000 RGB LEDs

      1. 1)each pixel is binary only (not Xbit colors)
        2) they will maintain the state even without power, so sequential write is quite fine
        3) they are (at least!) an order of magnitude slower, so normal micros are fine

  1. If you want a huge LED matrix, it’s going to be cheaper and neater to use the Chinese LED panels designed for video walls – available in a wide variety of pitches, and insanely cheap – 64×32 6mm pitch panels are $20-30 on Aliexpress – under a couple of cents per LED

    1. These panels are really cool, I just received my first two last month. Do you have any suggestions on how to drive them? I’m currently on a raspberry pi’s GPIO using python (insanely slow @ gpio), which is causing flicker. There are some inexpensive FPGAs for driving

        1. If you want to do really big arrays something like a Zynq (fpga + dual ARM9) could make it quite easy. It’s not that hard to run a standard linux and have the programmable logic read the frame-buffer to what ever interface you can come up with.

        2. I think I’d treat it like a display — build a dual-port display RAM, one port to the processor to update the content, one port to an FPGA display controller. For extra credit, you could have two pages in RAM, update one while displaying the other, then switch (at the frame rate, if you can update fast enough).

        1. I’ve used the SmartMatrix Library too and it was totally capable to drive my 32×128 Display @ 70 FPS!
          There are some forks that support bigger Displays out of the box.

    2. At the time it was more for the challenge and I wanted an excuse to learn more on how to use the Tiva.

      I couldn’t follow through with the project neither with my money nor with the robotics club money that I go to.
      In the end it was more of a cool learning experience than anything else (maybe later the club will want to make one)

  2. If you had a few of these fourty kilos of solder, too much time one your hands and the world’s compliment of ocd, perhaps you might be able to produce a full resolution monitor. Maybe with a huge fresnel lens to increase the effective detail.
    It could make for a great art exibit or perhaps just playing old dos games.

  3. You have to be kidding me… I literally just opened code composer to start working on a way to drive mass amounts of LEDs using DMA and SPI modules on the new MSP432. Well Im sure there will still be plenty of differences between my MSP432 and the Tiva-C series to keep me busy

  4. The MSP432 should have a similar DMA since it’s an ARM-M4F also and also has GPIO with 8 pins (some of them). I’m still waiting for my MSP432, maybe I’ll do something similar just for fun.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.