Instructables
Picture of PixelBrite
vlcsnap-2013-07-15-19h21m55s167 (Small).png
IMGP0561 (Small).JPG
IMGP0559 (Small).JPG
vlcsnap-2013-07-15-18h58m43s246 (Small).png
IMGP0554 (Small).JPG
IMGP0558 (Small).JPG
IMGP0208 (Small).JPG
IMG_0023 (Small).JPG
vlcsnap-2013-07-15-18h56m16s110 (Small).png
IMGP0355 (Small).JPG
IMGP0349 (Small).JPG
IMGP0348 (Small).JPG
IMGP0345 (Small).JPG
IMGP0341 (Small).JPG
quad layout (0) (Small).jpg
IMGP0340 (Small).JPG
vlcsnap-2013-07-15-19h23m17s224 (Small).png
IMGP0333 (Small).JPG
vlcsnap-2013-07-15-18h58m08s197 (Small).png
vlcsnap-2013-07-15-18h59m21s204 (Small).png
IMGP0557 (Small).JPG
vlcsnap-2013-07-15-18h59m38s113 (Small).png
vlcsnap-2013-07-15-19h01m53s193 (Small).png
vlcsnap-2013-07-15-19h01m59s247 (Small).png
vlcsnap-2013-07-15-19h04m04s196 (Small).png
vlcsnap-2013-07-15-19h09m26s105 (Small).png
vlcsnap-2013-07-15-19h10m40s63 (Small).png
vlcsnap-2013-07-15-19h14m10s111 (Small).png
vlcsnap-2013-07-15-19h15m43s27 (Small).png
vlcsnap-2013-07-15-19h17m41s156 (Small).png
vlcsnap-2013-07-15-19h18m47s54 (Small).png
vlcsnap-2013-07-15-19h21m00s131 (Small).png
vlcsnap-2013-07-15-19h22m28s243 (Small).png
vlcsnap-2013-07-15-19h24m18s46 (Small).png
vlcsnap-2013-07-15-19h12m58s165 (Small).png
vlcsnap-2013-07-15-19h19m08s9 (Small).png
vlcsnap-2013-07-15-19h19m35s247 (Small).png
IMAG0828-1 (Small).jpg
IMGP0472 (Small).JPG
IMG_0190 (Small).JPG
IMGP0224 (Small).JPG
IMGP0223 (Small).JPG
IMGP0185 (Small).JPG
IMGP0181 (Small).JPG
IMGP0175 (Small).JPG
IMGP0165 (Small).JPG
IGB (1) (Small).jpg
NYE (1) (Small).jpg
IMG_0094 (Small).JPG
early setup 2 (2) (Small).jpg
I originally started this project because I wanted to recreate the scene in the movie the Close Encounters of the Third Kind where the humans are communicating with the Mothership via a huge color organ. So I glued various bits of software together and made some prototypes and before I knew it I was talking with the Mothership with my own color organ!

I was intrigued by the potential of the color organ, but without about 20 more years of piano lessons I would never reach that maximum potential. I wanted something more programmable, a general instrument, not a musical instrument thought, a LED instrument. I wanted something I could play, just like the idea of the color organ but with more complex patterns and animations and simpler controls. I wanted a way to add texture, color, and motion to music. I wanted a light show I could perform with, pixels to play with, a real-time playable instrument that could accompany a musical performance. I wanted it portable, scalable, easy to setup, easy to play, and so I built four PixelBrites, setup a couple of stage light trip-pods and plugged in my MIDI controller and laptop and I became the light show. Fun times were had by all!

But I knew I couldn't be an overly protective parent and hover above my progeny all the time,  I wanted the PixelBrite to act as a standalone light. I wanted to remove myself and the computer and simplify the experience. I wanted a disco coffee table and a minimalist light sculpture. I wanted to hang it on my wall and let it become part of the background. I wanted a night light, a party light, and a mood light. So I created a way to easily make animations and patterns and added a SD card slot to stream patterns without a computer. Now when I get home I get low-res ambiance without even opening my laptop.

If you ever had a Light-Brite when you were a kid then you might remember the experience of playing with light. PixelBrite is my digital version of the Light-Brite. It’s a plug-n-play light show, it’s a minimalist light sculpture, it’s a conversation starter and it’s a piece of wall décor. It’s a futuristic Ikea coffee table and a Daft Punk disco light. It’s bright, dark and colorful. It’s digital stained-glass. A center-piece or a perimeter-piece, it’s portable, playable and programmable.


Welcome to my Instructable, I hope you enjoy.
-LeoneLabs
 
