Forum Rule: Always post complete source code & details to reproduce any issue!
Results 1 to 3 of 3

Thread: Teensy 3.2 + FastLED + WS2811_PORTD + Different lengths of LEDs

  1. #1
    Junior Member
    Join Date
    Mar 2019
    Posts
    5

    Teensy 3.2 + FastLED + WS2811_PORTD + Different lengths of LEDs

    Hi all,

    I'm looking to control 5 separate WS2811 strips of different lengths with parallel output to maximize performance. Is this possible? Pins 2, 5, 6, 7, 8, 14, 20, 21 on a Teensy 3.2 correspond to PORTD and I'd like to connect a 24-pixel NeoPixel ring on pin 2, a 60-pixel NeoPixel Ring on pin 5, and then a few different lengths of strips on 6, 7, 8.

    If I initialize FastLED with WS2811_PORTD, will it add them all sequentially into CRGB leds[] and I could manipulate them as such with a lookup table and offsets? Or if I initialize 5 separate instances of FastLED on just the pins I need, will it use the parallel output on those?

    Thanks for any insight.

    Alan

  2. #2
    Senior Member
    Join Date
    Feb 2016
    Location
    Australia
    Posts
    231
    Hi Alan.
    I'm looking to control 5 separate WS2811 strips of different lengths with parallel output to maximize performance. Is this possible?
    Yes. The fastest possible way, if using fastLed, will be to include pauls Octows2811.h and #define LED_TYPE OCTOWS2811. There is a fastled wiki somewhere that tells you the exact gains to be had.
    If I initialize FastLED with WS2811_PORTD, will it add them all sequentially into CRGB leds[] ...
    I don't know how that works. Let me know if you find out.
    and I could manipulate them as such with a lookup table and offsets?
    You will have to do just that if you use fastled with octows2811 led type.
    You need to think about the largest led strip that will be attached to one of your 8 channels, then define your CRGB array for 8 times that number.
    You have to addLeds like this:
    Code:
    LEDS.addLeds<LED_TYPE,COLOR_ORDER>(leds, NUM_LEDS_PER_STRIP);
    where NUM_LEDS_PER_STRIP needs to be the largest of the strips you intend to connect to any of the 8 channels.
    The channel to pin mapping and other good stuff is here here but it uses the pins you want.
    You will have to map your strips to the right offset in the CRGB array.
    So if your uisng NUM_LEDS_PER_STRIP of 60 then the first led on the first strip will be be leds[0] and the first led on the second strip will be leds[60].

    I think thats how this works.
    Apologies and correct me if any of this is wrong.
    Thanks.

  3. #3
    Junior Member
    Join Date
    Mar 2019
    Posts
    5
    Thanks, Gibbedy. I ordered some various LEDs today and will prototype next week. I'll report back with some results.

    Alan

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •