Bare metal BlinkyTile/LightBuddy controller programming
The firmware for the BlinkyTile controller works 'bare metal' on the microcontroller, rather than using the Arduino interface. This allows us to use a much more powerful chip (same as the Teensy), however the downside is that it's a little trickier to write programs for it directly. For those that want to check it out, the code is here:
https://github.com/Blinkinlabs/BlinkyTile/tree/master/firmware
There's a quick readme file there, and I've got some extra boards for anyone wants to help improve the instructions :-).
https://github.com/Blinkinlabs/BlinkyTile/tree/master/firmware
There's a quick readme file there, and I've got some extra boards for anyone wants to help improve the instructions :-).
Comments
What kind of LEDS are in the tiles? WS2812? I assume I can just use a Teensy instead of the BlinkyTile controller?
I'm pretty sure that it's against the Teensyduino code license to make it work with Arduino though, unfortunately- Paul puts a lot of hard work into doing development on the Teensy, and wants to protect that use case. It might be ok for us to set it up since we have a pretty specific purpose board, though. It's on my list to ask about that, since I made a lot of these controllers ;-).
It's totally fine to use a regular Teensy (or Arduino, or blinkytape controller!) with the tiles, though you might need to buffer the outputs. The LEDs seem to work better with 5v signals than 3.3V. The LEDs are actually WS2822S, which are a new type that speak DMX and are addressed in parallel rather than serial.
I got the ColorPalette example by Mark Kriegsman running, it looks fantastic! https://github.com/pup05/BlinkyTileFastLED
If I add some more documentation to my project, would that earn me one of those extra boards? I'd love to order another one for a project idea, but alas the store is empty...
The only real limitation I've found so far is microprocessor support for the DmxSimple library. I tried using an Adafruit Gemma, but it's not supported. I assume I'd have the same problem with the Trinket, but maybe a Flora or Trinket Pro would work. I'm just looking for a small, inexpensive controller that's easy to program over USB (and maybe power with a LiPo pack).
I was kind of surprised that I didn't need to connect the address line to anything. I assumed it worked like the clock line on APA102s. There's no mention of it whatsoever in the FastLED DMX code. I assume it's just needed to change the LEDs addresses?
Yeah, DmxSimple has been the hangup; until recently it didn't work with the Atmega32u4 either. It should be pretty quick to make it work on those systems though, it's mainly just defining the interrupt setup for each platform.
Right, the Address line is just for programming the tile addresses; there's support for it built into the LightBuddy, however we need to add documentation about the process.
The LightBuddy firmware (which is open source!) should be updated soon to support other LED types, including the APA102.
https://github.com/pup05/BlinkyTileFastLED
Here's a video of it in action: https://www.youtube.com/edit?video_id=xRlQ6_sIits
The code is in the same repo: https://github.com/pup05/BlinkyTileFastLED
I'll follow up with more details soon.
Naive question:
I've been reading the discussion above about LightBuddy, Teensy and Fast LED and Arduino, and recently ran across this, regarding the Teensy
https://www.pjrc.com/teensy/tutorial.html
It describes a process for setting up the Arduino IDE to work with Teensy. Does that mean that the LightBuddy can be treated as a Teensy and programmed in Arduino that way? If so what kind of Teensy is it - 2.0, 3.2, 3.6, LC?
Unfortunately, the LightBuddy isn't a Teensy- it uses a similar processor, and the software is forked from an earlier Teensy version), but it's not directly compatible.