Remove these adsRemove these ads by Signing Up
1-40 of 91Next »
mrhyndress made it!29 days ago

I recently made this, hooked an arduino to a matrix of 150 LEDS. Made it into a coffee table. I enhanced the project with a spectrum shield, so instead of using a SD card for preloaded content I can stream music for a visualizer. To further enhance the project I connected a Raspberry Pi via i2c and made a web app running on the Pi to change the color of the lights. This tutorial is an amazing starting point to create your own ideas. Thank you for it!

10337757_664569620257955_6274311329263378258_n.jpg10565749_691683367546580_1197162919_n.jpg10569209_691683380879912_1857542310_n.jpg10572804_691683230879927_659904421_n.jpgScreen Shot 2014-07-24 at 9.13.12 AM.png
Dark Bottle1 month ago

That is really Effing Cool.

anon_sriprom2 months ago
Cbreezy3 months ago

Hey all, thinking of making this, The wiring seems a bit complicated , wondering if I do get suck if someone would be able to help me through Skype or something. Just want to make sure that if I do make this that I have a contact that will be able to help me XD

Thanks.

ctopp4 months ago

Got a question about the acrylic. I'm not getting really any transparency through the acrylic. I have the ACRYLITE® LED (P95), sheet, Black/White 9H04 SC mounted with the matte side facing the LEDs and the glossy side facing out. But I get almost no light pass through.

ctopp ctopp4 months ago

I actually am really getting zero light. I've held it up to multiple light sources in the dark and I get zero transmission. Is this truly the acrylic you used? From the picture it looks more like something with much more transparency.

hockeyman2715 months ago

Is there anyway you could briefly explain how exactly the "Streaming" portion of your code works? As far as i can decipher the LEDStream function simply stores the data to the SD card, it doesnt actually stream to the pixelbrite? i havnt finished the construction of my own version yet so i havnt been able to verify this yet... Thanks!

wpelletier6 months ago

In the Arduino Sketch, it says in the beginning it is compatible with PCB v2. Were can I find the layout for the second version of the PCB? I'm asking because running the sketch with the v1 I have downloaded here does not seem to work properly.

Thanks,

WP

In fact, what happens is, when I power up the PB, it shows briefly: Full Red, then Full Green, then Full Blue. I assume this is the Rainbow in the opening setup. But then, it turns black and the full white rather than just black. Few pixels don't even light up in the full white. Also, when I try to switch between SD and USB with the momentary switch, it doesn't do anything...

I changes the NUMpixels to 49 since I'm using 7x7. I would like to put some animations on an SD card and stream it. Can you explain to me the process ?

alahamm6 months ago

Very nice job! Can this work with an Arduino UNO and WS2812 LEDs?

antiReady7 months ago

So I decided to give this a try and test it out on a breadboard first. I edited the fritzing file of your PCB and arranged everything in the breadboard view so it should (!) work when I put it together. I'd apprechiate it if somebody cold check the breadboard layout though .. before I accidentally fry something :) - might be even helpfull for other people who want to give this a try, too. (Its been ~10 years since I last fiddled with a breadboard but this project seems worth the trouble)
Updated Fritzing file with my breadboard attempt: http://www.upl.co/upload/w5Jb9Wg2B

Also, while going through your fritzing files I noticed that two wires in the schematic view were not actually connected even though they visually appear to be (Pin5 [D0] with the screw terminal/resistor and a wire from the molex connector to the switch)

Fridoku7 months ago

I love your Project gonna build it for school soon :D

But I have a Question: Why isn't the SD Adapter connected to the standard SD Pins on the Teensy and where are your custom Pins declared?

LeoneLabs (author)  Fridoku7 months ago

The "standard SD Pins" are hardware SPI pins within the microcontroller. I decided to use them instead for the SPI-like interface to the WS2801 LED pixels rather than the SD card. I thought this might help performance but I've never confirmed it. The custom pinout is declared in the sdfatconfig.h file, where the pin numbers can be changed under the "software spi" section.

wpelletier8 months ago
I have a hard time with the programming stuff. I have never done any before and I taught that I could just download the libraries and the code and simply run it into the Teensy 2.0, but it seems like the codes have some errors...

In the LeoneLabs_PixelBrite_v1 code, it says " 'istream' has not been declared."

How can I simply run the codes all together into the Teensy? I have all the libraries (SDfat and WS2801) in the Arduino libraries folder, but there is always those errors appearing in the software... I just want it to run like it did for you... Please guide me here.

Thank you,

