Please note that Adafruit no longer sells this specific type of RGB LED pixel; the tutorial is for the benefit of customers with an existing collection of these pixels. For new projects we recommend our 12mm or 36mm LED pixels or digital LED strips.

RGB Pixels are digitally-controllable lights you can set to any color, or animate. Each pixel contains an RGB LED and a controller chip molded into a 'dot' of silicone, with flanges so they can be pushed into holes in thin sheet material. The dots are waterproof and rugged — they're typically used to make outdoor signs.

Basic stats

  • 20mm diameter round waterproof pixels
  • Approximately 3 inches (75mm) apart on 4-pin strand
  • 5 Volts DC, 60 milliamps max per pixel (all LEDs on, full white)
  • LPD6803 LED driver chip provides 15-bit color: Datasheet
  • 2-pin SPI-like protocol — easy for Arduino and other microcontrollers

Here is a video showing our similar 12mm dots running a test pattern:

These pixels use a "5050" clear RGB LED and are brighter than our 12mm pixels. The trade off is that they are not diffused, so the color mixing is not as nice; close up, you can see the three separate LEDs. At 5 Volts, they draw a maximum of 60 mA per pixel: 20mA each for red, green and blue.
The LED pixels are spaced along a strand of ribbon cable, with about 3 inches or 75mm between pixels. If additional distance is needed you can cut the ribbon cable and solder 4 wires to extend the gap to the desired length.

Each pixel contains a small microchip within the silicone dot. The LPD6803 LED driver chip is custom designed for this purpose. These chips are very simple to communicate with — all they do is shift color data in from one pin and out another. To issue data from a microcontroller such as an Arduino, one "shifts out" 16 bits of color information. To write data to 10 LEDs, you would issue 160 bits (10 * 16). Following the data, 32 zero bits will "latch" the data and show the new LED colors.

This chip can handle PWM for controlling color brightness, all it needs is a 'pixel PWM clock' which sets the PWM speed. The faster the clock, the smoother the color…but this signal has to travel all the way down the strand, so it can't be too fast or it'll snag the chips.

An interesting point is that the PWM clock is the same as the data clock. This is nice in that it saves a pin, but does mean that data must be carefully synchronized to the PWM counter in order to avoid unsightly flicker. This is okay but a little annoying because the PWM clock must be continuously issued, and on the Arduino this requires a timer interrupt and costs a fair chunk of CPU performance. We provide an Arduino library that takes care of all this unpleasantness behind the scenes, so you won’t have to fuss with the details.

This guide was first published on Jul 29, 2012. It was last updated on Mar 08, 2024.

This page (Overview) was last updated on Jul 18, 2012.

Text editor powered by tinymce.