Example Code for Arduino-Rainbow LED Strip
This code can be a good test code for your strip function: leds.setPixelColor(i,y) can be used to let number i of your led turn on with color of y and you can draw your idea easily with this function but never forget function: led.show()
Software Preparation
Attention: You need to download the Libraries for LED Strip first and install it!
Wiring Diagram

As the LED strip needs about over 1A current, so the power should be able to supply 5V@1A. Also we can make our Arduino work use this source. And the image upon shows how to use a 5V power to feed our Arduino.
Other Preparation Work
Install the downloaded Libraries for LED Strip in your Arduino IDE.
Sample Code
/*
This code can be a good test code for your strip
function: leds.setPixelColor(i,y) can be used to let number i of your led turn on with color of y
and you can draw your idea easily with this function but never forget function: led.show()
*/
#include <Adafruit_NeoPixel.h>
#define PIN 6 //The signal pin connected with Arduino
#define LED_COUNT 60 // the amount of the leds of your strip(60 LEDs per meter)
// 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(50); // 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);
}
}
This code is changed by sample code downloaded from www.adafruit.com, and the library is also downloaded from http://www.adafruit.com, if any problems of copyright, please let me know: [email protected] you!
Result
The LED strip will display a moving rainbow effect, with each LED transitioning through the colors of the rainbow sequentially.
Additional Information
Part of the library is quoted from Adafruit which is another open source hardware company, and if any copyright problems, please Email [email protected].
Was this article helpful?
