Category Archives: LED Lighting

2014-03-14 11.41.39-2

Fadecandy video updates

I’ve been super busy lately, working on a new installation. I’m excited to document the process more at some point, but for now I have some videos to share with new LED effects I’ve been working on:

2014-03-08 10.02.59

Fadecandy on the Making Embedded Systems podcast

I recently had the opportunity to speak with Elecia White on the Making Embedded Systems podcast:

Micah Elizabeth Scott (@scanlime) came to talk about Fadecandy, a really neat way to control smart LEDs (NeoPixel, AdaFruit’s term for the WS2812). The conversation ranged from beautiful LED control algorithms and open source embedded projects to triangle tessellations, art, and identity.

You can get the full podcast on, iTunes, or download the MP3.

2014-02-13 00.25.25

Standalone WiFi Fadecandy server

This week, nemik posted a package for OpenWRT that makes it really easy to run the Fadecandy server on a cheap battery-powered WiFi router, the TP-LINK TL-MR3040. I just got my MR3040 in the mail, and I recorded a quick video demo:

(Video on YouTube.)

Nemik writes:

I recently discovered Micah’s awesome Fadecandy USB controller for WS281x LED pixels. One of the things that I like the most about it is its “fcserver” to control LED pixels using Websockets. That is fantastic, but all implementations I’ve seen have people running it on a RaspberryPi or regular PC.

I wanted to create a sort of “stand-alone” and embedded version of this using less expensive TP-Link routers, running OpenWRT. My current favourite of these is the TP-LINK TL-MR3040 but it would work just as well with the infamous WR703n or others; so long as they have USB support.

Read more and download the binaries on Nemik’s blog!



Presentation at GAFFTA Creative Code Meetup VII

I gave a talk at the GAFFTA Creative Code Meetup back in November. It was a brief overview of my recent work including Zen Photon Garden, High Quality Zen, the Ardent Mobile Cloud Platform, and Fadecandy.

It includes a live demo of Fadecandy, starting at 18:43.

Creative Code Meetup VII- Micah Elizabeth Scott from GAFFTA on Vimeo.


Fadecandy Controller available from Adafruit


The Fadecandy controller (initially announced here) is a new USB interface board for making more expressive art installations using the widely available WS2811 “NeoPixel” LED strips. It controls up to 8 strips of 64 LEDs, and it includes a unique dithering algorithm to help you quickly get the best quality color from each of your LEDs.

I’m happy to announce that the Fadecandy controller board is now being manufactured and sold by Adafruit! You can get your own from the Adafruit store.

What can you do with it? Here’s an LED triangle running a Processing sketch based on chaotic gravitational attraction:

Or make something a bit larger! The Ardent Mobile Cloud Platform is a Burning Man project using a Raspberry Pi and five Fadecandy controller boards:


Fadecandy: Easier, tastier, and more creative LED art


I’ve been working on a project lately that I’m really eager to share with the world: A kit of hardware and software parts to make LED art projects easier to build and better-looking, so sculptors and makers and multimedia artists can concentrate on building beautiful things instead of reinventing the wheel. I call it Fadecandy.


Fadecandy isn’t a one-size-fits-all solution. It’s an easy way to get started and an advanced tool for professionals. It’s a collection of simple parts that work well together:

  • Firmware that uses unique dithering and color correction algorithms to raise the bar for quality while getting out of the way of your creativity.
  • Open source hardware for connecting cheap and popular WS2811 based LEDs to a laptop, desktop, or Raspberry Pi over USB.
  • The Fadecandy server software, which communicates with one Fadecandy board or dozens. It runs on Windows, Linux, and Mac OS, and on embedded platforms like Raspberry Pi.
  • The Open Pixel Control protocol, a simple way of getting pixel data from your creative tools into the Fadecandy server.
  • Libraries and examples for popular languages. We have Python and Processing already, with Javascript and Max coming soon.
  • And of course, the LEDs themselves! Fadecandy works with popular WS2811/WS2812 LEDs available from Adafruit, SparkFun, and AliExpress. Each controller board supports up to 512 LEDs, arranged as 8 strips of 64 each.

fadecandy-diagramFadecandy is designed to enable art that is subtle, interactive, and playful, exploring the interplay between light, form, and shadow. If you’re tired of seeing project after project with frenetic blinky rainbow fades, you’ll appreciate how easy it is to create expressive lighting with Fadecandy.

