Using FastLED library with NeoPixels

Hi Guys,

I’m after some advice for my project… Details of my setup –

I have 12 concentric rings of the individual NeoPixel PCB’s each soldered into their own data pin to my Arduino UNO

The first ring has 84 NeoPixels and each subsequent ring has 6 less than the previous (84, 78, 72, 66 and so on)

I believe I need them as separate rings to achieve the “animation” that I’m after.

My problem is that when I try to declare each of my rings and number of LED’s in each ring in my code I very quickly run out of memory for Global Variables.

And yet when I run one of the FastLED>multiple example sketches and just say they all have the largest number of LEDs in them it will run, this won’t work as I need the animation to run at different speeds in each ring so that the smallest ring finishes at the same time as the largest ring.

I am very new to Arduino and have jumped in at the deep end with this one, any help would be greatly appreciated

Many thanks,
James Churches

James_sfx:
I believe I need them as separate rings to achieve the “animation” that I’m after.

You never strickly need it but it can make coding easier.

Alright, quick calculation. 84 leds for the first makes 18 on the last, correct? Makes 12 x (84 + 18) / 2 = 612 leds in total. That is a pretty large number. Each led has 3 8-bit colors so to store that you need 1836 bytes of memory. Now that’s a problem because a Uno only has 2kb = 2048 byes of memory which just leaves 212 bytes for all the rest which isn’t enough.

Now here it comes in handy they are connected to different pins. That means you can’t update all sets at once. Or to put it more positive for now, that means you can update a single ring without the need to update the other 11.

How you can use that? Just make a single store for the largest ring

CRGB leds[84];[/quote]
And use the same for all rings (and thus only use a more manageable 84 x 3 = 252 bytes). Just draw ring 1, show ring 1, draw ring 2, show ring 2 etc

See [url=https://github.com/FastLED/FastLED/wiki/Multiple-Controller-Examples#managing-your-own-output]Managing your own output[/url].
Downside to this is that you can't store the data for a ring in between because you reuse the same memory for all the rings. So every time you want to redraw a ring you have to redraw/recalculate ALL values of that ring from the ground up.

I need more guidence - I'm in well over my head on this project and we're on a very tight deadline, I can pay for any help given

This is kind of animation I need to achieve as seen on the wheel of the car in this video - - YouTube

So basicly a blue to white fade that runs round the rings - with the outter ring and the inner rings finishing at the same time.

Sorry, don’t have the time to take pick that up. But it seems simple enough. At least no heavy gradient calculations :slight_smile:

Just try and build it yourself but focus on ONE ring (the biggest) for now :). And just use the position of white-start, white-to-blue and blue-end as three parameters. For the inner rings they are just scaled versions of that.

Also, DON’T use delay().

If you have one circle I can help you with the other ones :slight_smile:

I am sure if you go to fastled.io and click through to their google group and explain your situation someone would write your code for free…