// https://www.reddit.com/r/FastLED/comments/1oczzf8/code_running_in_sequence_not_simultaneously/
#include <FastLED.h>
#define NUM_LEDS_1 58
#define NUM_LEDS_2 57
#define NUM_LEDS_3 56
#define NUM_LEDS_4 55
#define NUM_LEDS_5 54
#define NUM_LEDS_6 53
CRGB StringOne[NUM_LEDS_1];
CRGB StringTwo[NUM_LEDS_2];
CRGB StringThree[NUM_LEDS_3];
CRGB StringFour[NUM_LEDS_4];
CRGB StringFive[NUM_LEDS_5];
CRGB StringSix[NUM_LEDS_6];
void setup() {
FastLED.addLeds<NEOPIXEL, 2>(StringOne, NUM_LEDS_1);
FastLED.addLeds<NEOPIXEL, 3>(StringTwo, NUM_LEDS_2);
FastLED.addLeds<NEOPIXEL, 4>(StringThree, NUM_LEDS_3);
FastLED.addLeds<NEOPIXEL, 5>(StringFour, NUM_LEDS_4);
FastLED.addLeds<NEOPIXEL, 6>(StringFive, NUM_LEDS_5);
FastLED.addLeds<NEOPIXEL, 7>(StringSix, NUM_LEDS_6);
}
void loop() {
// store the current position of the dot for each strip
static int pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0, pos5 = 0, pos6 = 0;
// draw each strip's dot
StringOne[pos1] = CRGB::Green;
StringTwo[pos2] = CRGB::Green;
StringThree[pos3] = CRGB::Green;
StringFour[pos4] = CRGB::Green;
StringFive[pos5] = CRGB::Green;
StringSix[pos6] = CRGB::Green;
FastLED.delay(40);
// erase the dots
StringOne[pos1] = CRGB::Black;
StringTwo[pos2] = CRGB::Black;
StringThree[pos3] = CRGB::Black;
StringFour[pos4] = CRGB::Black;
StringFive[pos5] = CRGB::Black;
StringSix[pos6] = CRGB::Black;
// move each dot to the next position, and wrap at the end of each strip
pos1 = (pos1 + 1) % NUM_LEDS_1;
pos2 = (pos2 + 1) % NUM_LEDS_2;
pos3 = (pos3 + 1) % NUM_LEDS_3;
pos4 = (pos4 + 1) % NUM_LEDS_4;
pos5 = (pos5 + 1) % NUM_LEDS_5;
pos6 = (pos6 + 1) % NUM_LEDS_6;
}