Fadecandy is battle-tested. The firmware was originally developed to run the Ardent Mobile Cloud Platform, a Burning Man project which used 2500 LEDs to project ever-changing rolling cloud patterns onto the interior of a translucent plastic sculpture. It used five Fadecandy boards, a single Raspberry Pi, and the effects were written in a mixture of C and Python. The lighting on this project blew people away, and it made me realize just how much potential there is for creative lighting, but it takes significant technical drudgery to get beyond frenetic-rainbow-fade into territory where the lighting can really add to an art piece instead of distracting from it.


Fadecandy is designed to be really easy to build good-looking effects with. Here’s a really simple example of what you can do with only a few lines of Processing code:

OPC opc;
PImage dot;
void setup()
  size(640, 360);
  dot = loadImage("dot.png");
  // Connect to the local instance of fcserver
  opc = new OPC(this, "", 7890);
  // Map an 8x8 grid of LEDs to the center of the window
  float spacing = height / 16.0;
  opc.ledGrid8x8(0, width/2, height/2, spacing, 0);
  // Put two more 8x8 grids to the left and to the right of that one.
  opc.ledGrid8x8(64, width/2 - spacing * 8, height/2, spacing, 0);
  opc.ledGrid8x8(128, width/2 + spacing * 8, height/2, spacing, 0);
void draw()
  // Change the dot size as a function of time, to make it "throb"
  float dotSize = height * 0.6 * (1.0 + 0.2 * sin(millis() * 0.01));
  // Draw it centered at the mouse location
  image(dot, mouseX - dotSize/2, mouseY - dotSize/2, dotSize, dotSize);

You can help!

Fadecandy is still in its infancy. I’ve been building it as fast as I can, but what it really needs now is community. This is you!

Ways you can help:

Where is this going? I’m currently polishing the software, making examples, and writing documentation. I have a small number of prototype boards at the moment, but my plan is to do a larger manufacturing run soon and retail the boards online. Maybe this will be a Kickstarter, or maybe they’ll show up in popular hobbyist electronics shops. Time will tell, and I need everyone’s help.



This is a 9×16 LED matrix I made by hand back in 2004, with LEDs I had left over from another, even sillier project. It has a USB interface powered by a PIC16C765 microcontroller, one of the first to feature a built-in USB device interface.

This video post is something of a eulogy for the project. I have been trying to simplify and unclutter my life lately, and to that end I’ve been having to recycle, donate, or throw out a lot of things. This includes old projects of mine. This matrix was a fun way to spend a couple weekends seven years ago, but since then it’s just been taking up space in my apartment. So, before throwing it out, I thought I’d take a few pictures and make a silly video.

For what it’s worth, the firmware and PC source code are still available in Subversion.


Lego Sky

Over the weekend, I had a chance to finish up a project that I started (and immediately became distracted from) several weeks ago.

In our house, Paul and I have a game room. This is where the video games live, as well as other assorted geekery. We have Magic cards, D&D books, some manga.. it’s super nerdy 🙂

Best of all, Paul has a Lego city on display. We had been looking for an interesting way to add light to the city, so when I saw some RGB LED light strips for sale at Ikea, I knew I had to mod them. In their stock configuration, these light strips can do boring fully-saturated colors, and you switch between them with a boring push-button switch.

After ripping apart the Ikea light and rummaging through my junk drawers, I came up with this:

Touchpad DIODER in action

The Altoids tin has the modified driver circuit: It’s the original circuit board with the microcontroller removed, then a homemade Arduino clone to control it. The orange box is an old Cirque PS/2 touchpad, removed from its original case and covered in fabric.

The Arduino sketch (firmware) is a little C++ program that reads the touchpad and uses it to control Hue and Lightness in the HSL color space. The result is a pretty intuitive and unobtrusive control which makes it easy to both pick a color and desaturate it toward white or dim it toward black. You can easily get some really nice sunset and sky colors.

I measured the power consumption of the completed light at between 1 and 6 watts. With Bay Area electric rates, this means you’d pay about 7 cents a month to leave it plugged in with the lights fully off, twice that to constantly backlight your Lego city in a dim orange glow, and a maximum of 50 cents a month to run the light at full brightness continuously.

For many more pictures of the final installation and the build process, check out my Ikea DIODER set on Flickr.


R/C helicopter lights, Revision A.5

Atmel is going to personally revoke my electrical engineering license if they ever find out what’s in that yellow heat-shrink blob, but I now have a shiny new 5 gram version of my helicopter light kit =D

This version has all the same remote-control dimming and strobe capabilities of the heavier Revision A. The only practical drawback is that it isn’t quite as bright.