//Emergency Lights Yellow, FireFighter, Ambulance, Police and white v1.0.0 with arduino FastLed and ws2812b - by Fedaceag Ionut ( Youtube - Think small, build big! )
#include <FastLED.h> //FastLed library version 3.2.1 - https://github.com/FastLED/FastLED/wiki/Overview or http://fastled.io/ with NEOPIXEL or WS2812B
#include <EEPROM.h> //EEPROM library to save preset animation
#define NUM_STRIPS 2 //Number of led strips
#define NUM_LEDS_PER_STRIP 30 //!!! even number of leds per each strip !!! From 28 LEDs to as many as you want, but test all the effects before cutting the led strip, because some effects crash at some numbers !!!
CRGB leds[NUM_STRIPS][NUM_LEDS_PER_STRIP];
//input pins
const int buttonAnim = 2; //button for changing tha animation
const int buttonColor = 3; //button for changing the color set's
const int buttonSave = 4; //button for saving animation for preset one
const int buttonDemo = 5; //button for activating the demo that loops thru all animations
const int buttonSavedAnim = 6; //button for activating preset one with the saved animation
const int buttonStop = 7; //button for stopping the running animation (doesn't stop the preset or the demo...)
const int outLed1 = 11; //output for external led corresponding to color one
const int outLed2 = 12; //output for external led corresponding to color two
int halfOfLeds = NUM_LEDS_PER_STRIP/2;
int AnimState = 0;
int buttonStateAnim = 0;
int buttonPrevState = 0;
int ColorState = 1;
int buttonStateColor = 0;
int buttonPrevStateColor = 5;
int buttonStateSave = 0;
int buttonPrevStateSave = 0;
int buttonStateDemo = 0;
int buttonPrevStateDemo = 0;
int buttonStateSavedAnim = 0;
int buttonPrevStateSavedAnim = 0;
int SavedAnim = 1;
int SavedColor = 1;
int PrevColorSet = 1;
int buttonStopState = 0;
uint8_t gHue1 = 0;
uint8_t gHue2 = 0;
int demoEffects = 1;
int demoEffectsTotal = 30;
int nrAnim = 3; //number of strobo effect
int delayStrobo1 = 35; //delay for strobo effect
int delayStrobo2 = 85; //delay between colors for strobo effect
int demoEffectsDelay = 5000; //delay for changing the effects in demo mode
int maxBrt = 254; //maxim brightness for all colors/leds
//Color set 1 - yelow/white - more info for colors codes visit https://github.com/FastLED/FastLED/wiki/FastLED-HSV-Colors
int colorSet1Hue1 = 25; //color shade 1 in color set 1
int colorSet1Sat1 = 255; //saturation for color 1 in color set 1
int colorSet1Hue2 = 25; //color shade 2 in color set 1
int colorSet1Sat2 = 255; //saturation for color 2 in color set 1
int colorSet1Hue3 = 0; //color shade 3 in color set 1
int colorSet1Sat3 = 0; //saturation for color 3 in color set 1
//Color set 2 - blue/white - more info for colors codes visit https://github.com/FastLED/FastLED/wiki/FastLED-HSV-Colors
int colorSet2Hue1 = 160; //color shade 1 in color set 2
int colorSet2Sat1 = 255; //saturation for color 1 in color set 2
int colorSet2Hue2 = 160; //color shade 2 in color set 2
int colorSet2Sat2 = 255; //saturation for color 2 in color set 2
int colorSet2Hue3 = 0; //color shade 3 in color set 2
int colorSet2Sat3 = 0; //saturation for color 3 in color set 2
//Color set 3 - red/white - more info for colors codes visit https://github.com/FastLED/FastLED/wiki/FastLED-HSV-Colors
int colorSet3Hue1 = 0;
int colorSet3Sat1 = 255;
int colorSet3Hue2 = 0;
int colorSet3Sat2 = 255;
int colorSet3Hue3 = 0;
int colorSet3Sat3 = 0;
//Color set 4 - red/blue/white - more info for colors codes visit https://github.com/FastLED/FastLED/wiki/FastLED-HSV-Colors
int colorSet4Hue1 = 0;
int colorSet4Sat1 = 255;
int colorSet4Hue2 = 160;
int colorSet4Sat2 = 255;
int colorSet4Hue3 = 0;
int colorSet4Sat3 = 0;
//Color set 5 - white - more info for colors codes visit https://github.com/FastLED/FastLED/wiki/FastLED-HSV-Colors
int colorSet5Hue1 = 0;
int colorSet5Sat1 = 0;
int colorSet5Hue2 = 0;
int colorSet5Sat2 = 0;
int colorSet5Hue3 = 0;
int colorSet5Sat3 = 0;
int currentColorHue1 = 0;
int currentColorSat1 = 0;
int currentColorHue2 = 0;
int currentColorSat2 = 0;
int currentColorHue3 = 0;
int currentColorSat3 = 0;
//effect 14,15,16
int knightRiderSpeed = 30;
int knightRiderTail = 20;
//effect 17, 18, 19, 20
int posLed1 = 0;
int posLed2 = NUM_LEDS_PER_STRIP-1;
int tailLed1 = 25;
int speedEff1 = 10;
//effect 21
int Groups21 = 9;
int ledsGroup21 = NUM_LEDS_PER_STRIP/Groups21;
int ledsGrSt21 = 0;
int ledsGrEnd21 = ledsGroup21;
int currentGroup21 = Groups21;
int startLeds21 = 0;
int endLeds21 = NUM_LEDS_PER_STRIP-1;
int endLedsCurent21 = endLeds21;
int speedEff21 = 5;
int delayOnFull21 = 100;
//effect 22
int Groups22 = 9;
int ledsGroup22 = NUM_LEDS_PER_STRIP/Groups22;
int ledsGrSt22 = NUM_LEDS_PER_STRIP-1;
int ledsGrEnd22 = ledsGrSt22-ledsGroup22;
int currentGroup22 = Groups22;
int startLeds22 = ledsGrSt22;
int endLeds22 = 0;
int endLedsCurent22 = endLeds22;
int speedEff22 = 5;
int delayOnFull22 = 100;
//effect 24, 25
int Groups24 = 6;
int groupCurrent24 = Groups24/2;
int ledsGroup24 = NUM_LEDS_PER_STRIP/Groups24;
int center24 = (NUM_LEDS_PER_STRIP-1)/2;
int startL24 = center24;
int startR24 = center24;
int endL24 = center24-ledsGroup24;
int endR24 = center24+ledsGroup24;
int endLCurent24 = endL24;
int endRCurent24 = endR24;
int speed124 = 40;
int speed224 = 100;
//effect 26,27
int Groups26 = 6;
int groupCurrent26 = Groups26/2;
int ledsGroup26 = NUM_LEDS_PER_STRIP/Groups26;
int center26 = (NUM_LEDS_PER_STRIP-1)/2;
int startL26 = 0;
int startR26 = NUM_LEDS_PER_STRIP-1;
int endL26 = startL26+ledsGroup26;
int endR26 = startR26-ledsGroup26;
int endLCurent26 = endL26;
int endRCurent26 = endR26;
int speed126 = 40;
int speed226 = 100;
void setup() {
//Serial.begin(115200);
pinMode(buttonAnim, INPUT);
pinMode(buttonColor, INPUT);
pinMode(buttonSave, INPUT);
pinMode(buttonDemo, INPUT);
pinMode(buttonSavedAnim, INPUT);
pinMode(buttonStop, INPUT);
pinMode(outLed1, OUTPUT);
pinMode(outLed2, OUTPUT);
FastLED.addLeds<NEOPIXEL, 8>(leds[0], NUM_LEDS_PER_STRIP); //led strip one
FastLED.addLeds<NEOPIXEL, 9>(leds[1], NUM_LEDS_PER_STRIP); //led strip two
attachInterrupt(digitalPinToInterrupt(buttonAnim),changeMode,RISING); //we use interrupt for instant change
attachInterrupt(digitalPinToInterrupt(buttonColor),changeColor,RISING); //we use interrupt for instant change
fill_solid(leds[0], NUM_LEDS_PER_STRIP, CRGB::Black); //some led strips are all on at power on, so let's power them off at boot
fill_solid(leds[1], NUM_LEDS_PER_STRIP, CRGB::Black); //some led strips are all on at power on, so let's power them off at boot
digitalWrite(outLed1, HIGH);
digitalWrite(outLed2, HIGH);
FastLED.show();
SavedAnim = EEPROM.read(1); //reading the saved animation
SavedColor = EEPROM.read(2); //reading the saved color set
}
void loop() {
changeMode();
changeColor();
if(AnimState == 1){
effect6();
}else if(AnimState == 2){
effect7();
}else if(AnimState == 3){
effect9();
}else if(AnimState == 4){
effect10();
}else if(AnimState == 5){
effect8();
}else if(AnimState == 6){
effect29();
}else if(AnimState == 7){
effect11();
}else if(AnimState == 8){
effect24();
}else if(AnimState == 9){
effect26();
}else if(AnimState == 10){
effect25();
}else if(AnimState == 11){
effect27();
}else if(AnimState == 12){
effect30();
}else if(AnimState == 13){
effect23();
}else if(AnimState == 14){
effect21();
}else if(AnimState == 15){
effect22();
}else if(AnimState == 16){
effect1();
}else if(AnimState == 17){
effect2();
}else if(AnimState == 18){
effect3();
}else if(AnimState == 19){
effect4();
}else if(AnimState == 20){
effect5();
}else if(AnimState == 21){
effect12(80);
}else if(AnimState == 22){
effect13(80);
}else if(AnimState == 23){
effect14();
}else if(AnimState == 24){
effect15();
}else if(AnimState == 25){
effect16();
}else if(AnimState == 26){
effect17();
}else if(AnimState == 27){
effect18();
}else if(AnimState == 28){
effect28();
}else if(AnimState == 29){
effect19();
}else if(AnimState == 30){
effect20();
//demo section
}else if(AnimState == 31){
EVERY_N_MILLISECONDS( demoEffectsDelay ) {
if(demoEffects < demoEffectsTotal){
demoEffects++;
}else{
demoEffects = 1;
}
}
if(demoEffects == 1){
effect6();
}else if(demoEffects == 2){
effect7();
}else if(demoEffects == 3){
effect9();
}else if(demoEffects == 4){
effect10();
}else if(demoEffects == 5){
effect8();
}else if(demoEffects == 6){
effect29();
}else if(demoEffects == 7){
effect11();
}else if(demoEffects == 8){
effect24();
}else if(demoEffects == 9){
effect26();
}else if(demoEffects == 10){
effect25();
}else if(demoEffects == 11){
effect27();
}else if(demoEffects == 12){
effect30();
}else if(demoEffects == 13){
effect22();
}else if(demoEffects == 14){
effect21();
}else if(demoEffects == 15){
effect22();
}else if(demoEffects == 16){
effect1();
}else if(demoEffects == 17){
effect2();
}else if(demoEffects == 18){
effect3();
}else if(demoEffects == 19){
effect4();
}else if(demoEffects == 20){
effect5();
}else if(demoEffects == 21){
effect12(80);
}else if(demoEffects == 22){
effect13(80);
}else if(demoEffects == 23){
effect14();
}else if(demoEffects == 24){
effect15();
}else if(demoEffects == 25){
effect16();
}else if(demoEffects == 26){
effect17();
}else if(demoEffects == 27){
effect18();
}else if(demoEffects == 28){
effect28();
}else if(demoEffects == 29){
effect19();
}else if(demoEffects == 30){
effect20();
}
}else{
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
}
}
void clearStreapSolid(int strip){
fill_solid(leds[strip], NUM_LEDS_PER_STRIP, CRGB::Black);
externalLeds(0,0);
externalLeds(1,0);
changeRainbow();
}
void lightSomeLeds(int strip,int equalTo,int smallerThan,int hueVoid,int saturationVoid,int maxBrtVoid){
for(int i = equalTo; i < smallerThan; i++){
leds[strip][i] = CHSV(hueVoid,saturationVoid,maxBrt);
}
}
//external leds function
void externalLeds(int led, int onOff){
if(led == 0){
if(onOff == 1){
digitalWrite(outLed1, LOW);
}else if(onOff == 0){
digitalWrite(outLed1, HIGH);
}
}
if(led == 1){
if(onOff == 1){
digitalWrite(outLed2, LOW);
}else if(onOff == 0){
digitalWrite(outLed2, HIGH);
}
}
}
//function for reading the input, changing the animation state, saving the preset and stoping the animation
void changeMode(){
buttonStateAnim = digitalRead(buttonAnim);
buttonStateDemo = digitalRead(buttonDemo);
buttonStateSavedAnim = digitalRead(buttonSavedAnim);
buttonStateSave = digitalRead(buttonSave);
buttonStopState = digitalRead(buttonStop);
if(buttonStateSave == 1){
buttonPrevStateSave = 1;
}else{
if(buttonPrevStateSave == 1){
EEPROM.write(1, AnimState);
EEPROM.write(2, ColorState);
buttonPrevStateSave = 0;
SavedAnim = AnimState;
SavedColor = ColorState;
}
}
if(buttonStateAnim == 1){
if(AnimState == 0 && buttonPrevState == 31){
AnimState = 1;
}else if(AnimState == 1 && buttonPrevState == 0){
AnimState = 2;
}else if(AnimState == 2 && buttonPrevState == 1){
AnimState = 3;
}else if(AnimState == 3 && buttonPrevState == 2){
AnimState = 4;
}else if(AnimState == 4 && buttonPrevState == 3){
AnimState = 5;
}else if(AnimState == 5 && buttonPrevState == 4){
AnimState = 6;
}else if(AnimState == 6 && buttonPrevState == 5){
AnimState = 7;
}else if(AnimState == 7 && buttonPrevState == 6){
AnimState = 8;
}else if(AnimState == 8 && buttonPrevState == 7){
AnimState = 9;
}else if(AnimState == 9 && buttonPrevState == 8){
AnimState = 10;
}else if(AnimState == 10 && buttonPrevState == 9){
AnimState = 11;
}else if(AnimState == 11 && buttonPrevState == 10){
AnimState = 12;
}else if(AnimState == 12 && buttonPrevState == 11){
AnimState = 13;
}else if(AnimState == 13 && buttonPrevState == 12){
AnimState = 14;
}else if(AnimState == 14 && buttonPrevState == 13){
AnimState = 15;
}else if(AnimState == 15 && buttonPrevState == 14){
AnimState = 16;
}else if(AnimState == 16 && buttonPrevState == 15){
AnimState = 17;
}else if(AnimState == 17 && buttonPrevState == 16){
AnimState = 18;
}else if(AnimState == 18 && buttonPrevState == 17){
AnimState = 19;
}else if(AnimState == 19 && buttonPrevState == 18){
AnimState = 20;
}else if(AnimState == 20 && buttonPrevState == 19){
AnimState = 21;
}else if(AnimState == 21 && buttonPrevState == 20){
AnimState = 22;
}else if(AnimState == 22 && buttonPrevState == 21){
AnimState = 23;
}else if(AnimState == 23 && buttonPrevState == 22){
AnimState = 24;
}else if(AnimState == 24 && buttonPrevState == 23){
AnimState = 25;
}else if(AnimState == 25 && buttonPrevState == 24){
AnimState = 26;
}else if(AnimState == 26 && buttonPrevState == 25){
AnimState = 27;
}else if(AnimState == 27 && buttonPrevState == 26){
AnimState = 28;
}else if(AnimState == 28 && buttonPrevState == 27){
AnimState = 29;
}else if(AnimState == 29 && buttonPrevState == 28){
AnimState = 30;
}else if(AnimState == 30 && buttonPrevState == 29){
AnimState = 0;
}
}else{
if(AnimState == 0){
buttonPrevState = 31;
}else if(AnimState == 1){
buttonPrevState = 0;
}else if(AnimState == 2){
buttonPrevState = 1;
}else if(AnimState == 3){
buttonPrevState = 2;
}else if(AnimState == 4){
buttonPrevState = 3;
}else if(AnimState == 5){
buttonPrevState = 4;
}else if(AnimState == 6){
buttonPrevState = 5;
}else if(AnimState == 7){
buttonPrevState = 6;
}else if(AnimState == 8){
buttonPrevState = 7;
}else if(AnimState == 9){
buttonPrevState = 8;
}else if(AnimState == 10){
buttonPrevState = 9;
}else if(AnimState == 11){
buttonPrevState = 10;
}else if(AnimState == 12){
buttonPrevState = 11;
}else if(AnimState == 13){
buttonPrevState = 12;
}else if(AnimState == 14){
buttonPrevState = 13;
}else if(AnimState == 15){
buttonPrevState = 14;
}else if(AnimState == 16){
buttonPrevState = 15;
}else if(AnimState == 17){
buttonPrevState = 16;
}else if(AnimState == 18){
buttonPrevState = 17;
}else if(AnimState == 19){
buttonPrevState = 18;
}else if(AnimState == 20){
buttonPrevState = 19;
}else if(AnimState == 21){
buttonPrevState = 20;
}else if(AnimState == 22){
buttonPrevState = 21;
}else if(AnimState == 23){
buttonPrevState = 22;
}else if(AnimState == 24){
buttonPrevState = 23;
}else if(AnimState == 25){
buttonPrevState = 24;
}else if(AnimState == 26){
buttonPrevState = 25;
}else if(AnimState == 27){
buttonPrevState = 26;
}else if(AnimState == 28){
buttonPrevState = 27;
}else if(AnimState == 29){
buttonPrevState = 28;
}else if(AnimState == 30){
buttonPrevState = 29;
}
}
if(buttonStateDemo == 1){
AnimState = 31;
buttonPrevStateDemo = 1;
}else{
if(buttonPrevStateDemo == 1){
AnimState = 0;
buttonPrevState = 29;
buttonPrevStateDemo = 0;
demoEffects = 1;
}
}
if(buttonStateSavedAnim == 1){
AnimState = SavedAnim;
ColorState = SavedColor;
buttonPrevStateSavedAnim = 1;
}else{
if(buttonPrevStateSavedAnim == 1){
AnimState = 0;
buttonPrevStateSavedAnim = 0;
demoEffects = 0;
ColorState = PrevColorSet;
}
PrevColorSet = ColorState;
}
if(buttonStopState == 1){
AnimState = 0;
buttonPrevState = 31;
}
}
//function for changing the color
void changeColor(){
buttonStateColor = digitalRead(buttonColor);
if(buttonStateColor == 1){
if(ColorState == 1 && buttonPrevStateColor == 0){
ColorState = 2;
}else if(ColorState == 2 && buttonPrevStateColor == 1){
ColorState = 3;
}else if(ColorState == 3 && buttonPrevStateColor == 2){
ColorState = 4;
}else if(ColorState == 4 && buttonPrevStateColor == 3){
ColorState = 5;
}else if(ColorState == 5 && buttonPrevStateColor == 4){
ColorState = 6;
}else if(ColorState == 6 && buttonPrevStateColor == 5){
ColorState = 1;
}
}else{
if(ColorState == 1){
buttonPrevStateColor = 0;
}else if(ColorState == 2){
buttonPrevStateColor = 1;
}else if(ColorState == 3){
buttonPrevStateColor = 2;
}else if(ColorState == 4){
buttonPrevStateColor = 3;
}else if(ColorState == 5){
buttonPrevStateColor = 4;
}else if(ColorState == 6){
buttonPrevStateColor = 5;
}
}
if(ColorState == 1){
currentColorHue1 = colorSet1Hue1;
currentColorSat1 = colorSet1Sat1;
currentColorHue2 = colorSet1Hue2;
currentColorSat2 = colorSet1Sat2;
currentColorHue3 = colorSet1Hue3;
currentColorSat3 = colorSet1Sat3;
}else if(ColorState == 2){
currentColorHue1 = colorSet2Hue1;
currentColorSat1 = colorSet2Sat1;
currentColorHue2 = colorSet2Hue2;
currentColorSat2 = colorSet2Sat2;
currentColorHue3 = colorSet2Hue3;
currentColorSat3 = colorSet2Sat3;
}else if(ColorState == 3){
currentColorHue1 = colorSet3Hue1;
currentColorSat1 = colorSet3Sat1;
currentColorHue2 = colorSet3Hue2;
currentColorSat2 = colorSet3Sat2;
currentColorHue3 = colorSet3Hue3;
currentColorSat3 = colorSet3Sat3;
}else if(ColorState == 4){
currentColorHue1 = colorSet4Hue1;
currentColorSat1 = colorSet4Sat1;
currentColorHue2 = colorSet4Hue2;
currentColorSat2 = colorSet4Sat2;
currentColorHue3 = colorSet4Hue3;
currentColorSat3 = colorSet4Sat3;
}else if(ColorState == 5){
currentColorHue1 = colorSet5Hue1;
currentColorSat1 = colorSet5Sat1;
currentColorHue2 = colorSet5Hue2;
currentColorSat2 = colorSet5Sat2;
currentColorHue3 = colorSet5Hue3;
currentColorSat3 = colorSet5Sat3;
}else if(ColorState == 6){
currentColorHue1 = gHue1;
currentColorSat1 = 255;
currentColorHue2 = gHue2;
currentColorSat2 = 255;
currentColorHue3 = 0;
currentColorSat3 = 0;
}
}
//function for rainbow color
void changeRainbow(){
if(ColorState == 6){
gHue1++;
gHue2++;
}
}
//and below are all the animations / effects ----------------------------------
void effect1(){
int nrRed = 0;
while(nrRed < nrAnim){
for(int i = 0; i < halfOfLeds; i++){
leds[0][i] = CHSV(0,0,0);
leds[1][i] = CHSV(0,0,0);
externalLeds(0,0);
externalLeds(1,0);
}
FastLED.show();
delay(delayStrobo1);
for(int i = 0; i < halfOfLeds; i++){
leds[0][i] = CHSV(currentColorHue1,currentColorSat1,maxBrt);
leds[1][i] = CHSV(currentColorHue1,currentColorSat1,maxBrt);
}
externalLeds(0,1);
FastLED.show();
delay(delayStrobo1);
nrRed++;
}
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo2);
int nrBlu = 0;
while(nrBlu < nrAnim){
for(int i = halfOfLeds; i < halfOfLeds*2; i++){
leds[0][i] = CHSV(0,0,0);
leds[1][i] = CHSV(0,0,0);
}
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo1);
for(int i = halfOfLeds; i < halfOfLeds*2; i++){
leds[0][i] = CHSV(currentColorHue2,currentColorSat2,maxBrt);
leds[1][i] = CHSV(currentColorHue2,currentColorSat2,maxBrt);
}
externalLeds(1,1);
FastLED.show();
delay(delayStrobo1);
nrBlu++;
}
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo2);
changeRainbow();
}
void effect2(){
int nrRed = 0;
while(nrRed < nrAnim){
for(int i = 0; i < halfOfLeds; i++){
leds[0][i] = CHSV(0,0,0);
leds[1][i] = CHSV(0,0,0);
}
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo1);
for(int i = 0; i < halfOfLeds; i++){
leds[0][i] = CHSV(currentColorHue1,currentColorSat1,maxBrt);
leds[1][i] = CHSV(currentColorHue1,currentColorSat1,maxBrt);
}
lightSomeLeds(0,halfOfLeds-(halfOfLeds/6),halfOfLeds+(halfOfLeds/6),currentColorHue3,currentColorSat3,maxBrt);
lightSomeLeds(1,halfOfLeds-(halfOfLeds/6),halfOfLeds+(halfOfLeds/6),currentColorHue3,currentColorSat3,maxBrt);
externalLeds(0,1);
FastLED.show();
delay(delayStrobo1);
nrRed++;
}
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo2);
int nrBlu = 0;
while(nrBlu < nrAnim){
for(int i = halfOfLeds; i < halfOfLeds*2; i++){
leds[0][i] = CHSV(0,0,0);
leds[1][i] = CHSV(0,0,0);
}
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo1);
for(int i = halfOfLeds; i < halfOfLeds*2; i++){
leds[0][i] = CHSV(currentColorHue2,currentColorSat2,maxBrt);
leds[1][i] = CHSV(currentColorHue2,currentColorSat2,maxBrt);
}
lightSomeLeds(0,halfOfLeds-(halfOfLeds/6),halfOfLeds+(halfOfLeds/6),currentColorHue3,currentColorSat3,maxBrt);
lightSomeLeds(1,halfOfLeds-(halfOfLeds/6),halfOfLeds+(halfOfLeds/6),currentColorHue3,currentColorSat3,maxBrt);
externalLeds(1,1);
FastLED.show();
delay(delayStrobo1);
nrBlu++;
}
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo2);
changeRainbow();
}
void effect3(){
int nrRed = 0;
while(nrRed < nrAnim){
for(int i = 0; i < halfOfLeds; i++){
leds[0][i] = CHSV(0,0,0);
}
for(int i = halfOfLeds; i < halfOfLeds*2; i++){
leds[1][i] = CHSV(0,0,0);
}
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo1);
for(int i = 0; i < halfOfLeds; i++){
leds[0][i] = CHSV(currentColorHue1,currentColorSat1,maxBrt);
}
for(int i = halfOfLeds; i < halfOfLeds*2; i++){
leds[1][i] = CHSV(currentColorHue1,currentColorSat1,maxBrt);
}
externalLeds(0,1);
FastLED.show();
delay(delayStrobo1);
nrRed++;
}
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo2);
int nrBlu = 0;
while(nrBlu < nrAnim){
for(int i = halfOfLeds; i < halfOfLeds*2; i++){
leds[0][i] = CHSV(0,0,0);
}
for(int i = 0; i < halfOfLeds; i++){
leds[1][i] = CHSV(0,0,0);
}
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo1);
for(int i = halfOfLeds; i < halfOfLeds*2; i++){
leds[0][i] = CHSV(currentColorHue2,currentColorSat2,maxBrt);
}
for(int i = 0; i < halfOfLeds; i++){
leds[1][i] = CHSV(currentColorHue2,currentColorSat2,maxBrt);
}
externalLeds(1,1);
FastLED.show();
delay(delayStrobo1);
nrBlu++;
}
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo2);
changeRainbow();
}
void effect4(){
int nrRed = 0;
while(nrRed < nrAnim){
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo1);
fill_solid( leds[0], NUM_LEDS_PER_STRIP, CHSV(currentColorHue1,currentColorSat1,maxBrt));
fill_solid( leds[1], NUM_LEDS_PER_STRIP, CHSV(currentColorHue1,currentColorSat1,maxBrt));
externalLeds(0,1);
FastLED.show();
delay(delayStrobo1);
nrRed++;
}
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo2);
int nrBlu = 0;
while(nrBlu < nrAnim){
fill_solid(leds[0], NUM_LEDS_PER_STRIP, CRGB::Black);
fill_solid(leds[1], NUM_LEDS_PER_STRIP, CRGB::Black);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo1);
fill_solid( leds[0], NUM_LEDS_PER_STRIP, CHSV(currentColorHue2,currentColorSat2,maxBrt));
fill_solid( leds[1], NUM_LEDS_PER_STRIP, CHSV(currentColorHue2,currentColorSat2,maxBrt));
externalLeds(1,1);
FastLED.show();
delay(delayStrobo1);
nrBlu++;
}
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo2);
changeRainbow();
}
void effect5(){
int nrRed = 0;
while(nrRed < nrAnim){
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo1);
fill_solid( leds[0], NUM_LEDS_PER_STRIP, CHSV(currentColorHue1,currentColorSat1,maxBrt));
fill_solid( leds[1], NUM_LEDS_PER_STRIP, CHSV(currentColorHue1,currentColorSat1,maxBrt));
lightSomeLeds(0,halfOfLeds-(halfOfLeds/6),halfOfLeds+(halfOfLeds/6),currentColorHue3,currentColorSat3,maxBrt);
lightSomeLeds(1,halfOfLeds-(halfOfLeds/6),halfOfLeds+(halfOfLeds/6),currentColorHue3,currentColorSat3,maxBrt);
externalLeds(0,1);
FastLED.show();
delay(delayStrobo1);
nrRed++;
}
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo2);
int nrBlu = 0;
while(nrBlu < nrAnim){
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo1);
fill_solid( leds[0], NUM_LEDS_PER_STRIP, CHSV(currentColorHue2,currentColorSat2,maxBrt));
fill_solid( leds[1], NUM_LEDS_PER_STRIP, CHSV(currentColorHue2,currentColorSat2,maxBrt));
lightSomeLeds(0,halfOfLeds-(halfOfLeds/6),halfOfLeds+(halfOfLeds/6),currentColorHue3,currentColorSat3,maxBrt);
lightSomeLeds(1,halfOfLeds-(halfOfLeds/6),halfOfLeds+(halfOfLeds/6),currentColorHue3,currentColorSat3,maxBrt);
externalLeds(1,1);
FastLED.show();
delay(delayStrobo1);
nrBlu++;
}
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo2);
changeRainbow();
}
void effect6(){
int groupLength = (halfOfLeds/4)+1;
int group1Start = groupLength/2;
int group1End = group1Start+groupLength;
int group2Start = group1End+groupLength;
int group2End = group2Start+groupLength;
int group3Start = (groupLength/2)+halfOfLeds;
int group3End = group3Start+groupLength;
int group4Start = group3End+groupLength;
int group4End = group4Start+groupLength;
int nrRed = 0;
while(nrRed < nrAnim){
for(int i = 0; i < halfOfLeds; i++){
leds[0][i] = CHSV(0,0,0);
externalLeds(0,0);
}
for(int i = halfOfLeds; i < halfOfLeds*2; i++){
leds[1][i] = CHSV(0,0,0);
externalLeds(1,0);
}
FastLED.show();
delay(delayStrobo1);
lightSomeLeds(0,group1Start,group1End,currentColorHue1,currentColorSat1,maxBrt);
lightSomeLeds(0,group3Start,group3End,currentColorHue1,currentColorSat1,maxBrt);
lightSomeLeds(1,group1Start,group1End,currentColorHue1,currentColorSat1,maxBrt);
lightSomeLeds(1,group3Start,group3End,currentColorHue1,currentColorSat1,maxBrt);
externalLeds(0,1);
FastLED.show();
delay(delayStrobo1);
nrRed++;
}
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo2);
int nrBlu = 0;
while(nrBlu < nrAnim){
for(int i = halfOfLeds; i < halfOfLeds*2; i++){
leds[0][i] = CHSV(0,0,0);
externalLeds(0,0);
}
for(int i = 0; i < halfOfLeds; i++){
leds[1][i] = CHSV(0,0,0);
externalLeds(1,0);
}
FastLED.show();
delay(delayStrobo1);
lightSomeLeds(0,group2Start,group2End,currentColorHue2,currentColorSat2,maxBrt);
lightSomeLeds(0,group4Start,group4End,currentColorHue2,currentColorSat2,maxBrt);
lightSomeLeds(1,group2Start,group2End,currentColorHue2,currentColorSat2,maxBrt);
lightSomeLeds(1,group4Start,group4End,currentColorHue2,currentColorSat2,maxBrt);
externalLeds(1,1);
FastLED.show();
delay(delayStrobo1);
nrBlu++;
}
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo2);
changeRainbow();
}
void effect7(){
int groupLength = (halfOfLeds/4)+1;
int group1Start = groupLength/2;
int group1End = group1Start+groupLength;
int group2Start = group1End+groupLength;
int group2End = group2Start+groupLength;
int group3Start = (groupLength/2)+halfOfLeds;
int group3End = group3Start+groupLength;
int group4Start = group3End+groupLength;
int group4End = group4Start+groupLength;
int nrRed = 0;
while(nrRed < nrAnim){
for(int i = 0; i < halfOfLeds; i++){
leds[0][i] = CHSV(0,0,0);
externalLeds(0,0);
}
for(int i = halfOfLeds; i < halfOfLeds*2; i++){
leds[1][i] = CHSV(0,0,0);
externalLeds(1,0);
}
FastLED.show();
delay(delayStrobo1);
lightSomeLeds(0,group1Start,group1End,currentColorHue1,currentColorSat1,maxBrt);
lightSomeLeds(0,group4Start,group4End,currentColorHue1,currentColorSat1,maxBrt);
lightSomeLeds(1,group1Start,group1End,currentColorHue1,currentColorSat1,maxBrt);
lightSomeLeds(1,group4Start,group4End,currentColorHue1,currentColorSat1,maxBrt);
externalLeds(0,1);
FastLED.show();
delay(delayStrobo1);
nrRed++;
}
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(1,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo2);
int nrBlu = 0;
while(nrBlu < nrAnim){
for(int i = halfOfLeds; i < halfOfLeds*2; i++){
leds[0][i] = CHSV(0,0,0);
externalLeds(0,0);
}
for(int i = 0; i < halfOfLeds; i++){
leds[1][i] = CHSV(0,0,0);
externalLeds(1,0);
}
FastLED.show();
delay(delayStrobo1);
lightSomeLeds(0,group2Start,group2End,currentColorHue2,currentColorSat2,maxBrt);
lightSomeLeds(0,group3Start,group3End,currentColorHue2,currentColorSat2,maxBrt);
lightSomeLeds(1,group2Start,group2End,currentColorHue2,currentColorSat2,maxBrt);
lightSomeLeds(1,group3Start,group3End,currentColorHue2,currentColorSat2,maxBrt);
externalLeds(1,1);
FastLED.show();
delay(delayStrobo1);
nrBlu++;
}
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo2);
changeRainbow();
}
void effect8(){
int groupLength = (NUM_LEDS_PER_STRIP/6);
int startLihgts = 0;
int endLights = groupLength;
int startRevLihgts = NUM_LEDS_PER_STRIP-1;
int endRevLights = (NUM_LEDS_PER_STRIP - groupLength)-1;
int var = 0;
while(var < NUM_LEDS_PER_STRIP){
var = endLights;
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo1);
for(int i = startLihgts; i < endLights; i++){
leds[0][i] = CHSV(currentColorHue1,currentColorSat1,maxBrt);
leds[1][i] = CHSV(currentColorHue1,currentColorSat1,maxBrt);
}
externalLeds(0,1);
FastLED.show();
delay(delayStrobo1);
startLihgts = startLihgts+groupLength;
endLights = endLights+groupLength;
}
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo2);
int varb = NUM_LEDS_PER_STRIP+1;
while(varb > 1){
varb = endRevLights;
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo1);
for(int i = startRevLihgts; i > endRevLights; i--){
leds[0][i] = CHSV(currentColorHue2,currentColorSat2,maxBrt);
leds[1][i] = CHSV(currentColorHue2,currentColorSat2,maxBrt);
}
externalLeds(1,1);
FastLED.show();
delay(delayStrobo1);
startRevLihgts = startRevLihgts-groupLength;
endRevLights = endRevLights-groupLength;
}
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo2);
changeRainbow();
}
void effect9(){
int groupLength = (NUM_LEDS_PER_STRIP/6);
int startLihgts = 0;
int endLights = groupLength;
int var = 0;
while(var < NUM_LEDS_PER_STRIP){
var = endLights;
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo1);
for(int i = startLihgts; i < endLights; i++){
leds[0][i] = CHSV(currentColorHue1,currentColorSat1,maxBrt);
leds[1][i] = CHSV(currentColorHue1,currentColorSat1,maxBrt);
}
externalLeds(0,1);
FastLED.show();
delay(delayStrobo1);
startLihgts = startLihgts+groupLength;
endLights = endLights+groupLength;
}
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo2);
startLihgts = 0;
endLights = groupLength;
var = 0;
while(var < NUM_LEDS_PER_STRIP){
var = endLights;
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo1);
for(int i = startLihgts; i < endLights; i++){
leds[0][i] = CHSV(currentColorHue2,currentColorSat2,maxBrt);
leds[1][i] = CHSV(currentColorHue2,currentColorSat2,maxBrt);
}
externalLeds(1,1);
FastLED.show();
delay(delayStrobo1);
startLihgts = startLihgts+groupLength;
endLights = endLights+groupLength;
}
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo2);
changeRainbow();
}
void effect10(){
int groupLength = (NUM_LEDS_PER_STRIP/6);
int startRevLihgts = NUM_LEDS_PER_STRIP-1;
int endRevLights = (NUM_LEDS_PER_STRIP - groupLength)-1;
int varb = NUM_LEDS_PER_STRIP+1;
while(varb > 1){
varb = endRevLights;
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo1);
for(int i = startRevLihgts; i > endRevLights; i--){
leds[0][i] = CHSV(currentColorHue1,currentColorSat1,maxBrt);
leds[1][i] = CHSV(currentColorHue1,currentColorSat1,maxBrt);
}
externalLeds(0,1);
FastLED.show();
delay(delayStrobo1);
startRevLihgts = startRevLihgts-groupLength;
endRevLights = endRevLights-groupLength;
}
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo2);
startRevLihgts = NUM_LEDS_PER_STRIP-1;
endRevLights = (NUM_LEDS_PER_STRIP - groupLength)-1;
varb = NUM_LEDS_PER_STRIP+1;
while(varb > 1){
varb = endRevLights;
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo1);
for(int i = startRevLihgts; i > endRevLights; i--){
leds[0][i] = CHSV(currentColorHue2,currentColorSat2,maxBrt);
leds[1][i] = CHSV(currentColorHue2,currentColorSat2,maxBrt);
}
externalLeds(1,1);
FastLED.show();
delay(delayStrobo1);
startRevLihgts = startRevLihgts-groupLength;
endRevLights = endRevLights-groupLength;
}
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo2);
changeRainbow();
}
void effect11(){
int groupLength = (NUM_LEDS_PER_STRIP/6);
int startLihgts = 0;
int endLights = groupLength;
int startRevLihgts = NUM_LEDS_PER_STRIP-1;
int endRevLights = (NUM_LEDS_PER_STRIP - groupLength)-1;
int var = 0;
while(var < NUM_LEDS_PER_STRIP){
var = endLights;
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo1);
for(int i = startLihgts; i < endLights; i++){
leds[0][i] = CHSV(currentColorHue1,currentColorSat1,maxBrt);
}
externalLeds(0,1);
FastLED.show();
delay(delayStrobo1);
startLihgts = startLihgts+groupLength;
endLights = endLights+groupLength;
}
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo2);
int varb = NUM_LEDS_PER_STRIP+1;
while(varb > 1){
varb = endRevLights;
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo1);
for(int i = startRevLihgts; i > endRevLights; i--){
leds[1][i] = CHSV(currentColorHue2,currentColorSat2,maxBrt);
}
externalLeds(1,1);
FastLED.show();
delay(delayStrobo1);
startRevLihgts = startRevLihgts-groupLength;
endRevLights = endRevLights-groupLength;
}
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo2);
changeRainbow();
}
void effect12( fract8 chanceOfGlitter)
{
fadeToBlackBy( leds[0], NUM_LEDS_PER_STRIP, 15);
fadeToBlackBy( leds[1], NUM_LEDS_PER_STRIP, 15);
if( random8() < chanceOfGlitter) {
leds[0][random16(NUM_LEDS_PER_STRIP)] = CHSV(currentColorHue1,currentColorSat1,maxBrt);
leds[0][random16(NUM_LEDS_PER_STRIP)] = CHSV(currentColorHue2,currentColorSat2,maxBrt);
leds[1][random16(NUM_LEDS_PER_STRIP)] = CHSV(currentColorHue1,currentColorSat1,maxBrt);
leds[1][random16(NUM_LEDS_PER_STRIP)] = CHSV(currentColorHue2,currentColorSat2,maxBrt);
}
FastLED.show();
FastLED.delay(1000/120);
changeRainbow();
}
void effect13( fract8 chanceOfGlitter)
{
fadeToBlackBy( leds[0], NUM_LEDS_PER_STRIP, 15);
fadeToBlackBy( leds[1], NUM_LEDS_PER_STRIP, 15);
if( random8() < chanceOfGlitter) {
leds[0][random16(NUM_LEDS_PER_STRIP)] = CHSV(currentColorHue1,currentColorSat1,maxBrt);
leds[0][random16(NUM_LEDS_PER_STRIP)] = CHSV(currentColorHue2,currentColorSat2,maxBrt);
leds[0][random16(NUM_LEDS_PER_STRIP)] = CHSV(currentColorHue3,currentColorSat3,maxBrt);
leds[1][random16(NUM_LEDS_PER_STRIP)] = CHSV(currentColorHue1,currentColorSat1,maxBrt);
leds[1][random16(NUM_LEDS_PER_STRIP)] = CHSV(currentColorHue2,currentColorSat2,maxBrt);
leds[1][random16(NUM_LEDS_PER_STRIP)] = CHSV(currentColorHue3,currentColorSat3,maxBrt);
}
FastLED.show();
FastLED.delay(1000/120);
changeRainbow();
}
void effect14(){
fadeToBlackBy( leds[0], NUM_LEDS_PER_STRIP, knightRiderTail);
fadeToBlackBy( leds[1], NUM_LEDS_PER_STRIP, knightRiderTail);
int pos = beatsin16( knightRiderSpeed, 0, NUM_LEDS_PER_STRIP-1 );
leds[0][pos] += CHSV( currentColorHue1,currentColorSat1, maxBrt);
leds[1][pos] += CHSV( currentColorHue2,currentColorSat2, maxBrt);
FastLED.show();
changeRainbow();
}
void effect15(){
fadeToBlackBy( leds[0], NUM_LEDS_PER_STRIP, knightRiderTail);
fadeToBlackBy( leds[1], NUM_LEDS_PER_STRIP, knightRiderTail);
int pos = beatsin16( knightRiderSpeed, 0, NUM_LEDS_PER_STRIP-1 );
int pos2 = map(pos, 0, NUM_LEDS_PER_STRIP-1, NUM_LEDS_PER_STRIP-1, 0);
leds[0][pos] += CHSV( currentColorHue1,currentColorSat1, maxBrt);
leds[1][pos2] += CHSV( currentColorHue2,currentColorSat2, maxBrt);
FastLED.show();
changeRainbow();
}
void effect16(){
int var = 0;
while(var < NUM_LEDS_PER_STRIP){
fadeToBlackBy( leds[0], NUM_LEDS_PER_STRIP, knightRiderTail);
fadeToBlackBy( leds[1], NUM_LEDS_PER_STRIP, knightRiderTail);
int pos = beatsin16( knightRiderSpeed, 0, NUM_LEDS_PER_STRIP-1 );
leds[0][pos] += CHSV( currentColorHue1,currentColorSat1, maxBrt);
FastLED.show();
var++;
changeRainbow();
}
var = 0;
while(var < NUM_LEDS_PER_STRIP){
fadeToBlackBy( leds[0], NUM_LEDS_PER_STRIP, knightRiderTail);
fadeToBlackBy( leds[1], NUM_LEDS_PER_STRIP, knightRiderTail);
int pos = beatsin16( knightRiderSpeed, 0, NUM_LEDS_PER_STRIP-1 );
int pos2 = map(pos, 0, NUM_LEDS_PER_STRIP-1, NUM_LEDS_PER_STRIP-1, 0);
leds[1][pos2] += CHSV( currentColorHue2,currentColorSat2, maxBrt);
FastLED.show();
var++;
changeRainbow();
}
}
void effect17(){
fadeToBlackBy( leds[0], NUM_LEDS_PER_STRIP, tailLed1);
fadeToBlackBy( leds[1], NUM_LEDS_PER_STRIP, tailLed1);
if(posLed1 < NUM_LEDS_PER_STRIP-1){
EVERY_N_MILLISECONDS( speedEff1 ) { posLed1++; }
}else{
posLed1 = 0;
}
leds[0][posLed1] += CHSV( currentColorHue1,currentColorSat1, maxBrt);
leds[1][posLed1] += CHSV( currentColorHue2,currentColorSat2, maxBrt);
FastLED.show();
changeRainbow();
}
void effect18(){
fadeToBlackBy( leds[0], NUM_LEDS_PER_STRIP, tailLed1);
fadeToBlackBy( leds[1], NUM_LEDS_PER_STRIP, tailLed1);
if(posLed2 > 0){
EVERY_N_MILLISECONDS( speedEff1 ) { posLed2--; }
}else{
posLed2 = NUM_LEDS_PER_STRIP-1;
}
leds[0][posLed2] += CHSV( currentColorHue1,currentColorSat1, maxBrt);
leds[1][posLed2] += CHSV( currentColorHue2,currentColorSat2, maxBrt);
FastLED.show();
changeRainbow();
}
void effect19(){
fadeToBlackBy( leds[0], NUM_LEDS_PER_STRIP, tailLed1);
fadeToBlackBy( leds[1], NUM_LEDS_PER_STRIP, tailLed1);
if(posLed1 < NUM_LEDS_PER_STRIP-1){
EVERY_N_MILLISECONDS( speedEff1 ) { posLed1++; }
}else{
posLed1 = 0;
}
if(posLed2 > 0){
EVERY_N_MILLISECONDS( speedEff1 ) { posLed2--; }
}else{
posLed2 = NUM_LEDS_PER_STRIP-1;
}
leds[0][posLed1] += CHSV( currentColorHue1,currentColorSat1, maxBrt);
leds[1][posLed2] += CHSV( currentColorHue2,currentColorSat2, maxBrt);
FastLED.show();
changeRainbow();
}
void effect20(){
fadeToBlackBy( leds[0], NUM_LEDS_PER_STRIP, tailLed1);
fadeToBlackBy( leds[1], NUM_LEDS_PER_STRIP, tailLed1);
if(posLed1 < NUM_LEDS_PER_STRIP-1){
EVERY_N_MILLISECONDS( speedEff1 ) { posLed1++; }
}else{
posLed1 = 0;
}
if(posLed2 > 0){
EVERY_N_MILLISECONDS( speedEff1 ) { posLed2--; }
}else{
posLed2 = NUM_LEDS_PER_STRIP-1;
}
leds[0][posLed2] += CHSV( currentColorHue1,currentColorSat1, maxBrt);
leds[1][posLed1] += CHSV( currentColorHue2,currentColorSat2, maxBrt);
FastLED.show();
changeRainbow();
}
void effect21(){
for(int i = ledsGrSt21; i < ledsGrEnd21; i++){
leds[0][i] += CHSV( currentColorHue1,currentColorSat1, maxBrt);
leds[1][i] += CHSV( currentColorHue2,currentColorSat2, maxBrt);
}
FastLED.show();
if(ledsGrEnd21 < endLedsCurent21){
EVERY_N_MILLISECONDS( speedEff21 ) {
ledsGrSt21++;
ledsGrEnd21++;
}
}else{
if(ledsGrEnd21 >= endLedsCurent21){
endLedsCurent21 = endLedsCurent21 - ledsGroup21;
currentGroup21--;
ledsGrSt21 = 0;
ledsGrEnd21 = ledsGroup21;
}
if(currentGroup21 == 0){
delay(delayOnFull21);
clearStreapSolid(0);
clearStreapSolid(1);
endLedsCurent21 = endLeds21;
currentGroup21 = Groups21;
}
}
for(int i = startLeds21; i < ledsGrSt21; i++){
leds[0][i] = CHSV(0,0,0);
leds[1][i] = CHSV(0,0,0);
}
FastLED.show();
changeRainbow();
}
void effect22(){
for(int i = ledsGrSt22; i > ledsGrEnd22; i--){
leds[0][i] += CHSV( currentColorHue1,currentColorSat1, maxBrt);
leds[1][i] += CHSV( currentColorHue2,currentColorSat2, maxBrt);
}
FastLED.show();
if(ledsGrEnd22 > endLedsCurent22){
EVERY_N_MILLISECONDS( speedEff22 ) {
ledsGrSt22--;
ledsGrEnd22--;
}
}else{
if(ledsGrEnd22 <= endLedsCurent22){
endLedsCurent22 = endLedsCurent22 + ledsGroup22;
currentGroup22--;
ledsGrSt22 = startLeds22;
ledsGrEnd22 = ledsGrSt22-ledsGroup22;
}
if(currentGroup22 == 0){
delay(delayOnFull22);
clearStreapSolid(0);
clearStreapSolid(1);
endLedsCurent22 = endLeds22;
currentGroup22 = Groups22;
}
}
for(int i = startLeds22; i > ledsGrSt22; i--){
leds[0][i] = CHSV(0,0,0);
leds[1][i] = CHSV(0,0,0);
}
FastLED.show();
changeRainbow();
}
void effect23(){
effect21();
effect22();
}
void effect24(){
int nrAnim24 = 0;
while(nrAnim24 < nrAnim){
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo1);
for(int i = startL24; i > endLCurent24; i--){
leds[0][i] = CHSV(currentColorHue1,currentColorSat1,maxBrt);
leds[1][i] = CHSV(currentColorHue2,currentColorSat2,maxBrt);
}
for(int i = startR24; i < endRCurent24; i++){
leds[0][i] = CHSV(currentColorHue1,currentColorSat1,maxBrt);
leds[1][i] = CHSV(currentColorHue2,currentColorSat2,maxBrt);
}
externalLeds(0,1);
externalLeds(1,1);
FastLED.show();
nrAnim24++;
}
delay(speed124);
if(groupCurrent24 > 1){
startL24 = startL24 - ledsGroup24;
endLCurent24 = endLCurent24 - ledsGroup24;
startR24 = startR24 + ledsGroup24;
endRCurent24 = endRCurent24 + ledsGroup24;
groupCurrent24--;
}else{
startL24 = center24;
endLCurent24 = endL24;
startR24 = center24;
endRCurent24 = endR24;
groupCurrent24 = Groups24/2;
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(speed224);
}
changeRainbow();
}
void effect25(){
int nrAnim24 = 0;
while(nrAnim24 < nrAnim){
for(int i = startL24; i > endLCurent24; i--){
leds[0][i] = CHSV(0,0,0);
leds[1][i] = CHSV(0,0,0);
}
for(int i = startR24; i < endRCurent24; i++){
leds[0][i] = CHSV(0,0,0);
leds[1][i] = CHSV(0,0,0);
}
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo1);
for(int i = startL24; i > endLCurent24; i--){
leds[0][i] = CHSV(currentColorHue1,currentColorSat1,maxBrt);
leds[1][i] = CHSV(currentColorHue2,currentColorSat2,maxBrt);
}
for(int i = startR24; i < endRCurent24; i++){
leds[0][i] = CHSV(currentColorHue1,currentColorSat1,maxBrt);
leds[1][i] = CHSV(currentColorHue2,currentColorSat2,maxBrt);
}
externalLeds(0,1);
externalLeds(1,1);
FastLED.show();
nrAnim24++;
}
delay(speed124);
if(groupCurrent24 > 1){
startL24 = startL24 - ledsGroup24;
endLCurent24 = endLCurent24 - ledsGroup24;
startR24 = startR24 + ledsGroup24;
endRCurent24 = endRCurent24 + ledsGroup24;
groupCurrent24--;
}else{
startL24 = center24;
endLCurent24 = endL24;
startR24 = center24;
endRCurent24 = endR24;
groupCurrent24 = Groups24/2;
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(speed224);
}
changeRainbow();
}
void effect26(){
int nrAnim26 = 0;
while(nrAnim26 < nrAnim){
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo1);
for(int i = startL26; i < endLCurent26; i++){
leds[0][i] = CHSV(currentColorHue1,currentColorSat1,maxBrt);
leds[1][i] = CHSV(currentColorHue2,currentColorSat2,maxBrt);
}
for(int i = startR26; i > endRCurent26; i--){
leds[0][i] = CHSV(currentColorHue1,currentColorSat1,maxBrt);
leds[1][i] = CHSV(currentColorHue2,currentColorSat2,maxBrt);
}
externalLeds(0,1);
externalLeds(1,1);
FastLED.show();
nrAnim26++;
}
delay(speed126);
if(groupCurrent26 > 1){
startL26 = startL26 + ledsGroup26;
endLCurent26 = endLCurent26 + ledsGroup26;
startR26 = startR26 - ledsGroup26;
endRCurent26 = endRCurent26 - ledsGroup26;
groupCurrent26--;
}else{
startL26 = 0;
endLCurent26 = endL26;
startR26 = NUM_LEDS_PER_STRIP-1;
endRCurent26 = endR26;
groupCurrent26 = Groups26/2;
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(speed226);
}
changeRainbow();
}
void effect27(){
int nrAnim26 = 0;
while(nrAnim26 < nrAnim){
for(int i = startL26; i < endLCurent26; i++){
leds[0][i] = CHSV(0,0,0);
leds[1][i] = CHSV(0,0,0);
}
for(int i = startR26; i > endRCurent26; i--){
leds[0][i] = CHSV(0,0,0);
leds[1][i] = CHSV(0,0,0);
}
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(delayStrobo1);
for(int i = startL26; i < endLCurent26; i++){
leds[0][i] = CHSV(currentColorHue1,currentColorSat1,maxBrt);
leds[1][i] = CHSV(currentColorHue2,currentColorSat2,maxBrt);
}
for(int i = startR26; i > endRCurent26; i--){
leds[0][i] = CHSV(currentColorHue1,currentColorSat1,maxBrt);
leds[1][i] = CHSV(currentColorHue2,currentColorSat2,maxBrt);
}
externalLeds(0,1);
externalLeds(1,1);
FastLED.show();
nrAnim26++;
}
delay(speed126);
if(groupCurrent26 > 1){
startL26 = startL26 + ledsGroup26;
endLCurent26 = endLCurent26 + ledsGroup26;
startR26 = startR26 - ledsGroup26;
endRCurent26 = endRCurent26 - ledsGroup26;
groupCurrent26--;
}else{
startL26 = 0;
endLCurent26 = endL26;
startR26 = NUM_LEDS_PER_STRIP-1;
endRCurent26 = endR26;
groupCurrent26 = Groups26/2;
clearStreapSolid(0);
clearStreapSolid(1);
externalLeds(0,0);
externalLeds(1,0);
FastLED.show();
delay(speed226);
}
changeRainbow();
}
void effect28(){
effect17();
effect18();
}
void effect29(){
effect9();
effect10();
}
void effect30(){
effect23();
effect24();
effect26();
}