A few months ago, I hooked up a 12px ring of WS2812Bs to a ESP8266 NodeMCU 12E.
Ring ...................... NodeMCU
- -
Power............................5v
Din.............470r.............Dx
Gnd.............................Gnd
Super basic. Didn't work. Quick fix: add a diode.
Power.........<-diode............5v
Din.............470r.............Dx
Gnd.............................Gnd
Adding a diode worked.
I just read about 20 articles with far more complex solutions (sacrificial pixel, transistor/mosfet, diode between ground/supply, pullups/downs, power cycling the DSL modem, etc) but so far, nobody seems to be simply dropping the voltage from the supply using a diode.
Adafruit states:
"...The manufacturer recommends a minimum signal voltage of 70% of the NeoPixel voltage."
The diode I grabbed (with complete ignorance about diode differences) was a 1n4148 (again, complete ignorance) and had a 0.7V drop. So, even if we assume 5v @ Vin:
3.3V / 4.3V = 76.7%
My guess is that this is not typically recommended due to current limitations of diodes. For example, the 1n4148 has a max current of about 300mA (5 pixels at full RGB brightness).
But, apparently the 1n4001 has a 1A max current, and 1.1V forward voltage, which would give a 84% signal-power ratio and supply up to 16 RGB WS2812Bs at full brightness. I'm a total n00b when it comes to diodes, but from what I can tell, a 1n5400 has a 3A max output current and a 1V forward voltage. That's 48 pixels at full RGB brightness. Who runs their pixels at full RGB brightness anyway?
(note: at this point we're well beyond the current limitations of our little VIN pin if we're powering via the onboard USB port, so be smart and don't burn things)
Surely I'm getting carried away here. It can't be this easy. What am I missing?