So... I'm willing to build the transistor based circuit but unfortunately I'm not experienced enough to know how to proceed. If you pointed me in the right direction I'll buy the necessary parts and build it. I wouldn't know where to begin in finding the right transistor though. Your help would be greatly appreciated plus the design change would hopefully improve the Teensy Saber project to now fully support the SK6812 based strips (which seem to be widely available compared to the WS2813A/B strips).
I found the following which looks like it addresses the exact issue I'm having with my SK6812 (WS2812 compatible) LED strips...
ttp://hackaday.com/2017/01/20/cheating-at-5v-ws2812-control-to-use-a-3-3v-data-line/
The only thing I would need your help with is identifying the appropriate signal diode to use. It's been years since I've messed with electronics at this level and at my age I can't remember half of what I learned 25+ years ago.
This hack seems drops the input voltage of the first LED to 4.3 volt. However, assuming that you drive your strip directly from the battery, your strip will already be at 4.2 volts (or lower). (You're not feeding the LED strips 5V, right?)
Unfortunately, the SK6812 datasheet doesn't actually specify what happens if you feed it less than 5V. So it's not clear if that is actually the problem or not. :(
The first thing to do is probably to buy one of these:
74AHCT125 - Quad Level-Shifter (3V to 5V) [74AHCT125] ID: 1787 - .50 :and then try it out on a breadboard to make sure that level shifting actually fixes your problem.
Assuming that level shifting fixes the problem, there are a number of possible solutions to try:
1. If you have room for it, the level shifter above is a quick and easy solution.
2. It may be possble to do level shifting with a simple resistor and some code hackery. The idea is to hook the data out pin up to a resistor which is hooked up to 5V, then hack the code so that instead of using 3.3 volt for HIGH output, it just switches the pin to input mode instead. That puts the pin in high impedance mode and the pull-up resistor would win. Since the teensy is 5v-tolerant, it should just work.
3. It should be possible to use a PEX to drive the data pin. There are two issues: 1, it will invert the signal (Which is easy to fix in the code) and 2. I'm not entirely sure that the PEX will switch fast enough to not mess up the signal.
4. If the level shifter from (1) is too big, probably the best thing to do is to buy a
SOT-23 breakout board, and then put a
SN74LV1T125 on it. Hopefully this will be small enough to fit. (This might be something that I could incorporate into the V2 design in the future, if this turns out to be a common problem.)