William
LeoneLabs (author)  wpelletier8 months ago
istream is used in the SDFat library. You may want to try reinstalling that library or try a slightly older version. I believe I built the PixelBrite software with sdfatlib20120709 and Arduino 1.01. What version of SdFat are you using? Also what version of Arduino? Also are you able to load samples on the Teensy using the Teensyduino software from PJRC

MLeone
yalter18 months ago
lovely project.
what's the grid of the PixelBrite circa2010 made of? it looks semi transparent
The_Fonz9 months ago
Great project! You mentioned a madrix script that you wrote to stream data to the pixelbrite via your software. How does it work?
jburdett9 months ago
Is there a way to swap the RGB data to be used with strips with BGR ordering? I was able to modify the ws2801.h library file but that only fixes the SD stream. Is there anywhere in the pixel pal source files that can alter the ordering for the usb stream?
jburdett9 months ago
Did you find the acrylic fit perfectly for you or did you have to do any adjustments? I'm finding that with the tri-corner brackets all snug and flush with the rails the acrylic won't slip in. Looks like I need to shave a mm or two off. Can I run this stuff through the table saw?
tri-corner gap.JPG
cocotuning9 months ago
I progress in the project, but I can't display pictures from the SD card.
The main problme come with this line in SDstream :
myFile.read(pixelbuf,numPixels*NCOLORS)

How does it works, because we don't specify the type of file or anything ? What kind of picture must I use ? I have a 10x10 matrix.

Thanks
LeoneLabs (author)  cocotuning9 months ago
The SDstream code relies on SDFat.h library, so be sure you have that installed.

Included in the SDFat library is the SdFatConfig.h file which includes some code for defining which pins are being used to communicate with the SDcard reader via a Software SPI interface. The code in the SdFatConfig.h file will look something like this (minus my comments). You'll need to make sure these pin values match the physical pin values you are trying to use with your setup.

#define USE_SOFTWARE_SPI 1 // define software SPI pins so Mega can use unmodified 168/328 shields
/** Default Software SPI chip select pin */
uint8_t const SOFT_SPI_CS_PIN = 6; //ML - was 21
/** Software SPI Master Out Slave In pin */
uint8_t const SOFT_SPI_MOSI_PIN = 8; //ML - was 19
/** Software SPI Master In Slave Out pin */
uint8_t const SOFT_SPI_MISO_PIN = 9; //ML - was 18
/** Software SPI Clock pin */ uint8_t const SOFT_SPI_SCK_PIN = 7; //ML - was 20
#endif // SdFatConfig_h

The myFile.isOpen() line in the SDStream code will open the files that are in the root directory of the SDcard. You don't need to specify the name but you do need to be sure the proper naming convention is used. This naming convention is called "8.3" ( here's a wikipedia link for reference) which means the filenames need to <8 characters and the extension needs to be <3 characters.

The files which are saved in the PixelPal software are just binary files, the contents is just a big string of numbers, there's no header information. So for instance if you try to display a 10x10 PixelBrite pattern on a 20x10 PixelBrite display the image will look scrambled. You can generate the PixelBrite patterns from the PixelPal software.

Hope this helps. Let me know if you have any more questions. Cheers.
Ok have already configured the sdfatconfig.h, but How can I made a compatible file for my 10x10 matrix from a PNG picture ? Or how can I edit the binary files ?

Thanks for your answers

PS : When I use the pixelbrite software, only 21 leds are illuminated in a random way. Do you know anything about this problem ?
jburdett10 months ago
Awesome project! Still working on my build but when setting up the software, I'm having problems with defining the size of my array in PixalPal. Changing from 10x10 to anything else doesn't seem to do anything. It doesn't change the player window the way it does in your video.
LeoneLabs (author)  jburdett10 months ago
Hmm... you have to press ENTER when you put in a new value in the textbox. Did you try that?
jburdett LeoneLabs10 months ago
Ha I could have sworn i tried that...working now:)
noname109811 months ago
I found cheaper led pixels, 10 dollars cheaper each on

http://www.adafruit.com/products/322
DaveHolds1 year ago
Hi leonelabs,

I'd like to begin by congratulating you on an exceptional project and great instructions.

I'm in the process of starting this wonderful project but i'm having a hardtime opening any of the files on GitHub, could you please tell me what pograms i should be using to open all the files. especially the fritzing or pcb file as i wish to etch my own pcb but cant seem to get anything to open.

Thankyou kindly. Dave
i can be contacted on dbholdsworthgmail.com
LeoneLabs (author)  DaveHolds1 year ago
Thanks for the support!

To download all the files, use the "download ZIP" button in the lower right corner of the GitHub page.

