Sadly, not yet running FastLED, but as soon as raw AVR Arduino-less support is in I’ll be making a conversion.
It’s going to be a small LED pendant that has a bunch of animation modes that you can cycle though with a button press. As such, it needs to be small. So I made a custom PCB in Eagle and stuck a bunch of SMD components on it. SMD, as it turns out, was an adventure with a standard soldering iron.
It’s currently composed of:
Custom circular PCB 1" diameter, 2 layers
Adafruit neopixel “jewel” (7 x WS2812)
ATTiny85 microcontroller
SMD slide switch (power)
SMD momentary button (animation selector)
USB port (charging)
150 mAh LiPo battery
Adafruit LiPoly backpack (charges battery from USB)
ICSP header with offset holes (for chip programmer)
I’m going to stack all this together soon, and I think it’ll take about 10mm of vertical space, plus 5mm for a diffuser over the LEDs, perhaps some milk plastic. Still too tall though. I’m investigating moving a LiPo charging circuit onto the PCB, which should save on both space and cost.
If I get really fancy I can make pads for the SMD LEDs on the back, but then where do stick the battery since the switch + button controls are on the “front”.
It’s challenging working on such a tiny thing! The hardest was the USB jack, since the part I ordered has no tab that sticks out from underneath.
@Ashley_M_Kirchner_No That is fine if you are happy to build from within the Arduino “IDE”.
I have gotten FastLED working under pure AVR C++. It took some hacking (and I shortcutted some things, hardcoding the output pin amongst other things) but it did the trick for me. A working example which builds from Eclipse Luna is here: https://github.com/tullo-x86/bev-vend
I have been using FastLED on ATtiny85 for awhile now with no problems. I just finished a Christmas Star with 100 pixels and I got it running on my own DIY tiny board. I still use the Arduino IDE for development. Having the right Core and making sure you “Burn” the bootloader first on a new chip is key!
Oh absolutely, you can accomplish getting things working in several ways. For folks who are comfortable hacking the code and work in pure C++, great. It’s certainly possible (and I know @Daniel_Garcia has that on the burner somewhere too, removing the last bit of dependence to Arduino from the code.) Others are more familiar with using another board as an ISP programmer. And yet others prefer the convenience of just plugging it in and hitting Program. You would need the bootloader for the latter. In my case, I picked one setup and stuck with it. It allows me a wide range of options with different AVRs, and I don’t have to a) worry about needing a bootloader and therefore reclaim that space (we all know how small the Tiny family is), and b) not having to add the additional bits and pieces of hardware for a USB connection. It allows me to create a very small board that gets attached at the tip of the strip. I think one version, with an LDO onboard, was 10mm x 21mm, same with a button on board. With both it was a little bit larger, though not by much.
Well, so I feel a little dumb. I had previously played around with the Adafruit Trinket, and was all setup with the Arduino IDE tweaks to program it. So it turns out I can simply set the Arduino IDE to use a 8 MHz Trinket, set the programmer to USBTinyISP, and then hit upload via programmer it JUST WORKS!
My program only uses 2 pins, PB0 (LED data) and PB1 (button), which apparently map directly to Arduino pins 0 and 1. Handy.
I would love to be able to get this working via Makefile without Arduino eventually, but for now this is huge and I can now run FastLED without any hard to maintain hacks. I just sort of assumed it had to be harder than this for some reason.
Thanks all, for giving me the context I needed to figure that out