The Puck's current SPI.send4bit implementation isn't fast enough to send all the data without gaps (especially when the Bluetooth stack kicks in), so it was easier to use a specific function to handle it. I took the opportunity to make something that works the same across all devices.
Only gotcha is there's still some annoying bug where the first LED seems to be set to random colours. Other than that it all works great though.
In terms of voltages, an opto is probably great. You can connect it direct if you're running Neopixels off of 3.5-4v (so directly off a LiPo), but yeah - if you try and run them off 5v you'll hit problems, and the Puck's IO isn't 5v tolerant so you can't do the resistor + pulldown trick that you could on STM32 boards
Espruino is a JavaScript interpreter for low-power Microcontrollers. This site is both a support community for Espruino and a place to share what you are working on.
Unfortunately I'm yet to update the documentation - it's got a lot easier recently :)
As of 1v92, you can use
require("neopixel").write
: http://www.espruino.com/Reference#l_neopixel_writeThe Puck's current
SPI.send4bit
implementation isn't fast enough to send all the data without gaps (especially when the Bluetooth stack kicks in), so it was easier to use a specific function to handle it. I took the opportunity to make something that works the same across all devices.Only gotcha is there's still some annoying bug where the first LED seems to be set to random colours. Other than that it all works great though.
In terms of voltages, an opto is probably great. You can connect it direct if you're running Neopixels off of 3.5-4v (so directly off a LiPo), but yeah - if you try and run them off 5v you'll hit problems, and the Puck's IO isn't 5v tolerant so you can't do the resistor + pulldown trick that you could on STM32 boards