Skip to content
Snippets Groups Projects
user avatar
Micah Elizabeth Scott authored
b3826d03
History
Name Last commit Last update
firmware
.gitignore
LICENSE
README.md

fadecandy

Fadecandy is firmware for the Teensy 3.0, a tiny and inexpensive ARM microcontroller board.

Fadecandy drives addressable LED strips with the WS2811 and WS2812 controllers. These LED strips are common and inexpensive, available from many suppliers for around $0.25 per pixel.

This firmware is based on Stoffregen's excellent OctoWS2811 library, which pumps out serial data for these LED strips entirely using DMA. This firmware builds on Paul's work by adding:

  • A high performance USB protocol
  • Zero-copy architecture
  • Interpolation between keyframes
  • Gamma correction
  • Temporal dithering

These features add up to give very smooth fades and high dynamic range. Ever notice that annoying stair-stepping effect when fading LEDs from off to dim? Fadecandy avoids that using a form of delta-sigma modulation. It rapidly wiggles each pixel's value up or down by one 8-bit step, in order to achieve 16-bit resolution for fades.

Vitals

  • 512 pixels supported per Teensy board (8 strings, 64 pixels per string)
  • Constant hardware frame rate of 520 FPS, to support temporal dithering
  • Full-speed (12 Mbps) USB

Prerequisites