#include <Adafruit_NeoPixel.h>
#define PIN 3 // data pin
#define NUM_LEDS 32
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);
int redColor = 0;
int greenColor = 0;
int blueColor = 0;
int colorHigh = 255;
int direction = 1;
/********************************/
void setup() {
pixels.begin();
pixels.show(); // Initialize all pixels to 'off'
Serial.begin(115200);
flashLed(1);
randomSeed(43);
Serial.println("LightRing Starting!");
flashLed(3);
}
/*******************************/
void loop() {
//circleLED(50);
//cycleLED(50);
//circleNoTail(100);
circleFade(10);
}
void circleFade(int delayValue) {
adjustColor();
for (int inx = 0; inx < NUM_LEDS; inx++) {
pixels.setPixelColor(inx, pixels.Color(100, colorHigh, 0));
}
pixels.show();
delay(delayValue);
}
void adjustColor() {
if (colorHigh >= 255 || colorHigh <= 5) {
delay(500);
direction = direction * -1;
}
colorHigh = colorHigh + (direction * 1);
}
void circleNoTail(int delayValue) {
setColor();
for (int inx = 0; inx < NUM_LEDS; inx++) {
pixels.setPixelColor(inx, pixels.Color(redColor, greenColor, blueColor));
pixels.show();
delay(delayValue);
}
delay(delayValue*2);
}
void circleLED(int delayValue) {
setColor();
for (int inx = 0; inx < NUM_LEDS; inx++) {
int tail = getTail(inx);
int tail2 = getTail(tail);
int tail3 = getTail(tail2);
pixels.fill(pixels.Color(0, 0, 0), 0, NUM_LEDS);
pixels.setPixelColor(inx, pixels.Color(redColor, greenColor, blueColor));
pixels.setPixelColor(tail, pixels.Color((redColor/3), (greenColor/3), (blueColor/3)));
pixels.setPixelColor(tail2, pixels.Color((redColor/5), (greenColor/5), (blueColor/5)));
pixels.setPixelColor(tail2, pixels.Color((redColor/7), (greenColor/7), (blueColor/7)));
pixels.show();
delay(delayValue);
}
}
void cycleLED(int delayValue) {
setColor();
for (int inx = 0; inx < NUM_LEDS; inx++) {
int tail = getTail(inx);
int tail2 = getTail(tail);
int tail3 = getTail(tail2);
pixels.fill(pixels.Color(0, 0, 0), 0, NUM_LEDS);
pixels.setPixelColor(inx, pixels.Color(redColor, greenColor, blueColor));
pixels.setPixelColor(tail, pixels.Color((redColor/3), (greenColor/3), (blueColor/3)));
pixels.setPixelColor(tail2, pixels.Color((redColor/5), (greenColor/5), (blueColor/5)));
pixels.setPixelColor(tail2, pixels.Color((redColor/7), (greenColor/7), (blueColor/7)));
pixels.show();
delay(delayValue);
}
setColor();
for (int inx = NUM_LEDS; inx >= 0; inx--) {
int tail = getTailReverse(inx);
int tail2 = getTailReverse(tail);
int tail3 = getTailReverse(tail2);
pixels.fill(pixels.Color(0, 0, 0), 0, NUM_LEDS);
pixels.setPixelColor(inx, pixels.Color(redColor, greenColor, blueColor));
pixels.setPixelColor(tail, pixels.Color((redColor/3), (greenColor/3), (blueColor/3)));
pixels.setPixelColor(tail2, pixels.Color((redColor/5), (greenColor/5), (blueColor/5)));
pixels.setPixelColor(tail2, pixels.Color((redColor/7), (greenColor/7), (blueColor/7)));
pixels.show();
delay(delayValue);
}
}
int getTail(int tail) {
if (tail == 0) {
return NUM_LEDS;
}
return (tail-1);
}
int getTailReverse(int tail) {
if (tail == NUM_LEDS) {
return 0;
}
return (tail+1);
}
// setColor()
// picks random values to set for RGB
void setColor(){
redColor = random(0, 255);
greenColor = random(0,255);
blueColor = random(0, 255);
}
void flashLed(int times) {
for (int inx = 0; inx < times; inx++) {
digitalWrite(13, LOW);
delay(100);
digitalWrite(13, HIGH);
delay(100);
}
digitalWrite(13, LOW);
}