Ok so I've ran into a strange issue. It has to do with the common functions section at the bottom of the code I believe. I'm hoping you can help me figure this out. Several functions don't work with the code, even though I've changed nothing about them except to set the colors equal to my Red, Green, and Blue variables. For example, the colorWipe function will only run once, so it'll light up the whole strip and then stop. Here is my code of the call:
case 2 : { // color change
// colorWipe - Color (red, green, blue), speed delay
colorWipe(Red, Green, Blue, 25);
colorWipe(Red, Green, Blue, 25);
break;
}
and here is the function in the code:
void colorWipe(byte red, byte green, byte blue, int SpeedDelay) {
for (uint16_t i = 0; i < NUM_LEDS; i++) {
setPixel(i, red, green, blue);
showStrip();
delay(SpeedDelay);
}
}
If you'll notice, the "(byte red, byte green, byte blue, int SpeedDelay)" section have the red, green, and blue variables in lowercase, which match the variables in the common function section, such as the setPixels function. Yet I call them using Red, Green, Blue. If I change the call of the function back to the original it works
case 2 : {
// colorWipe - Color (red, green, blue), speed delay
colorWipe(0x00, 0xff, 0x00, 50);
colorWipe(0x00, 0x00, 0x00, 50);
which leads me to believe that something is conflicting with the following code:
void setPixel(int Pixel, byte red, byte green, byte blue) {
#ifdef ADAFRUIT_NEOPIXEL_H
// NeoPixel
strip.setPixelColor(Pixel, strip.Color(red, green, blue));
#endif
#ifndef ADAFRUIT_NEOPIXEL_H
// FastLED
leds[Pixel].r = red;
leds[Pixel].g = green;
leds[Pixel].b = blue;
#endif
}
or another one of the common functions. I'm at a loss for how to make this work. Other functions such as the fire function complete freeze the program, and it doesn't appear to even reset, and none of the other buttons work either. Any ideas on how to resolve this???
Here is the current code:
#include <EEPROM.h>
#include "FastLED.h"
#include "EnableInterrupt.h" // must use this for internal interrupts
#define NUM_LEDS 20
#define PIN 7
#define EFFECT_BUTTON 3
#define COLOR_BUTTON 4
#define BRIGHTNESS_BUTTON 5
volatile byte selectedEffect = 0;
volatile byte selectedColor = 0;
volatile byte selectedBrightness = 0;
CRGB leds[NUM_LEDS];
CRGB row1[NUM_LEDS]; // array used by colorWheel function
// Color (HEX Code) Array Position
// Green (0x00, 0xFF, 0x00) 0,1,2
// GreenCyan (0x00, OxFF, 0x7F) 3,4,5
// Cyan (0x00, 0xFF, 0xFF) 6,7,8
// BlueCyan (0x00, 0x7F, 0xFF) 9,10,11
// Blue (0x00, 0x00, 0xFF) 12,13,14
// BlueMagenta (0x7F, 0x00, 0xFF) 15,16,17
// Magenta (0xFF, 0x00, 0xFF) 18,19,20
// RedMagenta (0xFF, 0x00, 0x7F) 21,22,23
// Red (0xFF, 0x00, 0x00) 24,25,26
// Orange (0xFF, 0x7F, 0x00) 27,28,29
// Yellow (0xFF, 0xFF, 0x00) 30,31,32
// GreenYellow (0x7F, 0xFF, 0x00) 33,34,35
// White (0xFF, 0xFF, 0xFF) 36,37,38
uint32_t ColorArray[] = {0x00, 0xFF, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, 0xFF};
byte Red = ColorArray[0];
byte Green = ColorArray[1];
byte Blue = ColorArray[2];
void setup() {
FastLED.addLeds<WS2811, PIN, GRB>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
pinMode (EFFECT_BUTTON, INPUT_PULLUP); // internal pull-up resistor
pinMode (COLOR_BUTTON, INPUT_PULLUP);
pinMode (BRIGHTNESS_BUTTON, INPUT_PULLUP);
enableInterrupt(EFFECT_BUTTON, changeEffect, CHANGE); // EFFECT_BUTTON pressed
enableInterrupt(COLOR_BUTTON, changeColor, CHANGE); // COLOR_BUTTON pressed
enableInterrupt(BRIGHTNESS_BUTTON, changeBrightness, CHANGE); // BRIGHTNESS_BUTTON pressed
}
void loop() {
EEPROM.get(0, selectedEffect);
EEPROM.get(1, selectedColor);
EEPROM.get(2, selectedBrightness);
if (selectedEffect > 14) {
selectedEffect = 0;
EEPROM.put(0, 0);
}
if (selectedColor > 12) {
selectedColor = 0;
EEPROM.put(1, 0);
}
if (selectedBrightness > 4) {
selectedBrightness = 0;
EEPROM.put(2, 0);
}
switch (selectedBrightness) {
case 0: {
LEDS.setBrightness(10);
break;
}
case 1: {
LEDS.setBrightness(25);
break;
}
case 2: {
LEDS.setBrightness(50);
break;
}
case 3: {
LEDS.setBrightness(100);
break;
}
case 4: {
LEDS.setBrightness(150);
break;
}
}
switch (selectedColor) {
case 0: {
// Green
Red = ColorArray[0];
Green = ColorArray[1];
Blue = ColorArray[2];
break;
}
case 1: {
// GreenCyan
Red = ColorArray[3];
Green = ColorArray[4];
Blue = ColorArray[5];
break;
}
case 2: {
// Cyan
Red = ColorArray[6];
Green = ColorArray[7];
Blue = ColorArray[8];
break;
}
case 3: {
// BlueCyan
Red = ColorArray[9];
Green = ColorArray[10];
Blue = ColorArray[11];
break;
}
case 4: {
// Blue
Red = ColorArray[12];
Green = ColorArray[13];
Blue = ColorArray[14];
break;
}
case 5: {
// BlueMagenta
Red = ColorArray[15];
Green = ColorArray[16];
Blue = ColorArray[17];
break;
}
case 6: {
// Magenta
Red = ColorArray[18];
Green = ColorArray[19];
Blue = ColorArray[20];
break;
}
case 7: {
// RedMagenta
Red = ColorArray[21];
Green = ColorArray[22];
Blue = ColorArray[23];
break;
}
case 8: {
// Red
Red = ColorArray[24];
Green = ColorArray[25];
Blue = ColorArray[26];
break;
}
case 9: {
// Orange
Red = ColorArray[27];
Green = ColorArray[28];
Blue = ColorArray[29];
break;
}
case 10: {
// Yellow
Red = ColorArray[30];
Green = ColorArray[31];
Blue = ColorArray[32];
break;
}
case 11: {
// YellowGreen
Red = ColorArray[33];
Green = ColorArray[34];
Blue = ColorArray[35];
break;
}
case 12: {
// White
Red = ColorArray[36];
Green = ColorArray[37];
Blue = ColorArray[38];
}
}
switch (selectedEffect) {
case 0 : { // color change
fill_solid( leds, NUM_LEDS, CRGB(Red, Green, Blue) );
FastLED.show();
break;
}
case 1 : { // color change
setColorWheelColors(Red, Green, Blue);
// speed delay
colorWheel(50);
break;
}
case 2 : { // color change
// colorWipe - Color (red, green, blue), speed delay
colorWipe(Red, Green, Blue, 25);
colorWipe(Red, Green, Blue, 25);
break;
}
case 3 : { // no color change
// meteorRain - Color (red, green, blue), meteor size, trail decay, random trail decay (true/false), speed delay
meteorRain(0xff, 0xff, 0xff, 1, 80, true, 25);
//meteorRain(Red, Green, Blue, 1, 80, true, 25);
break;
}
case 4 : { // color change
// NewKITT - Color (red, green, blue), eye size, speed delay, end pause
NewKITT(Red, Green, Blue, 8, 10, 50);
break;
}
case 5 : { // color change
// CylonBounce - Color (red, green, blue), eye size, speed delay, end pause
CylonBounce(Red, Green, Blue, 4, 10, 50);
break;
}
case 6 : { // no color change
// Running Lights - Color (red, green, blue), wave dealy
RunningLights(0xff, 0x00, 0x00, 50); // red
RunningLights(0xff, 0xff, 0xff, 50); // white
RunningLights(0x00, 0x00, 0xff, 50); // blue
break;
}
case 7 : { // color change
// theatherChase - Color (red, green, blue), speed delay
theaterChase(Red, Green, Blue, 50);
break;
}
case 8 : { // no color change
// Fire - Cooling rate, Sparking rate, speed delay
Fire(55, 120, 15);
break;
}
case 9 : { // no color change
// FadeInOut - Color (red, green, blue)
FadeInOut(0xff, 0x00, 0x00); // red
FadeInOut(0xff, 0xff, 0xff); // green
FadeInOut(0x00, 0x00, 0xff); // blue
break;
}
case 10 : { // color change
// Strobe - Color (red, green, blue), number of flashes, flash speed, end pause
Strobe(Red, Green, Blue, 10, 50, 1000);
break;
}
case 11 : { // color change
// Sparkle - Color (red, green, blue), speed delay
Sparkle(Red, Green, Blue, 0);
break;
}
case 12 : { // color change
// Twinkle - Color (red, green, blue), count, speed delay, only one twinkle (true/false)
Twinkle(Red, Green, Blue, 10, 100, false);
break;
}
case 13 : { // no color change
// TwinkleRandom - twinkle count, speed delay, only one (true/false)
TwinkleRandom(20, 100, false);
break;
}
case 14 : { // no color change
// rainbowCycle - speed delay
rainbowCycle(20);
break;
}
}
}
void changeEffect() {
if (digitalRead (EFFECT_BUTTON) == HIGH) {
selectedEffect++;
EEPROM.put(0, selectedEffect);
asm volatile (" jmp 0");
}
}
void changeColor() {
if (digitalRead (COLOR_BUTTON) == HIGH) {
selectedColor++;
EEPROM.put(1, selectedColor);
asm volatile (" jmp 0");
}
}
void changeBrightness() {
if (digitalRead (BRIGHTNESS_BUTTON) == HIGH) {
selectedBrightness++;
EEPROM.put(2, selectedBrightness);
asm volatile (" jmp 0");
}
}
// *************************
// ** LEDEffect Functions **
// *************************
void setColorWheelColors(byte red, byte green, byte blue) {
row1[0] = CRGB(Red, Green, Blue);
row1[1] = CRGB(Red, Green, Blue);
row1[2] = CRGB(Red, Green, Blue);
row1[3] = CRGB::Black;
row1[4] = CRGB::Black;
row1[5] = CRGB::Black;
row1[6] = CRGB::Black;
row1[7] = CRGB::Black;
row1[8] = CRGB::Black;
row1[9] = CRGB::Black;
row1[10] = CRGB::Black;
row1[11] = CRGB::Black;
row1[12] = CRGB(Red, Green, Blue);
row1[13] = CRGB(Red, Green, Blue);
row1[14] = CRGB(Red, Green, Blue);
row1[15] = CRGB::Black;
row1[16] = CRGB::Black;
row1[17] = CRGB::Black;
row1[18] = CRGB::Black;
row1[19] = CRGB::Black;
row1[20] = CRGB::Black;
}
void colorWheel(int SpeedDelay) {
for (int j = 0; j < NUM_LEDS; j++) {
assignTo(j);
FastLED.show();
delay(SpeedDelay);
}
}
//used by colorWheel
void assignTo(int j) {
int i;
for (i = 0; i < NUM_LEDS; i++)
{
leds = row1[(i + j) % NUM_LEDS];
}
}
void colorWipe(byte red, byte green, byte blue, int SpeedDelay) {
for (uint16_t i = 0; i < NUM_LEDS; i++) {
setPixel(i, red, green, blue);
showStrip();
delay(SpeedDelay);
}
}
void meteorRain(byte red, byte green, byte blue, byte meteorSize, byte meteorTrailDecay, boolean meteorRandomDecay, int SpeedDelay) {
setAll(0, 0, 0);
for (int i = 0; i < NUM_LEDS + NUM_LEDS; i++) {
// fade brightness all LEDs one step
for (int j = 0; j < NUM_LEDS; j++) {
if ( (!meteorRandomDecay) || (random(10) > 5) ) {
fadeToBlack(j, meteorTrailDecay );
}
}
// draw meteor
for (int j = 0; j < meteorSize; j++) {
if ( ( i - j < NUM_LEDS) && (i - j >= 0) ) {
setPixel(i - j, red, green, blue);
}
}
showStrip();
delay(SpeedDelay);
}
}
// used by meteorrain
void fadeToBlack(int ledNo, byte fadeValue) {
#ifdef ADAFRUIT_NEOPIXEL_H
// NeoPixel
uint32_t oldColor;
uint8_t r, g, b;
int value;
oldColor = strip.getPixelColor(ledNo);
r = (oldColor & 0x00ff0000UL) >> 16;
g = (oldColor & 0x0000ff00UL) >> 8;
b = (oldColor & 0x000000ffUL);
r = (r <= 10) ? 0 : (int) r - (r * fadeValue / 256);
g = (g <= 10) ? 0 : (int) g - (g * fadeValue / 256);
b = (b <= 10) ? 0 : (int) b - (b * fadeValue / 256);
strip.setPixelColor(ledNo, r, g, b);
#endif
#ifndef ADAFRUIT_NEOPIXEL_H
// FastLED
leds[ledNo].fadeToBlackBy( fadeValue );
#endif
}
void NewKITT(byte red, byte green, byte blue, int EyeSize, int SpeedDelay, int ReturnDelay) {
RightToLeft(red, green, blue, EyeSize, SpeedDelay, ReturnDelay);
LeftToRight(red, green, blue, EyeSize, SpeedDelay, ReturnDelay);
OutsideToCenter(red, green, blue, EyeSize, SpeedDelay, ReturnDelay);
CenterToOutside(red, green, blue, EyeSize, SpeedDelay, ReturnDelay);
LeftToRight(red, green, blue, EyeSize, SpeedDelay, ReturnDelay);
RightToLeft(red, green, blue, EyeSize, SpeedDelay, ReturnDelay);
OutsideToCenter(red, green, blue, EyeSize, SpeedDelay, ReturnDelay);
CenterToOutside(red, green, blue, EyeSize, SpeedDelay, ReturnDelay);
}
// used by NewKITT
void CenterToOutside(byte red, byte green, byte blue, int EyeSize, int SpeedDelay, int ReturnDelay) {
for (int i = ((NUM_LEDS - EyeSize) / 2); i >= 0; i--) {
setAll(0, 0, 0);
setPixel(i, red / 10, green / 10, blue / 10);
for (int j = 1; j <= EyeSize; j++) {
setPixel(i + j, red, green, blue);
}
setPixel(i + EyeSize + 1, red / 10, green / 10, blue / 10);
setPixel(NUM_LEDS - i, red / 10, green / 10, blue / 10);
for (int j = 1; j <= EyeSize; j++) {
setPixel(NUM_LEDS - i - j, red, green, blue);
}
setPixel(NUM_LEDS - i - EyeSize - 1, red / 10, green / 10, blue / 10);
showStrip();
delay(SpeedDelay);
}
delay(ReturnDelay);
}
// used by NewKITT
void OutsideToCenter(byte red, byte green, byte blue, int EyeSize, int SpeedDelay, int ReturnDelay) {
for (int i = 0; i <= ((NUM_LEDS - EyeSize) / 2); i++) {
setAll(0, 0, 0);
setPixel(i, red / 10, green / 10, blue / 10);
for (int j = 1; j <= EyeSize; j++) {
setPixel(i + j, red, green, blue);
}
setPixel(i + EyeSize + 1, red / 10, green / 10, blue / 10);
setPixel(NUM_LEDS - i, red / 10, green / 10, blue / 10);
for (int j = 1; j <= EyeSize; j++) {
setPixel(NUM_LEDS - i - j, red, green, blue);
}
setPixel(NUM_LEDS - i - EyeSize - 1, red / 10, green / 10, blue / 10);
showStrip();
delay(SpeedDelay);
}
delay(ReturnDelay);
}
// used by NewKITT
void LeftToRight(byte red, byte green, byte blue, int EyeSize, int SpeedDelay, int ReturnDelay) {
for (int i = 0; i < NUM_LEDS - EyeSize - 2; i++) {
setAll(0, 0, 0);
setPixel(i, red / 10, green / 10, blue / 10);
for (int j = 1; j <= EyeSize; j++) {
setPixel(i + j, red, green, blue);
}
setPixel(i + EyeSize + 1, red / 10, green / 10, blue / 10);
showStrip();
delay(SpeedDelay);
}
delay(ReturnDelay);
}
// used by NewKITT
void RightToLeft(byte red, byte green, byte blue, int EyeSize, int SpeedDelay, int ReturnDelay) {
for (int i = NUM_LEDS - EyeSize - 2; i > 0; i--) {
setAll(0, 0, 0);
setPixel(i, red / 10, green / 10, blue / 10);
for (int j = 1; j <= EyeSize; j++) {
setPixel(i + j, red, green, blue);
}
setPixel(i + EyeSize + 1, red / 10, green / 10, blue / 10);
showStrip();
delay(SpeedDelay);
}
delay(ReturnDelay);
}
void CylonBounce(byte red, byte green, byte blue, int EyeSize, int SpeedDelay, int ReturnDelay) {
for (int i = 0; i < NUM_LEDS - EyeSize - 2; i++) {
setAll(0, 0, 0);
setPixel(i, red / 10, green / 10, blue / 10);
for (int j = 1; j <= EyeSize; j++) {
setPixel(i + j, red, green, blue);
}
setPixel(i + EyeSize + 1, red / 10, green / 10, blue / 10);
showStrip();
delay(SpeedDelay);
}
delay(ReturnDelay);
for (int i = NUM_LEDS - EyeSize - 2; i > 0; i--) {
setAll(0, 0, 0);
setPixel(i, red / 10, green / 10, blue / 10);
for (int j = 1; j <= EyeSize; j++) {
setPixel(i + j, red, green, blue);
}
setPixel(i + EyeSize + 1, red / 10, green / 10, blue / 10);
showStrip();
delay(SpeedDelay);
}
delay(ReturnDelay);
}
void RunningLights(byte red, byte green, byte blue, int WaveDelay) {
int Position = 0;
for (int i = 0; i < NUM_LEDS * 2; i++)
{
Position++; // = 0; //Position + Rate;
for (int i = 0; i < NUM_LEDS; i++) {
// sine wave, 3 offset waves make a rainbow!
//float level = sin(i+Position) * 127 + 128;
//setPixel(i,level,0,0);
//float level = sin(i+Position) * 127 + 128;
setPixel(i, ((sin(i + Position) * 127 + 128) / 255)*red,
((sin(i + Position) * 127 + 128) / 255)*green,
((sin(i + Position) * 127 + 128) / 255)*blue);
}
showStrip();
delay(WaveDelay);
}
}
void theaterChase(byte red, byte green, byte blue, int SpeedDelay) {
for (int j = 0; j < 10; j++) { //do 10 cycles of chasing
for (int q = 0; q < 3; q++) {
for (int i = 0; i < NUM_LEDS; i = i + 3) {
setPixel(i + q, red, green, blue); //turn every third pixel on
}
showStrip();
delay(SpeedDelay);
for (int i = 0; i < NUM_LEDS; i = i + 3) {
setPixel(i + q, 0, 0, 0); //turn every third pixel off
}
}
}
}
void Fire(int Cooling, int Sparking, int SpeedDelay) {
static byte heat[NUM_LEDS];
int cooldown;
// Step 1. Cool down every cell a little
for ( int i = 0; i < NUM_LEDS; i++) {
cooldown = random(0, ((Cooling * 10) / NUM_LEDS) + 2);
if (cooldown > heat) {
heat = 0;
} else {
heat = heat - cooldown;
}
}
// Step 2. Heat from each cell drifts 'up' and diffuses a little
for ( int k = NUM_LEDS - 1; k >= 2; k--) {
heat[k] = (heat[k - 1] + heat[k - 2] + heat[k - 2]) / 3;
}
// Step 3. Randomly ignite new 'sparks' near the bottom
if ( random(255) < Sparking ) {
int y = random(7);
heat[y] = heat[y] + random(160, 255);
//heat[y] = random(160,255);
}
// Step 4. Convert heat to LED colors
for ( int j = 0; j < NUM_LEDS; j++) {
setPixelHeatColor(j, heat[j] );
}
showStrip();
delay(SpeedDelay);
}
//used by fire
void setPixelHeatColor (int Pixel, byte temperature) {
// Scale 'heat' down from 0-255 to 0-191
byte t192 = round((temperature / 255.0) * 191);
// calculate ramp up from
byte heatramp = t192 & 0x3F; // 0..63
heatramp <<= 2; // scale up to 0..252
// figure out which third of the spectrum we're in:
if ( t192 > 0x80) { // hottest
setPixel(Pixel, 255, 255, heatramp);
} else if ( t192 > 0x40 ) { // middle
setPixel(Pixel, 255, heatramp, 0);
} else { // coolest
setPixel(Pixel, heatramp, 0, 0);
}
}
void FadeInOut(byte red, byte green, byte blue) {
float r, g, b;
for (int k = 0; k < 256; k = k + 1) {
r = (k / 256.0) * red;
g = (k / 256.0) * green;
b = (k / 256.0) * blue;
setAll(r, g, b);
showStrip();
}
for (int k = 255; k >= 0; k = k - 2) {
r = (k / 256.0) * red;
g = (k / 256.0) * green;
b = (k / 256.0) * blue;
setAll(r, g, b);
showStrip();
}
}
void Strobe(byte red, byte green, byte blue, int StrobeCount, int FlashDelay, int EndPause) {
for (int j = 0; j < StrobeCount; j++) {
setAll(red, green, blue);
showStrip();
delay(FlashDelay);
setAll(0, 0, 0);
showStrip();
delay(FlashDelay);
}
delay(EndPause);
}
void Sparkle(byte red, byte green, byte blue, int SpeedDelay) {
int Pixel = random(NUM_LEDS);
setPixel(Pixel, red, green, blue);
showStrip();
delay(SpeedDelay);
setPixel(Pixel, 0, 0, 0);
}
void Twinkle(byte red, byte green, byte blue, int Count, int SpeedDelay, boolean OnlyOne) {
setAll(0, 0, 0);
for (int i = 0; i < Count; i++) {
setPixel(random(NUM_LEDS), red, green, blue);
showStrip();
delay(SpeedDelay);
if (OnlyOne) {
setAll(0, 0, 0);
}
}
delay(SpeedDelay);
}
void TwinkleRandom(int Count, int SpeedDelay, boolean OnlyOne) {
setAll(0, 0, 0);
for (int i = 0; i < Count; i++) {
setPixel(random(NUM_LEDS), random(0, 255), random(0, 255), random(0, 255));
showStrip();
delay(SpeedDelay);
if (OnlyOne) {
setAll(0, 0, 0);
}
}
delay(SpeedDelay);
}
void rainbowCycle(int SpeedDelay) {
byte *c;
uint16_t i, j;
for (j = 0; j < 256 * 5; j++) { // 5 cycles of all colors on wheel
for (i = 0; i < NUM_LEDS; i++) {
c = Wheel(((i * 256 / NUM_LEDS) + j) & 255);
setPixel(i, *c, *(c + 1), *(c + 2));
}
showStrip();
delay(SpeedDelay);
}
}
// used by rainbowCycle
byte * Wheel(byte WheelPos) {
static byte c[3];
if (WheelPos < 85) {
c[0] = WheelPos * 3;
c[1] = 255 - WheelPos * 3;
c[2] = 0;
} else if (WheelPos < 170) {
WheelPos -= 85;
c[0] = 255 - WheelPos * 3;
c[1] = 0;
c[2] = WheelPos * 3;
} else {
WheelPos -= 170;
c[0] = 0;
c[1] = WheelPos * 3;
c[2] = 255 - WheelPos * 3;
}
return c;
}
// ***************************************
// ** FastLed/NeoPixel Common Functions **
// ***************************************
// Apply LED color changes
void showStrip() {
#ifdef ADAFRUIT_NEOPIXEL_H
// NeoPixel
strip.show();
#endif
#ifndef ADAFRUIT_NEOPIXEL_H
// FastLED
FastLED.show();
#endif
}
// Set a LED color (not yet visible)
void setPixel(int Pixel, byte red, byte green, byte blue) {
#ifdef ADAFRUIT_NEOPIXEL_H
// NeoPixel
strip.setPixelColor(Pixel, strip.Color(red, green, blue));
#endif
#ifndef ADAFRUIT_NEOPIXEL_H
// FastLED
leds[Pixel].r = red;
leds[Pixel].g = green;
leds[Pixel].b = blue;
#endif
}
// Set all LEDs to a given color and apply it (visible)
void setAll(byte red, byte green, byte blue) {
for (int i = 0; i < NUM_LEDS; i++ ) {
setPixel(i, red, green, blue);
}
showStrip();
}