empowering creative people

WS2812 Addressable LEDs: Particle Quickstart Guide

This tutorial is aimed at getting some instant gratification from your WS2812 LEDs (trade name: NeoPixels). I'll briefly cover a bare-bones setup for the Particle Photon.

If you've never used any Particle hardware before, learn how to get one set up with our Particle Tutorials! We even have an in-depth Particle NeoPixel tutorial if you want to learn more.

Here's the wiring used in the video (click for hi-res):

WS2812B-particle-photon

You could just copy+paste the following code into a new build.particle.io project, but be sure to check the video to see how this example is accessed from the built-in neopixels library.

/*
 * This is a minimal example, see extra-examples.cpp for a version
 * with more explantory documentation, example routines, how to
 * hook up your pixels and all of the pixel types that are supported.
 *
 */

#include "Particle.h"
#include "neopixel.h"

SYSTEM_MODE(AUTOMATIC);

// IMPORTANT: Set pixel COUNT, PIN and TYPE
#define PIXEL_PIN D2
#define PIXEL_COUNT 5
#define PIXEL_TYPE WS2812B

Adafruit_NeoPixel strip(PIXEL_COUNT, PIXEL_PIN, PIXEL_TYPE);

// Prototypes for local build, ok to leave in for Build IDE
void rainbow(uint8_t wait);
uint32_t Wheel(byte WheelPos);

void setup()
{
  strip.begin();
  strip.show(); // Initialize all pixels to 'off'
}

void loop()
{
  rainbow(20);
}

void rainbow(uint8_t wait) {
  uint16_t i, j;

  for(j=0; j<256; j++) {
    for(i=0; i<strip.numPixels(); i++) {
      strip.setPixelColor(i, Wheel((i+j) & 255));
    }
    strip.show();
    delay(wait);
  }
}

// Input a value 0 to 255 to get a color value.
// The colours are a transition r - g - b - back to r.
uint32_t Wheel(byte WheelPos) {
  if(WheelPos < 85) {
   return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
  } else if(WheelPos < 170) {
   WheelPos -= 85;
   return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  } else {
   WheelPos -= 170;
   return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
}

That's all there is to it! Once uploaded, this code should have your LED strip showing some vibrant colours.

If you run into any trouble, be sure to reach out to us in the comments section below. We're full-time makers and we're here to help!

This tutorial is aimed at getting some instant gratification from your WS2812 LEDs (trade name: NeoPixels). I'll briefly cove...