// --> include libraries
#include <FastLED.h>
// --> defines and constants and global variables
#define NUM_LEDS 384 // number of LEDS
CRGB leds[NUM_LEDS]; // Define led strip
int brightness = 250; // LED brightness
int t = 2; // Travel before turning
int c = 1; // Colour
int i = 4; // LED
int NS[] = {-8, 8};
int EW[] = {-1, 1};
//int NESW[] = {-8, 1, 8, -1};
int d = 1; // Direction select
int nd = 1; // New Direction
// --> user defined functions
//void DIRECTION();
void FADE();
// --> setup
void setup()
{ FastLED.addLeds<NEOPIXEL, 3>(leds, 0, 255);
FastLED.addLeds<NEOPIXEL, 4>(leds, 256, 319);
FastLED.addLeds<NEOPIXEL, 5>(leds, 320, 383);
//FastLED.addLeds<WS2812, 3, RGB>(leds, NUM_LEDS);
//FastLED.addLeds<WS2812,DATA_PINr2,RGB>(ledsr2,NUM_LEDSr2);
randomSeed(analogRead(0));
}
// --> loop
void loop()
{
if ( nd == -1 or nd == 1 )
{
d = random(2); //random pick number
nd = (NS[d]); //use random number to pick direct
}
else if ( nd == -8 or nd == 8 )
{
d = random(2); //random pick number
nd = (EW[d]); //use random number to pick direct
}
t = random(12, 17); //pick how long dot travels in that direction
for (int w = 1; w < t; w++)
{
leds[i] = CHSV(c = c + 5, 255, brightness); FastLED.show();
for(int i = 0; i < NUM_LEDS; i++) { leds[i].nscale8(210);} //uniform tail
//FADE(1, 200, true, 100); //random tail
delay(100);
//i = i + nd;
if (i >= 0 and i <= 63)
{
i = i + nd;
if (nd == 1)
{
if (i == 8) {i = 320;}
if (i == 16) {i = 328;}
if (i == 24) {i = 336;}
if (i == 32) {i = 344;}
if (i == 40) {i = 352;}
if (i == 48) {i = 360;}
if (i == 56) {i = 368;}
if (i == 64) {i = 376;}
}
if (nd == 8)
{ }
if (nd == -1)
{
if (i == 55) {i = 319;}
if (i == 47) {i = 311;}
if (i == 39) {i = 303;}
if (i == 31) {i = 295;}
if (i == 23) {i = 287;}
if (i == 15) {i = 279;}
if (i == 7) {i = 271;}
if (i == -1) {i = 263;}
}
if (nd == -8)
{
if (i == -1) {i = 255;}
if (i == -2) {i = 254;}
if (i == -3) {i = 253;}
if (i == -4) {i = 252;}
if (i == -5) {i = 251;}
if (i == -6) {i = 250;}
if (i == -7) {i = 249;}
if (i == -8) {i = 248;}
}
}
else if (i >= 64 and i <= 127)
{
i = i + nd;
if (nd == 1)
{
if (i == 72) {i = 376; nd = -8;}
if (i == 80) {i = 377; nd = -8;}
if (i == 88) {i = 378; nd = -8;}
if (i == 96) {i = 379; nd = -8;}
if (i == 104) {i = 380; nd = -8;}
if (i == 112) {i = 381; nd = -8;}
if (i == 120) {i = 382; nd = -8;}
if (i == 128) {i = 383; nd = -8;}
}
if (nd == 8)
{ }
if (nd == -1)
{
if (i == 119) {i = 312; nd = -8;}
if (i == 111) {i = 313; nd = -8;}
if (i == 103) {i = 314; nd = -8;}
if (i == 95) {i = 315; nd = -8;}
if (i == 87) {i = 316; nd = -8;}
if (i == 79) {i = 317; nd = -8;}
if (i == 71) {i = 318; nd = -8;}
if (i == 63) {i = 319; nd = -8;}
}
if (nd == -8)
{ }
}
else if (i >= 128 and i <= 191)
{
i = i + nd;
if (nd == 1)
{
if (i == 136) {i = 383; nd = -1;}
if (i == 144) {i = 375; nd = -1;}
if (i == 152) {i = 367; nd = -1;}
if (i == 160) {i = 359; nd = -1;}
if (i == 168) {i = 351; nd = -1;}
if (i == 176) {i = 343; nd = -1;}
if (i == 184) {i = 335; nd = -1;}
if (i == 192) {i = 327; nd = -1;}
}
if (nd == 8)
{ }
if (nd == -1)
{
if (i == 183) {i = 256; nd = 1;}
if (i == 175) {i = 264; nd = 1;}
if (i == 167) {i = 272; nd = 1;}
if (i == 159) {i = 280; nd = 1;}
if (i == 151) {i = 288; nd = 1;}
if (i == 143) {i = 296; nd = 1;}
if (i == 135) {i = 304; nd = 1;}
if (i == 127) {i = 312; nd = 1;}
}
if (nd == -8)
{ }
}
else if (i >= 192 and i <= 255)
{
i = i + nd;
if (nd == 1)
{
if (i == 200) {i = 327; nd = 8;}
if (i == 208) {i = 326; nd = 8;}
if (i == 216) {i = 325; nd = 8;}
if (i == 224) {i = 324; nd = 8;}
if (i == 232) {i = 323; nd = 8;}
if (i == 240) {i = 322; nd = 8;}
if (i == 248) {i = 321; nd = 8;}
if (i == 256) {i = 320; nd = 8;}
}
if (nd == 8)
{
if (i == 256) {i = 0;}
if (i == 257) {i = 1;}
if (i == 258) {i = 2;}
if (i == 259) {i = 3;}
if (i == 260) {i = 4;}
if (i == 261) {i = 5;}
if (i == 262) {i = 6;}
if (i == 263) {i = 7;}
}
if (nd == -1)
{
if (i == 247) {i = 263; nd = 8;}
if (i == 239) {i = 262; nd = 8;}
if (i == 231) {i = 261; nd = 8;}
if (i == 223) {i = 260; nd = 8;}
if (i == 215) {i = 259; nd = 8;}
if (i == 207) {i = 258; nd = 8;}
if (i == 199) {i = 257; nd = 8;}
if (i == 191) {i = 256; nd = 8;}
}
if (nd == -8)
{ }
}
else if (i >= 256 and i <= 319)
{
i = i + nd;
if (nd == 1)
{
if (i == 264) {i = 0; nd = 1;}
if (i == 272) {i = 8; nd = 1;}
if (i == 280) {i = 16; nd = 1;}
if (i == 288) {i = 24; nd = 1;}
if (i == 296) {i = 32; nd = 1;}
if (i == 304) {i = 40; nd = 1;}
if (i == 312) {i = 48; nd = 1;}
if (i == 320) {i = 56; nd = 1;}
}
if (nd == 8)
{
if (i == 320) {i = 120; nd = 1;}
if (i == 321) {i = 112; nd = 1;}
if (i == 322) {i = 104; nd = 1;}
if (i == 323) {i = 96; nd = 1;}
if (i == 324) {i = 88; nd = 1;}
if (i == 325) {i = 80; nd = 1;}
if (i == 326) {i = 72; nd = 1;}
if (i == 327) {i = 64; nd = 1;}
}
if (nd == -1)
{
if (i == 311) {i = 128; nd = 1;}
if (i == 303) {i = 136; nd = 1;}
if (i == 295) {i = 144; nd = 1;}
if (i == 287) {i = 152; nd = 1;}
if (i == 279) {i = 160; nd = 1;}
if (i == 271) {i = 159; nd = 1;}
if (i == 263) {i = 176; nd = 1;}
if (i == 255) {i = 184; nd = 1;}
}
if (nd == -8)
{
if (i == 255) {i = 248; nd = 1;}
if (i == 254) {i = 240; nd = 1;}
if (i == 253) {i = 232; nd = 1;}
if (i == 252) {i = 224; nd = 1;}
if (i == 251) {i = 216; nd = 1;}
if (i == 250) {i = 208; nd = 1;}
if (i == 249) {i = 200; nd = 1;}
if (i == 248) {i = 192; nd = 1;}
}
}
else if (i >= 320 and i <= 383)
{
i = i + nd;
if (nd == 1)
{
if (i == 328) {i = 191; nd = -1;}
if (i == 336) {i = 183; nd = -1;}
if (i == 344) {i = 175; nd = -1;}
if (i == 352) {i = 167; nd = -1;}
if (i == 360) {i = 159; nd = -1;}
if (i == 368) {i = 151; nd = -1;}
if (i == 376) {i = 143; nd = -1;}
if (i == 384) {i = 135; nd = -1;}
}
if (nd == 8)
{
if (i == 384) {i = 71; nd = -1;}
if (i == 385) {i = 79; nd = -1;}
if (i == 386) {i = 87; nd = -1;}
if (i == 387) {i = 95; nd = -1;}
if (i == 388) {i = 103; nd = -1;}
if (i == 389) {i = 111; nd = -1;}
if (i == 390) {i = 119; nd = -1;}
if (i == 391) {i = 127; nd = -1;}
}
if (nd == -1)
{
if (i == 375) {i = 63;}
if (i == 367) {i = 55;}
if (i == 359) {i = 47;}
if (i == 351) {i = 39;}
if (i == 343) {i = 31;}
if (i == 335) {i = 23;}
if (i == 327) {i = 15;}
if (i == 319) {i = 7;}
}
if (nd == -8)
{
if (i == 319) {i = 199; nd = -1;}
if (i == 318) {i = 207; nd = -1;}
if (i == 317) {i = 215; nd = -1;}
if (i == 316) {i = 223; nd = -1;}
if (i == 315) {i = 231; nd = -1;}
if (i == 314) {i = 239; nd = -1;}
if (i == 313) {i = 247; nd = -1;}
if (i == 312) {i = 255; nd = -1;}
}
}
}
}
void fadeToBlack(int ledNo, byte fadeValue)
{ leds[ledNo].fadeToBlackBy( fadeValue ); }
void FADE(byte meteorSize, byte meteorTrailDecay, boolean meteorRandomDecay, int SpeedDelay)
{ for(int f=0; f<NUM_LEDS; f++) // fade brightness all LEDs one step
{ if( (!meteorRandomDecay) || (random(10)>5) )
{ fadeToBlack(f, meteorTrailDecay ); }
}
}
FPS: 0
Power: 0.00W
Power: 0.00W