Trigger Wave Visualization - WS2812B LED Strips

Artist here. I have been tinkering with the Arduino for a few weeks, along with trying to self-learn the language. I am having a hard time with my first proper project and any advice would be greatly appreciated.

I am trying to light up three individually addressable LED strips (WS2812B) on the same board, with the same timed lighting scheme. I want the lights to turn on individually, starting at the board and continually turning on without the previous LED turning off. Once the strip is completely lit, I want the whole bit to loop again. It is not meant to be a very smooth flow, but I would like each LED to turn on two seconds after the previous LED has turned on.

I hope this makes sense. I have been looking at this tutorial for help but I am not sure if it is where I should focus my attention - Beginners Guide to Individually Addressable RGB LED Strips – The Hook Up

Looking at the link You provided I think it can be good to use. Skip all the glamour and focus on basic functions. There is some code, down a bit, showing a little.

However, start playing with simple coding exercies to get warm. A very useful link ir this: Serial.available() - Arduino Reference
I use it frequently myself.

omossuto:
I am trying to light up three individually addressable LED strips (WS2812B) on the same board, with the same timed lighting scheme.

Easiest: connect the data line of all three strips to the same Arduino output. Then all strips will follow the same commands from the Arduino.

I've never used those things but I have a basic understanding of how they work -

[u]Adafruit[/u] is another good source of information.

As you may know, there is a programming library for these strips with functions that do all of the "hard stuff" for you, so you don't have to write all of the code from scratch and you don't have to worry about the tricky-timing of the data transmission.

I want the lights to turn on individually, starting at the board and continually turning on without the previous LED turning off.

Yes, that's what "individually addressable" means.

However, the chips/LEDs are daisy chained so if you want to write to the last LED the data has to pass-through all of the other LEDs first. That means you have to address and re-write to all of the LEDs every time you change one LED. That also generally means that you need to store the "state" of all LEDs in memory.

I actually don't know if the LEDs "flash" for a few microseconds as it passes-through but if it does it's too fast to see so it's not a problem.

along with trying to self-learn the language.

Have you done any programming before?

If you've programmed before the "core language" is pretty easy. If not, the hard part is learning "how to program" and "what programming is all about". Most programming books & tutorials just cover the language without giving you the "big picture".

Since you're probably not going to take a programing class, you'll have to "read between the lines" to figure that out on your own. (I can give you a few tips if you want.) The good news is, since the language is pretty-easy the Arduino is a great way to get started with programming!

When you start using libraries it can get more involved, even though the libraries are saving you work & complexity.

Any electronics experience?

With NeoPixels (WS2812B) the electronics/wiring is also pretty easy. The first thing you learn if you take an electronics class is [u]Ohm's Law[/u] which describes the relationship between voltage, current (Amps or milliamps), and resistance (Ohms). This is a law-of-nature with man-made units.

You should also know that power (Watts) is calculated as Voltage x Current.

In words, Ohm's Law says that higher voltage gives you higher current, and resistance is "the resistance to current flow", so more resistance means less current.

In "most situations" the voltage is fixed and the current depends on the resistance of the load. For example, here in the U.S. the household voltage is 120VAC. With nothing plugged-in (or with everything turned-off) no current flows. If you plug-in a 100W light bulb you "draw" a little less than 1 Amp. If you plug-in a 1000W hair drier that's almost 10A and if you plug-in too much stuff you'll draw excess current and blow a circuit breaker. (In Europe with 240V you have half the current for the same wattage, and if you plug-in an American light bulb you'll burn-out the bulb real fast!)

We don't always know the resistance and it can depend on things like how many LEDs are on or if a motor is running, etc., but it's important to understand that the current depends on the "load".

That means you need a power supply of "exactly" 5V for the LEDs and it can be rated for more current than you actually need, and in fact it's good-practice to leave some safety margin. However, with some NeoPixel applications where you won't have all of the LEDs full-brightness-white at the same time, you can "cut it closer".

P.S.
I'm "thinking about" an addressable LED project and I'll probably use what Adafruit calls [u]DotStars[/u] instead of NeoPixels. DotStars require a clock connection in addition to the data connection. That makes the timing less critical and I think it will make the rest of my programming simpler and I probably won't need a library but I haven't full-studied it yet.