Introduction

This WS2812 RGB LED strip is composed of a series of colorful LEDs. All of the LEDs can be controlled by us with just one signal line. Each LED is an individual pixel point that consists of the three primary colors: red, green and blue. It is able to achieve 256 levels brightness display and 16777216 full color display. Meanwhile, we set intelligent digital port data latch and signal reshaping amplification drive circuit inside the LED, greatly ensuring the consistency of pixel point light color.

With good flexibility, this strip of pure color can be arbitrary bent or cut off. The adhesive tape on the back of the LED strip makes it able to be fixed on anywhere. Power it up, you will be in a magical and colorful world in seconds. They can be widely used in home decoration, festival interactive activity, intelligent LED, shining DIY device, and so on.

Specification

Pinout

Pinout

Number Name Function Description
1 +5V Power +
2 Ground Power -
3 DIN Signal input
4 DO Signal output

Tutorial

This tutorial will show you how to use Arduino UNO to control the LED strip to display all kinds of different lighting effects such as breathing, flashing etc.

Preparation

Connection Diagram

Connection Diagram

Sample Code

Click to download Arduino Library. How to install the library?

/***************************************************
* Digital RGB LED Strip 120 LED-Black/White   
* ****************************************************
*  Control an Light string on like a Breathing LED, repeatedly.

* @author WENZHENG.WANG
* @version  V1.0
* @date  2019-1-29
* All above must be included in any redistribution
* ****************************************************/
#include <Adafruit_NeoPixel.h>

#define PIN 7     //The signal pin connected with Arduino    
#define LED_COUNT 180 // the amount of the leds of your strip

// Create an instance of the Adafruit_NeoPixel class called "leds".
// That'll be what we refer to from here on...
Adafruit_NeoPixel leds = Adafruit_NeoPixel(LED_COUNT, PIN, NEO_GRB + NEO_KHZ800);

void setup()
{
  leds.begin();  // Call this to start up the LED strip.
  clearLEDs();   // This function, defined below, turns all LEDs off...
  leds.show();   // ...but the LEDs don't actually update until you call this.
}

void loop()
{
    for (int i=0; i<LED_COUNT; i++)
  {
    rainbow(i);
    delay(10);  // Delay between rainbow slides
  }
}


// Sets all LEDs to off, but DOES NOT update the display;
// call leds.show() to actually turn them off after this.
void clearLEDs()
{
  for (int i=0; i<LED_COUNT; i++)
  {
    leds.setPixelColor(i, 0);
  }
}

// Prints a rainbow on the ENTIRE LED strip.
//  The rainbow begins at a specified position. 
// ROY G BIV!
void rainbow(byte startPosition) 
{
  // Need to scale our rainbow. We want a variety of colors, even if there
  // are just 10 or so pixels.
  int rainbowScale = 192 / LED_COUNT;

  // Next we setup each pixel with the right color
  for (int i=0; i<LED_COUNT; i++)
  {
    // There are 192 total colors we can get out of the rainbowOrder function.
    // It'll return a color between red->orange->green->...->violet for 0-191.
    leds.setPixelColor(i, rainbowOrder((rainbowScale * (i + startPosition)) % 192));
  }
  // Finally, actually turn the LEDs on:
  leds.show();
}

// Input a value 0 to 191 to get a color value.
// The colors are a transition red->yellow->green->aqua->blue->fuchsia->red...
//  Adapted from Wheel function in the Adafruit_NeoPixel library example sketch
uint32_t rainbowOrder(byte position) 
{
  // 6 total zones of color change:
  if (position < 31)  // Red -> Yellow (Red = FF, blue = 0, green goes 00-FF)
  {
    return leds.Color(0xFF, position * 8, 0);
  }
  else if (position < 63)  // Yellow -> Green (Green = FF, blue = 0, red goes FF->00)
  {
    position -= 31;
    return leds.Color(0xFF - position * 8, 0xFF, 0);
  }
  else if (position < 95)  // Green->Aqua (Green = FF, red = 0, blue goes 00->FF)
  {
    position -= 63;
    return leds.Color(0, 0xFF, position * 8);
  }
  else if (position < 127)  // Aqua->Blue (Blue = FF, red = 0, green goes FF->00)
  {
    position -= 95;
    return leds.Color(0, 0xFF - position * 8, 0xFF);
  }
  else if (position < 159)  // Blue->Fuchsia (Blue = FF, green = 0, red goes 00->FF)
  {
    position -= 127;
    return leds.Color(position * 8, 0, 0xFF);
  }
  else  //160 <position< 191   Fuchsia->Red (Red = FF, green = 0, blue goes FF->00)
  {
    position -= 159;
    return leds.Color(0xFF, 0x00, 0xFF - position * 8);
  }
}

Result

The LED strip will display a breathing effect after the program is upload successfully.

FAQ

Q&A Some general Arduino Problems/FAQ/Tips
A Please click the topic link on DFRobot Forum.
A For any questions, advice or cool ideas to share, please visit the DFRobot Forum.

More Documents

DFshopping_car1.png Get Digital RGB LED Strip 120 LED-White/Black from DFRobot Store or DFRobot Distributor.

Turn to the Top