The effect of ARGB led strips running in sequence

Hello,

Im new to arduino stuff and i want to start my first project, but i have a question.
I want to connect multiple led strips to the arduino (powerd by a sepperate psu ofcourse). But i want to let the effect go from one strip to the next. (i mean with this when the effect reaches the end of strip number 1 i want it to contineu in strip number 2 etc.).
But i have tried to connect the data in series but after a couple of strips the data signal gets corrupted.

Is there a way that i can configuere FastLED so i have each strip connected to an individual data output on the arduino and then in the software say: Strip 1 has 60 led's so strip 2 needs to start the effect as led 61 and so on?
So to recap strip 1 is connected to data output 1 and starts in the software from led 1 so the effect starts in this strip, then when it reaches led 60 (the last led of strip 1) it has to continue in strip 2 and so in the software this strip starts from led 61 and so on.

If this is possible how can i do this?

Thanks for takingyour time to read this post!

Kind regards,
Wout C

Which strips are You using? Not heard about this kind of trouble before. A principal schematic would likely be good. Pen and paper usually works well.

There must be a cause for that, because the strips are meant to be daisy chained. It can be an issue cause by lack of power (what PSU are you using how have you connected, how many leds, using what cable) or a cable length issue.

If you provide sufficient power along the length of the strip, the total length of the strip can be really long.

Yeah there is, it is a little bit of a strange method i think it can be done like this.

  • Create 1 CRGB array to contain all of the data of all strips combined.
  • Create separate objects for each strip where the pointer to the data buffer is this Array + the offset
  • Then use the standard effects functions to create effects in the CRGB output buffer.
#include <FastLED.h>

#define NUM_LEDS 64
#define STRIP_LEN 16  // assume 4 strips of 16 leds
#define OFFSET (STRIP_LEN * 3)  // RGB takes 3 bytes per led

#define DATA_PIN1 7
#define DATA_PIN2 8
#define DATA_PIN3 9
#define DATA_PIN4 10

CRGB leds[NUM_LEDS];

void setup() {
  LEDS.addLeds<WS2812, DATA_PIN1, RGB>(leds , STRIP_LEN);
  LEDS.addLeds<WS2812, DATA_PIN2, RGB>(leds + OFFSET, STRIP_LEN);
  LEDS.addLeds<WS2812, DATA_PIN3, RGB>(leds + (OFFSET * 2), STRIP_LEN);
  LEDS.addLeds<WS2812, DATA_PIN4, RGB>(leds + (OFFSET * 3), STRIP_LEN);
}

void fadeall() {
  for (int i = 0; i < NUM_LEDS; i++) {
    leds[i].nscale8(250);
  }
}

void loop() {
  static uint8_t hue = 0;
  for (int i = 0; i < NUM_LEDS; i++) {
    leds[i] = CHSV(hue++, 255, 255);
    FastLED.show();
    // leds[i] = CRGB::Black;
    fadeall();
     delay(10);
  }

  for (int i = (NUM_LEDS) - 1; i >= 0; i--) {
    leds[i] = CHSV(hue++, 255, 255);
    FastLED.show();
    // leds[i] = CRGB::Black;
    fadeall();
    delay(10);
  }
}

This is a modified version of the Cylon example, to illustrate how it can be done
This compiles and should work, but i haven't tested it.

Still there must be something else that you are doing wrong initially .

If you have the strips in series, you will still have to power each strip. The symptoms that you describe can be a result of not doing so.

So power each strip (GND and 5V) from your power supply.
Further connect data out and GND of first strip to data in and GND of second strip and so on.

If your strips are longer than 60 leds, you will have to inject power into the strip after every 60 leds.

I have many small strips, and they arent designed to output a strong signal at the end of the strip. Thats why it will get corrupted after some segments. I'll deffenetly try this code, thanks alot!

That is not true, the signal gets send out at a logic level which is very close to Vcc and which is fully squared off again. A chip like the WS2811 or WS2812b don't provide as much signal strength as a 74HCTxx but is should suffice to cover a few meters thru wire if the wire is not to thick. Either you are not providing enough power to the last chip of a strip (power cable is too thin) or the data cable is to thick.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.