#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) : strip(leds, pin, NEO_GRB + NEO_KHZ800) {
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(60, 8, 60 );
struct Loop strip0loop0(1, false, 1);
//[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;
}
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() {
if(millis() - strip_0.effStart < 11 * (strip_0.effStep)) return 0x00;
uint8_t e,r,g,b;
e = (strip_0.effStep * 11) / 840;
r = 121 * ( e ) + 0 * ( 1.0 - e );
g = 0 * ( e ) + 0 * ( 1.0 - e );
b = 140 * ( e ) + 0 * ( 1.0 - e );
for(uint16_t j=0;j<60;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 >= 76.36363636363636) {strip_0.Reset(); return 0x03; }
else strip_0.effStep++;
return 0x01;
}