Just two 5V power wires and a single controller digi-port connection.
The Arduino IDE with a library…
Code is kinda long. (It has 8 different flashing designs that are randomly chosen in the “loop” mainline.)
//----------------------------------------------
#include < Adafruit_NeoPixel.h>
#define PIN 10 // The one digi control connection
#define NUMPIXELS 60 // The number of LEDs in the ring
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
randomSeed(analogRead(3)); // Random seed generator.
pixels.begin(); // This initializes the NeoPixel library.
pixels.show(); // Turn all LEDs off.
}
void loop()
{
switch (random(0,10))
{
case 0:
whiteflasher();
break;
case 1:
whitechase();
break;
case 2:
greenchase();
break;
case 3:
redchase();
break;
case 4:
bluechase();
break;
case 5:
whiteflasher();
break;
case 6:
wiper();
break;
case 7:
fullflash();
break;
case 8:
randomflash();
break;
case 9:
randomflash();
break;
default:
whiteflasher();
break;
}
}
//------------------------------------------------------------------------------
void whiteflasher()
{
for (int i=0;i<100;i++)
{
flasher(255,255,255,20,30);
}
}
//------------------------------------------------------------------------------
void whitechase()
{
for (int j=0; j<20; j++)
{
for (int q=0; q < 3; q++)
{
for (int i=0; i < 60; i=i+3)
{
pixels.setPixelColor(i+q, pixels.Color(255,255,255));
}
pixels.show();
delay(60);
for (int i=0; i < 60; i=i+3)
{
pixels.setPixelColor(i+q, pixels.Color(0,0,0)); //turn every third pixel off
}
}
}
}
//-----------------------------------------------------------------------------------------------------------------------
void greenchase()
{
for (int j=0; j<20; j++)
{
for (int q=0; q < 3; q++)
{
for (int i=0; i < 60; i=i+3)
{
pixels.setPixelColor(i+q, pixels.Color(0,255,0));
}
pixels.show();
delay(60);
for (int i=0; i < 60; i=i+3)
{
pixels.setPixelColor(i+q, pixels.Color(0,0,0)); //turn every third pixel off
}
}
}
}
//-----------------------------------------------------------------------------------------------------------------------
void redchase()
{
for (int j=0; j<20; j++)
{
for (int q=0; q < 3; q++)
{
for (int i=0; i < 60; i=i+3)
{
pixels.setPixelColor(i+q, pixels.Color(255,0,0));
}
pixels.show();
delay(60);
for (int i=0; i < 60; i=i+3)
{
pixels.setPixelColor(i+q, pixels.Color(0,0,0)); //turn every third pixel off
}
}
}
}
//-----------------------------------------------------------------------------------------------------------------------
void bluechase()
{
for (int j=0; j<20; j++)
{
for (int q=0; q < 3; q++)
{
for (int i=0; i < 60; i=i+3)
{
pixels.setPixelColor(i+q, pixels.Color(0,0,255));
}
pixels.show();
delay(60);
for (int i=0; i < 60; i=i+3)
{
pixels.setPixelColor(i+q, pixels.Color(0,0,0)); //turn every third pixel off
}
}
}
}
//-------------------------------------------------------------------------------------------------------------
void wiper()
{
for (int x=0;x<2;x++)
{
for(int i=0; i<60; i++)
{
pixels.setPixelColor(i, pixels.Color(255,255,255));
pixels.show();
delay(10);
}
for(int i=0; i<60; i++)
{
pixels.setPixelColor(i, pixels.Color(255,0,0));
pixels.show();
delay(10);
}
for(int i=0; i<60; i++)
{
pixels.setPixelColor(i, pixels.Color(0,255,0));
pixels.show();
delay(10);
}
for(int i=0; i<60; i++)
{
pixels.setPixelColor(i, pixels.Color(0,0,255));
pixels.show();
delay(10);
}
}
}
//------------------------------------------------------------------------------
void fullflash()
{
for (int i=0;i<6;i++)
{
flasher(255,255,255,200,200);
}
for (int i=0;i<6;i++)
{
flasher(0,0,255,200,200);
}
for (int i=0;i<6;i++)
{
flasher(0,255,0,200,200);
}
for (int i=0;i<6;i++)
{
flasher(255,0,0,200,200);
}
for (int i=0;i<6;i++)
{
flasher(255,255,255,200,200);
}
}
//-----------------------------------------------------------------------------
void randomflash()
{
for (int i=1;i<75;i++)
{
switch (random(0,4)){
case 0:
flasher(255,0,0,50,150);
break;
case 1:
flasher(0,255,0,50,150);
break;
case 2:
flasher(0,0,255,50,150);
break;
case 3:
flasher(190,190,190,50,150);
break;
default:
flasher(175,175,175,50,150);
break;
}
}
}
//------------------------------------------------------------------------------
void flasher(uint8_t r,uint8_t g,uint8_t b, uint8_t s, uint8_t l)
{
for(int i=0;i<NUMPIXELS;i++){
pixels.setPixelColor(i, pixels.Color(r,g,b));
}
pixels.show();
delay(random(s,l));
for(int i=0;i<NUMPIXELS;i++){
pixels.setPixelColor(i, pixels.Color(0,0,0));
}
pixels.show();
delay(random(s,l));
}