Hello!
I am experimenting with buying pre-made LED bars from an overseas manufacturer called ShowJockey. The idea is that it's cheaper to buy these assembled than build my own locally by sourcing parts, soldering, assembly, etc.. The product I ordered is similar to this product.
It's a 1 meter long c-channel construction with 60 LED/m using 12v ws2815 IC LEDs, controlled via SPI. Build quality looks good but upon initial tests with FastLED I am noticing the first LED is referenced at offset 1, instead of offset 0. The last LED is referenced at offset 60, instead of offset 59.
Example code and output would be as follows:
Example 1
#define NUM_LEDS 60
leds[0] = CRGB(255, 255, 255);
leds[59] = CRGB(255, 255, 255);
Output: Only the second last LED lights up.
Example 2
#define NUM_LEDS 61
leds[1] = CRGB(255, 255, 255);
leds[60] = CRGB(255, 255, 255);
Output: The first and the last LED light up.
The manufacturer says their LED addresses start at 1. I have never seen this before in any strings I've ordered (I've worked with 2811, 2812b, 2815 from BTF), but this is an LED tube with a hard board behind the LEDs, it's not a string mounted in a c-channel.
The issue that presents itself is when I put these in sequence there is always going to be a +1 offset for each bar. So if I had 2 of these, I would need to add 122 Pixels, and do a +1 offset for every 60 LEDs for them to map correctly. This seems a little.. odd?
My Question
Is this normal and I am just now being exposed to this? Or is this some odd thing? Do people work with these +1 offsets and account for this with mapping in their code (adding a +1 every 60 pixels)?
Not sure if I should ask the manufacturer if they can change the offset to 0, and not sure why there is even an offset to begin with.
Any insights are appreciated.