Then you'll need to download Fritzing (http://fritzing.org/download/) to open up the PCB layout.
Superb creation. I made one.

I have the Teensy/SD reader working on a breadboard. 

I hand cut the waffle out of foam core. Came out better than I expected but took forever.

I do have one question - (disclaimer - I'm a microcontroller/teensy/arduino novice) - I'm good with c and electronics.

I couldn't get the SD card readerto work on the pins in the schematic. I had to use B0-B3 for the card (and move the lights to 6 & 7). Is this because of my environment, or do I need to make changes to core_pins, or other include file?  core_pins.h is a teensy creation and contradicts the info card that came with the Teensy 2. It's for the C language side of the info card, not the arduino side (which is how Pixelbright is implemented)

Still working on this but any insight appreciated. Is it OK to leave it this way? (B0-B3 for card, lights on 6 & 7)

Soon, I will try to get it working with a DMX-SPI convertor/controller. Any thoughts on this?

Excellent project and thank you to Leone Labs for the idea!
LeoneLabs (author)  farleysynth1 year ago
Thanks for pointing this out. I forgot to include this in the Instructable, the software SPI pins need to be changed in the sdfatconfig.h file that's included with the SDFat library in order to match the wiring schematic. Here's what I ended up using.

#define USE_SOFTWARE_SPI 1
// define software SPI pins so Mega can use unmodified 168/328 shields
/** Default Software SPI chip select pin */
uint8_t const SOFT_SPI_CS_PIN = 6; //Leonelabs - was 21
/** Software SPI Master Out Slave In pin */
uint8_t const SOFT_SPI_MOSI_PIN = 8; //Leonelabs - was 19
/** Software SPI Master In Slave Out pin */
uint8_t const SOFT_SPI_MISO_PIN = 9; //Leonelabs - was 18
/** Software SPI Clock pin */
uint8_t const SOFT_SPI_SCK_PIN = 7; //Leonelabs - was 20
#endif // SdFatConfig_h

Let me know if I can help any further. I'd be curious to see how you incorporate DMX.
Thanks for the helpful reply. I'll plunge back in Saturday morning.

Why did you make this change? I googled around a bit for SOFT SPI etc etc. But nothing specific yet.

Do you have pointers to more info about this, or a quick explanation?

Thanks, I know this isn't Arduino 101 class. I appreciate your help.
LeoneLabs (author)  farleysynth1 year ago
I decided to use the hardware-based SPI for the LED control and the software-based SPI for the SD card because I believe the hardware-based SPI can achieve higher speeds for the case of streaming from the USB (not the SD card), which is what I want for video frame rates(>30fps). The term "hardware-based SPI" refers to the fact that the SPI protocol is essentially hardwired into certain pins of the microcontroller. The term "software-based SPI" refers to the fact that the SPI protocol can be mimicked by "manually" toggling the outputs of any set of digital IO pins via a set of software instructions. Hope this helps. Cheers.
TAGAPAW1 year ago
hey Leonelabs, very very nice working. I Wondering, you use teensy for microcontroller, can i use arduino instead of teensy (because teensy not available here and i also already ordered 6 months ago which never came) ? also do i need to tweak the code for arduino ? thanks a lot
cocotuning1 year ago
Would it be better to put some gloss on the paint or is it not necessary ?
LeoneLabs (author)  cocotuning1 year ago
"Gloss" won't really help. Gloss might give you more specular reflections rather than diffuse/scattering reflection but it won't increase the amount of light be reflected.
This looks really great. I just wish I had the money for all the materials. :x
Beergnome1 year ago
Simply incredible... I now want to do the ceiling of my apartment like this :D

Looks like the biggest expences were the LED's themselves and the laser cutting service.

if you dont count your personal time and skill to the end expenditure, one could fabrivate the "waffle" with a straight edge and a Xacto knife.
LeoneLabs (author)  Beergnome1 year ago
Your quite right, in fact the very first prototype I cut the waffle grid by hand, although it was only a 5x5 grid rather than a 10x10.
SimonAndre1 year ago
That's pretty amazing!
I have a question.. How could you (if it is even possible) make the LED's sound/music reactive? I mean, like adding a mic, and then if you say, play the guitar or piano in front of it, the LED's would react to it.. Is that possible? and how? :)

Thanks for this! I will have to try it myself, can't wait!
LeoneLabs (author)  SimonAndre1 year ago
The PixelBrite is kind of like a secondary display so if you have a laptop or tablet you could plug the Mic into that and use your own music visualizer to stream a pattern to the PixelBrite via USB. Good luck.

Cheers,
LeoneLabs
1-40 of 91Next »