Hello everyone, I have searched for the answer to my problem but haven't found any sadly. Basically I am using my Arduino UNO to controll a WS2815 12v led strip which is 12.5m long with about 750 leds.
This is the schematic of my connection. Have in mind that used strip in the picture is 5v and has only 1 data line. Mine has 2 and I have made a short between them so both of the channels get the same data. Also I am using power injection on both ends of the strip so power drop is not an issue. My problem is whenever I use more than 622 leds in the code it doesn't run at all. Have in mind that this code only uses 2% of RAM and 8% of storage. I'm not that good with addresses, I understand how they work as I'm studying to become an electrical engineer so programming stuff isn't all that new for me. I have put the used code down below.
All libraries for addressable LED uses 24bits color scheme and preallocates buffer as 3 bytes for each pixel, so for Uno limits the strip length to 600-620 leds
The only way to increase number of leds - use decreased color depth. But better to choose the board with more RAM.
Basically the answer has been given. Neopixel allocates a buffer on the heap which is not part of the calculated RAM use. Also any local variables are not included in this calculation. For you current purpose where you are setting all leds to the same color, i don't see why that matters, you can simply connect the output pin to 2 strips. If you decide that you do want to make patterns, you will have to create those normally in a buffer, so even working without a complete buffer will have complications. The obvious solution is to use a board with more RAM, and an ESP is the board i would chose.
That said, if you go into neopixel.ccp and find the show() function, you will find in between aal those board specific bit of code the part that is responsible for the timing. If you send the signal 1 pixel at a time, all you need to do is make sure that you send the next pixel within the 50us reset time and will be forwarded to the next pixel. (i Saw this implemented on an ATtiny13 by This guy and i have used that method successfully on an ATtiny13 as well) I don't know of any library that does it like this, but i guess there might be. Again creating the whole output on the fly has other complications and a board with more RAM is a better option
Many, but not all, Arduino boards with more memory RAM than Uno run at 3.3V not 5V. This can be a problem when using ws2812 led strips because they do not always work with a 3.3V data signal. You may be lucky and find that your strips work well with 3.3V data. But if not, you may need to shift the voltage of the data signal from 3.3V to 5V. Many level shifters sold cheaply on eBay do not work well for this purpose because they are the bi-directional type designed for i²c bus level shifting. Instead of this type, I would suggest a 74hct14 or 74hc14 chip.
You could try without a level shifter to begin. If you get unreliable patterns, patterns that flicker all the time or flicker when you touch the board, or stop flickering when you touch the board, you need that level shifter chip.
Hmmm... I don't know... It's an interesting question.
LM358 has a "Gain-bandwidth product" of about 1MHz, which is only a little higher than the 800KHz signal used by ws2812. But only a small gain is needed to boost 3.3V to 5V, so maybe.... This is really beyond my level of op-amp knowledge!