@Daniel_Garcia studies the animated LED matrix display at the Apple store in Burlington, Mass.
“WS2811’s”, he says.
@Daniel_Garcia studies the animated LED matrix display at the Apple store in Burlington, Mass.
“WS2811’s”, he says.
Yeah, I was staring at that too a few days ago at the local store …
What I want is the code …
One of my list items is a PixelPusher to play with … http://www.heroicrobotics.com/products/pixelpusher
The real treasure here is the physical construction of the matrix that almost hangs in the air.
As sometimes happens, what I want most from the Apple store is the window display.
And an iPad Air 
They took window blinds, made the slats thin and put LEDs on them? 
Actually the construction is a lot like how the SeeedStudio cubes are made inside: long skinny PCB boards with LEDs mounted on 'em. Either that or popsicle sticks.
Right, easy enough to replicate. But the code … coooooode …
I suspect it’s playing back precomputed frames from an SD card or something. The original animations were probably done by the marketing department in Flash, exported as video, converted to 32x32 frames, and poof. Frame rate wasn’t spectacular, but was ok. Maybe 20 FPS? Maaaaybe 30?
Right, and that’s what I’d like to figure out how to do. Getting video scaled down to the necessary pixels is easy. Getting it from video format to the strings is a whole different ball o’ wax.
Mini-blinds is a great,pre-made structure for hanging my own matrix!
@Ashley_M_Kirchner_No : There are several different tools for exporting the frames of a movie as a sequence of images (in various formats). I just successfully tested the OS X method described here: http://apple.stackexchange.com/questions/40339/is-there-an-app-that-will-convert-a-movie-to-an-image-sequence
Once the images were exported at full size and depth from QuickTime, I used GraphicConverter to do a batch resize and changed the format. GraphicConverter can save as BMP, or get this: as a series of C source files containing the hex bytes for the images! http://imgur.com/a8ak8Of (This shows the titanic 500px X 500px original before resizing, but the idea is the same.)
Yep, and a 16MHz AVR might have a bit of an issue trying to keep up with reading the data and pushing it out, at least for a respectable fps. PixelPusher does live capture and pushes the data out to the strings … ARM running at 96MHz.
Definitely true.
But for static images, I could conceivably take an image, extract the color information, save as bytes and push it back out to a multi-string setup. It would basically be the same as what I’m doing now for my POV system.
And by the way, if you have GiMP installed, and try to export as C-Source, you get a bunch of options: http://www.thekirchners.net/c-export.gif
You can also export as a header file …
And as a header, it looks like this:
static unsigned int width = 590;
static unsigned int height = 300;
/* Call this macro repeatedly. After each use, the pixel data can be extracted */
#define HEADER_PIXEL(data,pixel) {
pixel[0] = (((data[0] - 33) << 2) | ((data[1] - 33) >> 4));
pixel[1] = ((((data[1] - 33) & 0xF) << 4) | ((data[2] - 33) >> 2));
pixel[2] = ((((data[2] - 33) & 0x3) << 6) | ((data[3] - 33)));
data += 4;
}
static char header_data =
";1=?<QUG<Q1A=1)C:"!KQ-0#!%)"A%)"!%-!Q-0!!%.#!)1’!59(A-7’Q!2(154"
“‘1-0’Q1/‘Q%+‘Q))(19-%Q-’#!!!"A!!!Q!!!)!#!1&"A!!’!53AU=8Q996AI7"
"3QI3-!!%)Q-)$Q-&!!!#!!-%!1%""!!!%$!Q!##!!%$11#A%’&!=/&A%+(!!+”
“‘1%/&!.$A1."Q1,!Q)+!A!’"Q!)$1%,%Q.&A).&A).%Q1,$11*$!!')1-0/1U?”
etc.
etc.
etc.
GraphicConverter offers some similar options and clearly is just using the GIMP code.
Yup. GiMP is open source after all.
File contents looks different though …
/* GIMP RGB C-Source image dump (disco-ball-screen.c) */
static const struct {
guint width;
guint height;
guint bytes_per_pixel; /* 2:RGB16, 3:RGB, 4:RGBA /
guint8 pixel_data[590 * 300 * 3 + 1];
} gimp_image = {
590, 300, 3,
"i\7\36o\15&o\4\40q\2"d\20’\3\17\10\1\10\6\1\10\4\1\14\3\3\17\0\1\15\10"
“\2\20\30\5\30\36\3\26\33\0\21\35\5\23\31\3\17\33\4\16\33\1\12\33\2\10\35”
“\6\14\23\3\6\10\0\0\6\0\0\3\0\0\0\2\0\10\4\5\6\0\0\30\5\11J\15\34_\6\30V”
"\12\26K\12\22"“0\0\4#\3\10\17\3\5\0\0\2\0\3\4\1\1\1\4\0\0\0\1\3\3\0\2\10”