#include <Adafruit_NeoPixel.h>
class Strip
{
public:
uint8_t effect;
uint8_t effects;
uint16_t effStep;
unsigned long effStart;
Adafruit_NeoPixel strip;
Strip(uint16_t leds, uint8_t pin, uint8_t toteffects, uint16_t striptype) : strip(leds, pin, striptype) {
effect = -1;
effects = toteffects;
Reset();
}
void Reset(){
effStep = 0;
effect = (effect + 1) % effects;
effStart = millis();
}
};
struct Loop
{
uint8_t currentChild;
uint8_t childs;
bool timeBased;
uint16_t cycles;
uint16_t currentTime;
Loop(uint8_t totchilds, bool timebased, uint16_t tottime) {currentTime=0;currentChild=0;childs=totchilds;timeBased=timebased;cycles=tottime;}
};
Strip strip_0(10, 4, 10, NEO_GRB + NEO_KHZ800);
struct Loop strip0loop0(9, false, 1);
struct Loop strip0loop00(2, false, 10);
struct Loop strip0loop01(1, false, 20);
//[GLOBAL_VARIABLES]
void setup() {
//Your setup here:
strip_0.strip.begin();
}
void loop() {
//Your code here:
strips_loop();
}
void strips_loop() {
if(strip0_loop0() & 0x01)
strip_0.strip.show();
}
uint8_t strip0_loop0() {
uint8_t ret = 0x00;
switch(strip0loop0.currentChild) {
case 0:
ret = strip0_loop0_eff0();break;
case 1:
ret = strip0_loop0_eff1();break;
case 2:
ret = strip0_loop0_eff2();break;
case 3:
ret = strip0_loop0_eff3();break;
case 4:
ret = strip0_loop0_eff4();break;
case 5:
ret = strip0_loop0_eff5();break;
case 6:
ret = strip0_loop0_eff6();break;
case 7:
ret = strip0_loop00();break;
case 8:
ret = strip0_loop01();break;
}
if(ret & 0x02) {
ret &= 0xfd;
if(strip0loop0.currentChild + 1 >= strip0loop0.childs) {
strip0loop0.currentChild = 0;
if(++strip0loop0.currentTime >= strip0loop0.cycles) {strip0loop0.currentTime = 0; ret |= 0x02;}
}
else {
strip0loop0.currentChild++;
}
};
return ret;
}
uint8_t strip0_loop0_eff0() {
// Strip ID: 0 - Effect: Fade - LEDS: 10
// Steps: 996 - Delay: 1
// Colors: 2 (255.0.0, 0.255.0)
// Options: duration=996, every=1,
if(millis() - strip_0.effStart < 1 * (strip_0.effStep)) return 0x00;
uint8_t r,g,b;
double e;
e = (strip_0.effStep * 1) / (double)996;
r = ( e ) * 0 + 255 * ( 1.0 - e );
g = ( e ) * 255 + 0 * ( 1.0 - e );
b = ( e ) * 0 + 0 * ( 1.0 - e );
for(uint16_t j=0;j<10;j++) {
if((j % 1) == 0)
strip_0.strip.setPixelColor(j, r, g, b);
else
strip_0.strip.setPixelColor(j, 0, 0, 0);
}
if(strip_0.effStep >= 996) {strip_0.Reset(); return 0x03; }
else strip_0.effStep++;
return 0x01;
}
uint8_t strip0_loop0_eff1() {
// Strip ID: 0 - Effect: Fade - LEDS: 10
// Steps: 996 - Delay: 1
// Colors: 2 (0.255.0, 0.0.255)
// Options: duration=996, every=1,
if(millis() - strip_0.effStart < 1 * (strip_0.effStep)) return 0x00;
uint8_t r,g,b;
double e;
e = (strip_0.effStep * 1) / (double)996;
r = ( e ) * 0 + 0 * ( 1.0 - e );
g = ( e ) * 0 + 255 * ( 1.0 - e );
b = ( e ) * 255 + 0 * ( 1.0 - e );
for(uint16_t j=0;j<10;j++) {
if((j % 1) == 0)
strip_0.strip.setPixelColor(j, r, g, b);
else
strip_0.strip.setPixelColor(j, 0, 0, 0);
}
if(strip_0.effStep >= 996) {strip_0.Reset(); return 0x03; }
else strip_0.effStep++;
return 0x01;
}
uint8_t strip0_loop0_eff2() {
// Strip ID: 0 - Effect: Fade - LEDS: 10
// Steps: 996 - Delay: 1
// Colors: 2 (0.0.255, 255.255.0)
// Options: duration=996, every=1,
if(millis() - strip_0.effStart < 1 * (strip_0.effStep)) return 0x00;
uint8_t r,g,b;
double e;
e = (strip_0.effStep * 1) / (double)996;
r = ( e ) * 255 + 0 * ( 1.0 - e );
g = ( e ) * 255 + 0 * ( 1.0 - e );
b = ( e ) * 0 + 255 * ( 1.0 - e );
for(uint16_t j=0;j<10;j++) {
if((j % 1) == 0)
strip_0.strip.setPixelColor(j, r, g, b);
else
strip_0.strip.setPixelColor(j, 0, 0, 0);
}
if(strip_0.effStep >= 996) {strip_0.Reset(); return 0x03; }
else strip_0.effStep++;
return 0x01;
}
uint8_t strip0_loop0_eff3() {
// Strip ID: 0 - Effect: Fade - LEDS: 10
// Steps: 996 - Delay: 1
// Colors: 2 (255.255.0, 0.255.255)
// Options: duration=996, every=1,
if(millis() - strip_0.effStart < 1 * (strip_0.effStep)) return 0x00;
uint8_t r,g,b;
double e;
e = (strip_0.effStep * 1) / (double)996;
r = ( e ) * 0 + 255 * ( 1.0 - e );
g = ( e ) * 255 + 255 * ( 1.0 - e );
b = ( e ) * 255 + 0 * ( 1.0 - e );
for(uint16_t j=0;j<10;j++) {
if((j % 1) == 0)
strip_0.strip.setPixelColor(j, r, g, b);
else
strip_0.strip.setPixelColor(j, 0, 0, 0);
}
if(strip_0.effStep >= 996) {strip_0.Reset(); return 0x03; }
else strip_0.effStep++;
return 0x01;
}
uint8_t strip0_loop0_eff4() {
// Strip ID: 0 - Effect: Fade - LEDS: 10
// Steps: 996 - Delay: 1
// Colors: 2 (0.255.255, 255.0.255)
// Options: duration=996, every=1,
if(millis() - strip_0.effStart < 1 * (strip_0.effStep)) return 0x00;
uint8_t r,g,b;
double e;
e = (strip_0.effStep * 1) / (double)996;
r = ( e ) * 255 + 0 * ( 1.0 - e );
g = ( e ) * 0 + 255 * ( 1.0 - e );
b = ( e ) * 255 + 255 * ( 1.0 - e );
for(uint16_t j=0;j<10;j++) {
if((j % 1) == 0)
strip_0.strip.setPixelColor(j, r, g, b);
else
strip_0.strip.setPixelColor(j, 0, 0, 0);
}
if(strip_0.effStep >= 996) {strip_0.Reset(); return 0x03; }
else strip_0.effStep++;
return 0x01;
}
uint8_t strip0_loop0_eff5() {
// Strip ID: 0 - Effect: Fade - LEDS: 10
// Steps: 996 - Delay: 1
// Colors: 2 (255.0.255, 255.255.255)
// Options: duration=996, every=1,
if(millis() - strip_0.effStart < 1 * (strip_0.effStep)) return 0x00;
uint8_t r,g,b;
double e;
e = (strip_0.effStep * 1) / (double)996;
r = ( e ) * 255 + 255 * ( 1.0 - e );
g = ( e ) * 255 + 0 * ( 1.0 - e );
b = ( e ) * 255 + 255 * ( 1.0 - e );
for(uint16_t j=0;j<10;j++) {
if((j % 1) == 0)
strip_0.strip.setPixelColor(j, r, g, b);
else
strip_0.strip.setPixelColor(j, 0, 0, 0);
}
if(strip_0.effStep >= 996) {strip_0.Reset(); return 0x03; }
else strip_0.effStep++;
return 0x01;
}
uint8_t strip0_loop0_eff6() {
// Strip ID: 0 - Effect: Fade - LEDS: 10
// Steps: 990 - Delay: 1
// Colors: 2 (255.255.255, 255.0.0)
// Options: duration=990, every=1,
if(millis() - strip_0.effStart < 1 * (strip_0.effStep)) return 0x00;
uint8_t r,g,b;
double e;
e = (strip_0.effStep * 1) / (double)990;
r = ( e ) * 255 + 255 * ( 1.0 - e );
g = ( e ) * 0 + 255 * ( 1.0 - e );
b = ( e ) * 0 + 255 * ( 1.0 - e );
for(uint16_t j=0;j<10;j++) {
if((j % 1) == 0)
strip_0.strip.setPixelColor(j, r, g, b);
else
strip_0.strip.setPixelColor(j, 0, 0, 0);
}
if(strip_0.effStep >= 990) {strip_0.Reset(); return 0x03; }
else strip_0.effStep++;
return 0x01;
}
uint8_t strip0_loop00() {
uint8_t ret = 0x00;
switch(strip0loop00.currentChild) {
case 0:
ret = strip0_loop00_eff0();break;
case 1:
ret = strip0_loop00_eff1();break;
}
if(ret & 0x02) {
ret &= 0xfd;
if(strip0loop00.currentChild + 1 >= strip0loop00.childs) {
strip0loop00.currentChild = 0;
if(++strip0loop00.currentTime >= strip0loop00.cycles) {strip0loop00.currentTime = 0; ret |= 0x02;}
}
else {
strip0loop00.currentChild++;
}
};
return ret;
}
uint8_t strip0_loop00_eff0() {
// Strip ID: 0 - Effect: Fade - LEDS: 10
// Steps: 20 - Delay: 5
// Colors: 2 (0.0.0, 255.255.255)
// Options: duration=100, every=1,
if(millis() - strip_0.effStart < 5 * (strip_0.effStep)) return 0x00;
uint8_t r,g,b;
double e;
e = (strip_0.effStep * 5) / (double)100;
r = ( e ) * 255 + 0 * ( 1.0 - e );
g = ( e ) * 255 + 0 * ( 1.0 - e );
b = ( e ) * 255 + 0 * ( 1.0 - e );
for(uint16_t j=0;j<10;j++) {
if((j % 1) == 0)
strip_0.strip.setPixelColor(j, r, g, b);
else
strip_0.strip.setPixelColor(j, 0, 0, 0);
}
if(strip_0.effStep >= 20) {strip_0.Reset(); return 0x03; }
else strip_0.effStep++;
return 0x01;
}
uint8_t strip0_loop00_eff1() {
// Strip ID: 0 - Effect: Fade - LEDS: 10
// Steps: 20 - Delay: 5
// Colors: 2 (255.255.255, 0.0.0)
// Options: duration=100, every=1,
if(millis() - strip_0.effStart < 5 * (strip_0.effStep)) return 0x00;
uint8_t r,g,b;
double e;
e = (strip_0.effStep * 5) / (double)100;
r = ( e ) * 0 + 255 * ( 1.0 - e );
g = ( e ) * 0 + 255 * ( 1.0 - e );
b = ( e ) * 0 + 255 * ( 1.0 - e );
for(uint16_t j=0;j<10;j++) {
if((j % 1) == 0)
strip_0.strip.setPixelColor(j, r, g, b);
else
strip_0.strip.setPixelColor(j, 0, 0, 0);
}
if(strip_0.effStep >= 20) {strip_0.Reset(); return 0x03; }
else strip_0.effStep++;
return 0x01;
}
uint8_t strip0_loop01() {
uint8_t ret = 0x00;
switch(strip0loop01.currentChild) {
case 0:
ret = strip0_loop01_eff0();break;
}
if(ret & 0x02) {
ret &= 0xfd;
if(strip0loop01.currentChild + 1 >= strip0loop01.childs) {
strip0loop01.currentChild = 0;
if(++strip0loop01.currentTime >= strip0loop01.cycles) {strip0loop01.currentTime = 0; ret |= 0x02;}
}
else {
strip0loop01.currentChild++;
}
};
return ret;
}
uint8_t strip0_loop01_eff0() {
// Strip ID: 0 - Effect: Rainbow - LEDS: 10
// Steps: 10 - Delay: 20
// Colors: 10 (255.0.0, 255.163.0, 255.255.0, 184.255.0, 0.255.0, 0.255.255, 0.148.255, 0.0.255, 120.0.255, 93.0.152)
// Options: rainbowlen=10, toLeft=true,
if(millis() - strip_0.effStart < 20 * (strip_0.effStep)) return 0x00;
float factor1, factor2;
uint16_t ind;
for(uint16_t j=0;j<10;j++) {
ind = strip_0.effStep + j * 1;
switch((int)((ind % 10) / 1)) {
case 0: factor1 = 1.0 - ((float)(ind % 10 - 0 * 1) / 1);
factor2 = (float)((int)(ind - 0) % 10) / 1;
strip_0.strip.setPixelColor(j, 255 * factor1 + 255 * factor2, 0 * factor1 + 163 * factor2, 0 * factor1 + 0 * factor2);
break;
case 1: factor1 = 1.0 - ((float)(ind % 10 - 1 * 1) / 1);
factor2 = (float)((int)(ind - 1) % 10) / 1;
strip_0.strip.setPixelColor(j, 255 * factor1 + 255 * factor2, 163 * factor1 + 255 * factor2, 0 * factor1 + 0 * factor2);
break;
case 2: factor1 = 1.0 - ((float)(ind % 10 - 2 * 1) / 1);
factor2 = (float)((int)(ind - 2) % 10) / 1;
strip_0.strip.setPixelColor(j, 255 * factor1 + 184 * factor2, 255 * factor1 + 255 * factor2, 0 * factor1 + 0 * factor2);
break;
case 3: factor1 = 1.0 - ((float)(ind % 10 - 3 * 1) / 1);
factor2 = (float)((int)(ind - 3) % 10) / 1;
strip_0.strip.setPixelColor(j, 184 * factor1 + 0 * factor2, 255 * factor1 + 255 * factor2, 0 * factor1 + 0 * factor2);
break;
case 4: factor1 = 1.0 - ((float)(ind % 10 - 4 * 1) / 1);
factor2 = (float)((int)(ind - 4) % 10) / 1;
strip_0.strip.setPixelColor(j, 0 * factor1 + 0 * factor2, 255 * factor1 + 255 * factor2, 0 * factor1 + 255 * factor2);
break;
case 5: factor1 = 1.0 - ((float)(ind % 10 - 5 * 1) / 1);
factor2 = (float)((int)(ind - 5) % 10) / 1;
strip_0.strip.setPixelColor(j, 0 * factor1 + 0 * factor2, 255 * factor1 + 148 * factor2, 255 * factor1 + 255 * factor2);
break;
case 6: factor1 = 1.0 - ((float)(ind % 10 - 6 * 1) / 1);
factor2 = (float)((int)(ind - 6) % 10) / 1;
strip_0.strip.setPixelColor(j, 0 * factor1 + 0 * factor2, 148 * factor1 + 0 * factor2, 255 * factor1 + 255 * factor2);
break;
case 7: factor1 = 1.0 - ((float)(ind % 10 - 7 * 1) / 1);
factor2 = (float)((int)(ind - 7) % 10) / 1;
strip_0.strip.setPixelColor(j, 0 * factor1 + 120 * factor2, 0 * factor1 + 0 * factor2, 255 * factor1 + 255 * factor2);
break;
case 8: factor1 = 1.0 - ((float)(ind % 10 - 8 * 1) / 1);
factor2 = (float)((int)(ind - 8) % 10) / 1;
strip_0.strip.setPixelColor(j, 120 * factor1 + 93 * factor2, 0 * factor1 + 0 * factor2, 255 * factor1 + 152 * factor2);
break;
case 9: factor1 = 1.0 - ((float)(ind % 10 - 9 * 1) / 1);
factor2 = (float)((int)(ind - 9) % 10) / 1;
strip_0.strip.setPixelColor(j, 93 * factor1 + 255 * factor2, 0 * factor1 + 0 * factor2, 152 * factor1 + 0 * factor2);
break;
}
}
if(strip_0.effStep >= 10) {strip_0.Reset(); return 0x03; }
else strip_0.effStep++;
return 0x01;
}