Christmas Tree

Both using 6 little “donuts” or one big “donut” would allow you to create animations.
You will almost certainly need to adapt your code to the way you wire it.

I can imagine an object oriented approach where you create an LedTriangle class which contains an array of integers representing the indexes of the leds that make up that triangle.

Perhapse this object has a method that takes in brightness and hue and sets all leds to that value. For more complex patterns, LedTriangle can take a mapping, or even a lambda function, which it interpolates onto the number of leds that make up the shape.

Maybe there is an array of these triangle objects composed within an object called tree. Tree might itself take a mapping, or you may prefer it have some kind of internal logic for proceedural animation.

I actually have no idea what your experience with code is, or what language you prefer, but i hope this gives you some ideas or, at least, some search terms to learn more. :grinning::grinning:

Using a single I/O has several implications.
Firstly, there is a delay in passing the signal along the length of LEDS. For short lengths the delay is imperceptible, but it can become very obvious at longer lengths. So you need to consider the visual impression that using long lengths for the data stream will have. In some cases it can be desirable, at other times not so much.

Secondly, when you prepare the data to send to the LEDS you need to consider the size of the memory array required - 24 bits for each pixel in the stream. With multiple data strings you would be able to re-use the same memory area for each string. If you have a single string of data then you need to consider whether the software can handle it. The physical memory is not an issue with the FireBeetle Board ESP32-E, and the ARDUINO IDE allows arrays that are large enough (~10,000 LEDS), but the NEOPixel library you select may not support arrays of the required size.

1 Like

Rather than reply to individual posts I’ll do a generic one.

You guys are the experts on this stuff. How would you do it, and what kinds of effects would you think would look good?

I can run the digital control circuit with the power circuit and create 10x different loops to avoid any lags or potential memory issues.

This isn’t a problem practically. But I’ve no idea how to then program it to do any kinds of effects. To be fair I didn’t really have an idea if it were once single string but I’d hoped the WLED library would have some good effects inbuilt.

I’m normally a plug it in and play and figure it out as I go kinda guy. However this project has a LOT riding on it. There’s a full event scheduled to unveil and light up the tree and carol’s and a band and food trucks and all the show. So here I am making sure that I have access to all the best knowledge available to me.

On that note I really do appreciate everything you’ve done so far. If I need to pay someone to write the code for me I’m more than happy to do so just to make sure everything goes smoothly.

I’ve never built a Giant Xmas Tree exactly like yours so I’m not an expert but…

  1. I’d run at least 4 digital IO circuits from the micro-controller. One single IO circuit is possible but cumbersome and not without compromise.
  2. If this is your first time doing procedural animations keep it simple. Pixels in a triangle can light up in unison. Perhaps each triangle has a dedicated colour. Maybe stick to red and green. It’s not the most out there animation but it’s still super effective. If you have time you can add detail.
  3. Use built in functions provided by the neopixel library. Try not to reinvent the wheel (I am guilty of this).
  4. Type “neopixel examples” into your search engine and read an article every so often. Someone has done this before and maybe there code is open source?

REMEMBER : BUILD THE MINIMUM VIABLE PRODUCT FIRST!

That’s my take. :slight_smile:

1 Like

Excellent advice. I use the minimum viable mindset for my projects. It’s akin to deadlines vs goals, this is needed vs this would be nice.

There are likely many open source examples that can be modified to work in this context. Big LED projects are nothing new.

1 Like

Ok team. Thanks again.

Status update.

The frame is made and installed. Stainless braided cable has been run in a spiral around the frame. (not present at time of attached photo below).

I have made up 40 or so assorted triangles made of aluminum profile and corflute plastic. The perimiters of said triangles are either 3m, 2m, or 1m, so there will be no need to cut the 1m side project LED strips.


I have ordered and received:

40 x 1m side project LED strips: (Adafruit NeoPixel LED Side Light Strip - Black 60 LED | Buy in Australia | ADA3636 | Core Electronics)

12 x 5m LED strip rolls: 5M RGB LED Strip - WS2812B 60 Per Meter - White Strip - Weatherproof | Buy in Australia | CE04854 | Core Electronics

3x 500w (5v 100A) power supplies: https://shop.admtech.com.au/MEAN-WELL-LRS-600-5-Enclosed-Power-Supply

2x ESP32e Firebeetle boards (1 is a spare in case something goes wrong or I need to it run what I am imagining). FireBeetle Board ESP32-E (Arduino Compatible) | Buy in Australia | DFR0654 | DFRobot | Core Electronics

This is what I would like to do. I appreciate your advice on if this will work.

Looking down from the top of the tree it looks like a pizza with six slices. There are three vertical levels making 18 individual segments.

I wish to treat each of the vertical slices (all three levels) as a single string. There will be an assortment of triangles from the larger ones at the bottom to smaller ones at the top to a max of 17m of LEDs. Each power supply will run two segments to a max of 35m. I will inject the power at each level so a maximum of six lineal metres will be powered by any one LED string of connected of power. However it will have power in parallel at each end of the 6m string.

My Questions. Is 17m of LED’s going to cause issues with the WLED library? Will the power supply work as envisioned? How do I code the app to know that (for example) LED 1-180 in string one will be a single triangle, then LED 181- 300 will be another triangle, then 301-360 etc.

Thanks again.

Mark

1 Like

I feel like ive answered this here.
Have you done much software before? :grinning:

1 Like

Thanks mate, I’ll go back and take a look.

