separated NeoPixels

As I understand it, Neopixels are individually loaded with their RGB configuration, then all turned on. I recall reading that they operate with a 400kb/sec. data stream. So suppose that I want to set groups of three Neopixels under separated lenses, with a total of six lenses about 4 feet apart. I believe electricity moves in wires at about 2/3 the speed of light. so I would need about 6 nsec. to move the data from one neopixel group to the next. The data rate would give me about 2500 nsec per bit, but I really know nothing about transmission lines and data speeds, reflections. etc.

Can any expert out there tell me if such an arrangement would work? If not, is there any way to slow down the data rate to the neopixel strand?

Thanks in advance for any thoughts.

OK, so many mistaken ideas, difficult to know where to start!

The NeoPixel library involves two steps. All the functions which set colours and such, load a RAM buffer in the Arduino with the respective bytes in the chain which must be sent to the pixels. Only when you then call the "strip.show()" function, that RAM buffer is sent at the full transfer speed, to the pixel chain.

Since it is a one-wire protocol with no synchronisation or "handshake", it is totally dependent on the clock speed, so that cannot be varied.

And since it is a one-wire protocol, only the timing sequence matters, so any slight delay from one part to the next, as long as it is symmetric, is irrelevant. You could feed it through a digital delay line and it would not matter.

If you have modest sections of wire, you could simply use 74HC14 chips to buffer the input and output of each pixel group to and from the intervening wire.

Ok so tell us what you really want to do.
The Arduino has 16MHz clock so nothing happens faster than that. The neopixels are also driven by PWM which is quite slow so they will flash at faster than the persistence of vision but not much faster unless they are full on.

You never have to consider the velocity of light in a conductor when working down at these frequencies. So you are getting very confused.

Dear Grumpy,

I thought a forum was where people went to look for help. Of course I am confused: that's why I asked the question. It isn't obvious that separating pixels into groups of three, up close, followed by 4 ft. gaps will work. I guess I'll just try it.

But really Grumpy, it is a shame to find so many of your answers on this forum which are

  1. irrelevant,
  2. self-serving,
  3. devoted to telling people they are dumb.

Perhaps you should sit down with your Boy Scout leader, religious leader, or psychiatrist and find out why you delight so much in telling people they are dumb. Maybe after that you could come back and devote your answers to providing help. If you do that, I will happily circulate a petition on the forum to allow you to change your handle to Happy Helpful Mike.

Good luck, pal.

Dear jordner,
I said you are getting confused, I did not say you were dumb. Paul__B told you:-

so many mistaken ideas, difficult to know where to start!

Yet you chose to attack me.
Your ideas are wrong, do you want telling gently? Do you need to be told you are differently correct?

it is a shame to find so many of your answers on this forum which are

  1. irrelevant,
  2. self-serving,
  3. devoted to telling people they are dumb.

Never told anyone they were dumb. Wrong yes but never dumb. Look over at the Kama ratings how do you get a rating like that by telling people they are dumb? You do it by actually helping people and telling them where there thinking is incorrect.

I thought a forum was where people went to look for help.

It is, but it is also for people who want learn. If you want to learn that is fine. If you want your confusion massaged then this is not the place for you.

You come here with a very confused message and I am asking you what you actually want to do. This is a well known phenomena called X-Y Problem. Go look it up.

I can help you but only if you are willing to swallow some of your arrogance and answer questions like what are you trying to do?

Grumpy_Mike:
Paul__B told you: ... Yet you chose to attack me.

Turns out I actually edited "confused" to "mistaken" whilst writing my response. :grinning:

jrdoner,
The times you are calculating with respect to the wire distance is not at all related to the data rate.
That time is latency which is not the same as data rate.
i.e. if you insert a longer wire it takes longer for the signal to initially reach the end of the wire but the data rate is still the same.

Think of someone playing a note on instrument. The pitch can be considered to be the data rate.
If you move the person/instrument to a spot further away from you and then have them play the note, it takes longer for the initial tone/signal to reach you but it will still be same pitch.

Same is true in this case.

The thing that is of concern is signal distortion on the wires over the distance. That will be your enemy.
The longer the wires, the more distortion you can get in the signal.
The voltages can vary and you can pick up noise.

--- bill

bperrybap:
The thing that is of concern is signal distortion on the wires over the distance. That will be your enemy.
The longer the wires, the more distortion you can get in the signal.
The voltages can vary and you can pick up noise.

Suppose that is what I said in reply #1. :grinning:

jrdoner:
As I understand it, Neopixels are individually loaded with their RGB configuration, then all turned on. I recall reading that they operate with a 400kb/sec. data stream.

The Adafruit NeoPixel library takes care of setting up and sending out the data stream. NeoPixels are based on WorldSemi WS2811, WS2812, or WS2812B. All of them operate on the 800kHz mode unless you are using the discrete WS2811 chip. I was able to run a strip from a wire 8 ft long from my Arduino to the first pixel with no problems. I have spaced them out by a foot between them also with no problem. You do need a filter capacitor on the power supply to help with noise. If you go to the Adafruit site, they have an Uber Guide to NeoPixels that might help you.

jrdoner:
So suppose that I want to set groups of three Neopixels under separated lenses, with a total of six lenses about 4 feet apart. Can any expert out there tell me if such an arrangement would work? If not, is there any way to slow down the data rate to the neopixel strand?

As far as transmission lag time due to distance of wire, the distances you gave there would be a negligible effect. If you want a delay between the groups you can control that through your software. For example you could light the first group. Wait for a 100 microseconds then light the next group, etc.

I would suggest using the StrandTest sketch with the NeoPixel library and try it out.

A few pixels may work just fine with no problems. If you want 3 pixels under each lens, then that would be 18 pixles with 4ft between each lens so 20ft total from the first pixel to the last? You might have a power drop at the end. Are you going to use a power supply, or batteries?

I have done several projects with different types of NeoPixels (WS2811, WS2812B). Do you know which type you have? Are they the in the SMD 5050 package, or 4 pin LED 5mm type, or the modules with an RGB LED with the chip on the board, or the LED strip type?

The bottom line is, without more details no one can give you any definite answer.

We are here to help. And we can only help when we have enough information on your concept to give you specific answers.

I hope that helps! :slight_smile:

If the wire is too long, the farthest pixel may be dimmer. You might need separate 5v power.

shawnlg:
If the wire is too long, the farthest pixel may be dimmer.

And the effect is more notable on the blue so it tends to go yellow.

I have experienced a similar phenomena with a project with 12 pixels running off of 4 AA batteries. On a couple of modes where all the pixels are lit the last 2 flicker a bit when the batteries drop in voltage. And this project the wires are only a few inches long and the total length is less than a 12 inches.

I was able to get a better result by powering the string at both ends. That made it work until the batteries get too low to power the LEDs, then the brightness dropped and the flickering (I think it was because the data got corrupted but I have never verified that) increased.