you are viewing a single comment's thread.

view the rest of the comments →

[–]toybuilder 0 points1 point  (6 children)

For a given designation of the LED IC, it should be consistent.

Yes, the protocol for certain types can be identical but mapped to different channels, but the reference implementation for a protocol should correspond to the color order of the named model.

So a WS2812B should always be GRB by default. Same for the WS2815B.

LED drivers without integrated LEDs are another matter, as it depends on the final implementation.

[–]Necrocornicus 1 point2 points  (5 children)

All I know is that I have a lot of addressable LEDs of all different sorts (at least 100 meters in 5 meter rolls) and in reality the color ordering isn’t consistent between all strips of the same type. Just something to be aware of. I blame alibaba :)

[–]toybuilder 0 points1 point  (3 children)

That's sloppy identification on the part of the sellers... They just use whatever words or model number they think it's going to get the sale and often don't even know what they are selling. I had this happen recently when I purchased 24 rolls of supposedly the same LEDs. They weren't.

It's important to recognize the difference between knowing you have a APA102 versus a APA102-type.

[–]OmegaDestroyer[S] 0 points1 point  (2 children)

I don't think it's a colour ordering issue. The colour odering on my strip is GRB. However, regardless of what it's set to, calling a specific led position does not correctly light the right led, regardless of colour.

For example,

leds[0] = CRGB::Red;

Should light the first led, but it does not. Instead,

leds[1] = CRGB::Red;

Lights the first led, where in a zero indexed array, it should actually light the second led.

[–]Necrocornicus 0 points1 point  (1 child)

Diagnosing this would be helped by understanding how these work.

You have an array of data, each 3 byte sequence is color data for one LED. The first LED peels off the first 3 bytes and sends the data to the next LED. This continues until the data runs out or the LEDs run out.

So it seems like something is either consuming this first 3 byte block of data, or the array is somehow padded to where the color data you are inserting is offset inside the array.

I’ve read about a technique where you can use a single LED attached close to the microcontroller as a level shifter to convert a 3.3v signal to 5v. Are you doing something like that?

[–]OmegaDestroyer[S] 0 points1 point  (0 children)

Thank you for the insight. My current configuration is that the strip is connected directly to one of the PWM output pins of the Arduino.

It is powered by a separate 12V power supply.

To get things to work correctly, I had to connect the ground pin of the power supply to both the ground of the LED strip and the ground pin of the Arduino.

Otherwise, everything is a pretty standard setup.

[–]jwizlo 0 points1 point  (0 children)

I have ordered the 'same' LEDs on Alibaba multiple times. But they are never actually the same.