I’ve done enough Arduino coding to have a vague enough idea of the infrastructure. But it’s mostly been downloading code, modify, then debug all the errors I’ve now introduced. Not much coding from scratch of my own.

Will start playing with it tomorrow. Just wanted to ask potential questions now to get a head-start on any lagtime.

2 Likes

No worries.
In Arduino IDE i’ve had more success using structs instead of classes to contruct custom objects.
I’m imagining something like

// Assumes popular FastLED lib

struct ledTree {
  // create a triangle that starts at the 300th led of the strip
  LedTri bottom_left_tri;
  bottom_left_tri.offset = 300;
  //create a triangle that starts at the 120th led of the stip
  LedTri middle_right_tri;
  middle_right_tri.offset = 120;
  // etc
}

struct LedTri {
  CRGB leds[180];
  int offset;
}
1 Like

Have run into an error I’m struggling with. Feel like I’m bashing my head against a wall.

I bought two esp32 fire beetle dev boards. I connected one of them up and flashed it with wled using the installer site. Have a few connection issues apparently because win11 but managed to resolve them and get it to work.

It ran and connected to the app but I couldn’t get the leds to light. Decided to go back and try something different and power it using a battery or regulated power supply instead of usb. What I found is that the board will now not power from the vcc (vin) pin. Got the second board out. Confirmed it powered fine from both the power supply and battery. Flashed it with the wled tool again. Now it too won’t power via anything but usb.

Spent an hour trying to figure out how to factory reset it and check if that enabled it to be powered properly but couldn’t determine that process.

Decided to back shelf that for a while and see if I can get it working via usb power. Still can’t get the leds to respond to the wled promptings.

Decided to make this post and while waiting for help move on to led strip assembly. Which leads to me next question.

If I am running 6 strings of LEDs off the dev board. Does the signal (Din) channel need to be connected in series? Ie. do I need to solder connections to the cut end of the strip or can you do it in parallel? Same question for power. Can I power each through one end? I’m assuming one of the cut halves will need to have connections added because the strip is unidirectional?


Hey @Mark276201,

Sorry to hear this project is giving you trouble. When you first install WLED to an ESP32 it should light up the first few LEDs in the strip just to give you an indication it is working (first 30 LEDs in orange from memory).

Do you have any LEDs lighting up at all? If you don’t it’s likely to be a wiring/installation issue.

Hi Mark.
Are you feeding the data in the correct direction. On the LED strip there will be a little arrow marked along the data line indicating the direction of the data signal.
The power and data can be separate entities. The only thing here is both ground connections have to be connected to have a ground return for the data signal. The signal ground for the ESP32 device has to be connected here too.

Depends what you want each “string” to do. If you want to have each string do its own thing you will need to use 6 IO pins. If they are all going to behave in the same pattern you can connect them in parallel possibly to one pin. I don’t know if the ESP32 will handle 6 data lines in parallel or you might need some sort of buffer amp.
Cheers Bob
Note:
The ESP32 power supply and the LED power supply don’t have to be the same. You can power the ESP32 via USB until you get something working then worry about external power later. You can power your LEDs from one of your big 5V supplies separately from the ESP32 power.

I installed it without the LED strip connected, so I’m unsure if that would have happened.

I will keep trying later today.

I’ve got the direction right. On both of the two different strips I have, one has an arrow, the other has Di and Do for in and out.

I think I’ll daisy chain and string the Data line together. It will be nice to be able to do things with all the chain together. However with the power, can I just power it from one end? Does it matter which end the power comes from? Is the power directional or just the data? The longest stretch is 3m.

Thanks.

Hi Mark

We have been over this question so many times I have lost count.
You can do this if you want to but you will probably get progressive dimming as the available voltage reduces. Go for your life.

I think Jeff raised the question of too many LEDs in a single string. Something about a time problem. Read backwards and you will find it.
Cheers Bob

1 Like

Hi Mark
I may have miss read some of your post.
It is still unclear whether you want to string all the LED strips in series, both power and data.

No

Already answered that

Just the data

This is the confusing bit. If the longest anticipated power length is 3m you should be OK just powering from 1 end. I have 5m length 150 LEDs @ 30 LEDS/metre. with no noticeable change in brightness. Your strips are 60 LEDs/metre which should be OK @ 180 LEDs
If this is the case you can connect individual strips in parallel to one power supply up to what is a comfortable load for each power supply. Leave some “head room”. Do not load to anywhere near the maximum as you may at some stage have some unexpected peaks which could cause problems.
If you do notice any intensity variation on the longer strips you can run heavier power wires (both positive and negative) to the ends of these strips and power from both ends.

As stated before (on a few occasions) connect each strip or group of strips to their own power supply. DO NOT connect power supplies together in parallel. You will just have to be careful and make sure this does not happen, accidentally or otherwise. This has also been dealt with earlier. I mention it again to stress the importance, Particularly the bit about being careful.
Cheers Bob

1 Like

hmm this one’s a bit of a red flag for me…
oddly I’ve done some large LED lighting on giant puppets -
definitely do a strip test 1st to check that the data is running
then test both strips independently


if they pass the test then try chaining them together…

here’s where it may be falling apart too … different strips you said one has an arrow on has din in and out this MAy be an indication they are different in some way… and may or may not be able to communicate or be using the same protocols.

I ended up in a world of pain chaining different strips together, sometimes they are using different protocols ( ws2812/ws3812b or RGB vs other ) I could never really isolate why I was having issues… but it was definitely harder to chain LED strips that are not the same so if you can get one working then buy more of that exact type.

2 Likes