Project update 3 of 4
Welcome back! This is our second update during the campaign, and one to say the Pixie Chroma Arduino Library is nearing completion!
Because of this, the final features we’ve added for v1.0 are detailed below, and further updates will begin to resemble an educational series on how to get started with Pixies and fun things to use them with! Each of these "Tutorial" updates will also have current information and news regarding our hardware production when the campaign ends!
Alright, on to a few new tricks your Pixie Chromas learned this week!
(Dev Note: You may be surprised to learn this wasn’t added yet! I had it working before Shortcodes were added, but the technique I used at the time was difficult to adapt as-is, so scrolling was rewritten.)
Pixie Chroma can use dead-space outside of the display to build scrolling images, similar to an old NES! The next character to appear is rendered in an extra space outside of the displays and is then shifted into view!
Like original Pixies, there are three types of scrolling:
SMOOTH is a constant scroll, moving single pixels at a time.
SHIFT is similar to a SMOOTH scroll, but the text will momentarily "snap" into place for a moment at each display.
INSTANT doesn’t scroll at the pixel level, but instead by entire displays!
To use scrolling, only two functions are needed:
// Accepts SMOOTH, SHIFT, or INSTANT. (Default SMOOTH) Best used in setup(); pix.set_scroll_type( t_scroll_type type ); // Begins a blocking scroll of the message requested pix.scroll_message( char* message );
Getting fancy now! You can even decide how text is automatically aligned on each
show() call! Pixie Chroma will center or otherwise align text however you’d like!
pix.set_justification( t_justification justification, int16_t row = -1 )
justification can be
row is which row of the display these rules will apply on, or all rows if not specified.
set_justification() is best used in
(You’d be correct in saying that strings with odd number lengths can’t be perfectly centered. When an odd-length string is processed, it biases one character to the left.)
Yet another color tool at your disposal, you can preselect what color following
print() calls will render in! This is particularly useful for displays that mix specific colors in a single line, such as a stock ticker:
pix.clear(); // ...................... Clear the display buffer pix.print_color( CRGB::White ); // ... Set the printing color to white pix.print("AAPL: "); // .............. Print Apple's NYSE stock name pix.print_color( CRGB::Green ); // ... Set the printing color to green (or red, if our price fell!) pix.print(174.33); // ................ Print the floating-point value of the stock pix.print(" [:ARROW_UP:]"); // ....... Print an "up arrow" icon with a Shortcode pix.show(); // ....................... Send the updated image to the displays!
Our result would appear like this:
What can I say, it works! The only specific difference for Teensy users are the hardcoded Quad Mode pins:
As always, Chroma’s new code is 100% documented and open.
Our code is easy to use because no one has used Pixies more than we have. We’ve suffered through compilation errors and dead LEDs. We’ve built hundreds of past Pixies, and so far we’re going to need hundreds of Chromas as well. We’ve found all the best shortcuts for quick customization and simple code - so whether you’re a beginner or a pro, Pixie Chroma is exactly as complex as you need it to be. (We’ve never been prouder of a product than this!)
In our next update, we’ll discuss what your first Chromas will be like upon delivery and how we snuck bitmap data into short bits of text you can use!
Thank you all for the lovely and continued support. This campaign is going above and beyond our hopes and so has your help!