NeoPixel LEDs (a.k.a WS2812 / SK6812 family) are a super-easy way to add addressable RGB lighting with only one GPIO. They're ubiquitous on microcontrollers, but some chips or single board computers (SBCs) don't have NeoPixel support due to the precision timing required to send data.
We often get folks asking how to get NeoPixels working on some OrangeBananaOnionRockchipAllWinner Pi type board, given we have our Blinka library that provides support for CircuitPython libraries including the NeoPixel library. But if there's no neopixel_write implementation written for that platform, it just won't work. And writing the NeoPixel-writer function is non-trivial on many chips: you really need fast GPIO and nanosecond-perfect timing.
A quick solution is this seesaw-based NeoDriver board here: send it the NeoPixel data you want to write over I2C and it will blit out the perfect pixel timing on the other side. We're using an ATtiny1616 so we have enough RAM to buffer a 512-pixel long strand. Now, to be fair - it's not super fast because we have to write each pixel over I2C, but with an 800KHz or 1MHz I2C clock and as long as you're not writing the whole strip at once, it's not so bad!
We add a 5V charge-pump, so even on 3V boards, you'll get a clean 5V signal. The pre-soldered terminal blocks and Stemma QT plugs make this a no-solder solution for adding NeoPixels easily to any device with I2C. The default I2C address is 0x60 but you can cut the bottom solder traces to change it to 0x60-0x67 inclusive.
Please note: To power NeoPixels, you'll need about 10-30mA per pixel of clean 5V DC power, provided on the terminal blocks, or you can just wire the 5V directly to the pixels if there are separate red and black power wires. There's no way the Stemma QT port can provide that much current so you can't just wire the pixels without an external power supply!
Text editor powered by tinymce.