Multiple LED strips or one long strip?

Hello all! I'm a first-time dabbler in electronics and could use some conceptual help with this project.

I'm working on a costume that features eight LED strips radiating out from a central point. Each strip is one meter long and has 60 LEDs (480 LEDs total). Each strip would display the same patterns at the same time.

I'm considering two options for arranging these strips:

Option 1 would have all the strips chained in one giant strip (with electrical shunts when needed), then code each pixel range (0-59, 60-119, etc). Since each of the strips has to start at the central node, and each strip ends at a different place in the costume, that would mean wiring the end up each strip back up to the central node to start the next strip off.

Option 2 would have each strip attach to a separate pin on the board.

I'm sure both options are possible -- but any advice on which would be easier (especially for a first-timer) are greatly appreciated! And if there's anything I need to know about how these different approaches would impact how I manage the powering of the strips too, let me know.

Thanks in advance -- excited to be part of this community!

Pick option 1 (only one library instance to control). (an example simulation)

  • each group can be in an array
  • count through the arrays, and the LEDs inside each array to find the individual pixel

What controller are you using?

I think separate strips if only for the reason of future ideas where you may want different patterns on each strip.
You said 6 strips, I am assuming of 60 so a total of 360 Leds (BTW, what kind of LED, NeoPixel, RGB, etc) If I just use a standard 20mA LED then you need a power supply of a minimum of 8A. If you are considering Lithium 18650's, you will need at least 3 and they may last 1 hour. For a more robust power pack involving a series/parallel configuration you will need some sort of battery management. Remember Lithium has special properties that if ignored can be catastrophic.

Thank you! Right now I'm prototyping with an ESP32 CP2102 board, but I also bought an adafruit feather scorpio. If there are better options for this let me know, I'm not wed to anything!

Drive them all in parallel?

Very good. Neopixels take a lot of memory, but ESP32 has enough to contain 480 of them. (Arduino Uno/Nano rev 3 work up to 620, then memory becomes a problem).

You will want a right-sized power supply (see post #3), a couple discrete components (limiting resistor of 470ohm and electrolytic capacitor of 1000uf) and read about Neopixel. Then, find a good project on-line to follow, or make your own.

Here's another sandbox example for you to tinker with.

Connect them to the same control pin.

The code needs to only know one strip with 60 LEDs, this way you are sure that everything stays in sync.

just make sure you have enough power for your 480 leds, esp. if they light all up at once at some point !

here is a basic example

Still chewing on this -- I tested out the multiple-pin approach and got it working pretty easily. But in case I want to do the single-pin, long-strip sections approach, what I'm struggling to wrap my head around now is how to name section A as pixels 0-59, section B as pixels 60-119, etc.

Here's what I have to treat these two strips (right now, two 144-pixel strips, 288 pixels total) as one long one; how would one go about splitting them into Section A or Section B?

#include <FastLED.h>
 #define NUM_LEDS 288
 CRGB leds[NUM_LEDS];

 void setup () {
  FastLED.addLeds<NEOPIXEL, 2>(leds, NUM_LEDS);
  FastLED.setBrightness(50);
 }

void cylon() {
    static uint8_t pos = 0;
    static int8_t direction = 1;

    // Fade all LEDs
    fadeToBlackBy(leds, NUM_LEDS, 20);

    // Set current position
    leds[pos] = CRGB::Red;

    // Move position
    pos += direction;
    if (pos == 0 || pos == NUM_LEDS - 1) {
        direction = -direction;
    }
}

void loop() {
    cylon();
    FastLED.show();
    delay(30);  // Control speed
}

FastLED has methods to declare "A" and "B" (et c.) sections in a single strip. I do not use it, but it seems to be versatile and popular.

I use arrays of LED counts, then count LEDs inside each segment.

int section[] = { 13, 3, 7, 6, 9, 4, 7 };          // LEDs in each segment

If you have a particular idea that is troubling, just post that idea here.

Thank you for the reply. So say I wanted to get this cyclon function running on both of my sections simultaneously (sec A is pixels 0-143 and sec B is 144-287). Is the best way to do that to list out these pixel ranges somewhere? (I'm not even sure where I would do that -- in the setup function? Or somewhere in the loop functions?)?

I'm imagining there might be a way to define somewhere, "Section A is pixels 0-143" so that when I wanted to command something to Section A later I could just refer to it by that name instead of enumerating its range of pixels. Is that possible?

Thank you for you patience,

I am looking for the method used with "FastLED.method()" that means "segment A is from LED X to LED Y" and "segment B is from LED Y to LED Z" and then call a "fadetoblack" style function on each segment simultaneously, color independent... (sorry, I usually use the FastLED library, but code my own animations)...

Found it...

CRGBset

Why would you want to this if the strips are all doing the same thing ?
Why don’t you mirror the signal simply to all the strips ?

Makes perfect sense to do exactly that.

Of course something to consider is that each strip would display the same pattern now, but that may change in the future and you might want different patterns on the strip.

In that case you would need to increase the logic level of the output pin. An ESP32 is a 3.3v device and neopixels require 5v logic levels. You can simply use a 7400 series TTL chip powered with 5v. A 74HCT14 or 74HCT04 where you run the signal though 2 of the gates is the simplest solution.

If you do decide that you may want different patterns on the strip at some point in the future, you can use Makuna Neopixelbus and it has a 8x (and even a 16x) parallel output method with which you can use separate pins which are updated simultaneously using I2S (Fastled can manage up to 4 using RMT)