A USB full-color scrolling LED display

A USB full-color scrolling LED display

While working on our radar last week, we realized that it was a bit unfortunate that two Yocto-Color-V2 were required to drive a 32x8 LED display. Even more so, that we had just developped a custom device for a customer, capable of driving 512 RGB LEDs. Therefore, we decided to improve the situation by expanding the capability of the Yocto-Color-V2.



There were two reasons for limiting the number of LEDs that then Yocto-Color-V2 can drive to 150. First, thee computing power of the tiny MCU that handles automatic LED animations is limited, and it was not physically possible to animate more LEDs autonomously. Second, we wanted to offer a 100Hz refresh rate, and the time required to send all the bits on a chain longer than 150 LEDs would not have allowed this rate.

Nevertheless, in practical applications, it would sometime be more convenient to drive more LEDs, event if this requires to forego the usage of autonomous animations and to reduce the refresh rate... So this is what we now offer if you upgrade your Yocto-Color-V2, Yocto-MaxiBuzzer or your Yocto-MaxiKnob to the latest firmware:

  • The maximum number of LEDs is now 512 instead of 150.
  • When using up to 150 LEDs, the refrash rate remains 100Hz.
  • The refresh rate is linearly reduced down to 25Hz as the number of LEDs raises to 512.
  • Only the first 150 first LEDs support autonomous animations.

With 512 RGB LEDs, we can for instance build a 64x8 full-color scrolling LED display:

USB-driven 64x8 full-color LED scrolling display
USB-driven 64x8 full-color LED scrolling display


The display is simply built using eight daisy-chained 8x8 Neopixel panels, driven using a single Yocto-Color-V2:

How we built our 64x8 full-color LED display
How we built our 64x8 full-color LED display


Pay attention to the fact that the message animation is not handled by the device itself, but by a tiny Python software that sends RGB bitmap frames at 25Hz exactly. This may look very easy to do, but it is nevertheless a bit tricky: if the text scrolling frequency does not exactly match the LED refresh frequency, it might cause small hiccups while the text is scrolling.

Using the same font file Small.yfm that we use in the Yocto-MiniDisplay, this sample Python software includes:

  • a function that takes as input a character string and draws it in a RGB bitmap using a specified color
  • a fonction that shows a selected section of the RGB bitmap to the LED display

By sliding progressively the selected section from left to right, we give the impression that the text is moving from right to left on the display. In case you want to reuse this text to bitmap conversion code, you can find it on our GitHub example repository.

Note also that in order to get get the 25Hz maximal refresh rate on a display of that size, you should connect it via USB. If you use a YoctoHub-Ethernet to drive the display, your max refresh rate will be 20Hz, due to the bandwidth limitation between the YoctoHub and the Yocto-Color-V2. But for many applications, this will still be good enough...

A vintage display effect...
A vintage display effect...



Add a comment No comment yet Back to blog












Yoctopuce, get your stuff connected.