Introduction This will be your guide into the world of pixels. I’ll teach you a bit about color theory and display science, and then I’ll show you how I was able to make four PixelBrite LED panels. I’ll provide all the sources for building your own and provide a step-by-step guide.
Christmas Light Pixel Matrix After years of doing nothing much in the way of Christmas lights I have decided to do a high tech display. I know it's early to be talking about Christmas lights, but since this was my first time with this sort of thing I wanted to give myself plenty of time.
I’ve also included a whole bunch of pixel art patterns and animations I made with software included in this guide. I hope you find this guide useful and if you do let me know by getting in touch through my website: leonelabs.com. Here’s the quick and dirty: tech specs, components, tool references, and downloads. Technical Specifications:.
Resolution: 10 x 10 pixels. Operating Voltage: 5V. Max Current: 6A. Max frame rate: 60fps.
Color depth: 24 bits/pixel = 16 million colors/pixel. Size: 610mm x 610mm x 90mm. Pixel fill factor: 90%. Weight. Overview: I can think of no better way to sum up the PixelBrite hardware than with an awesome spreadsheet, chock-full of the most valuable information you'll see all day. The Bill of Materials.! This is really the one-stop-shop if you want to try and build your own PixelBrite.
Overview: The electronics include off-the-shelf components and a custom printed circuit board (PCB). The circuit itself is relatively simple, the primary functionality is to read streaming pixel data from a USB port or SD card and then send it out to the LEDs.
Download:.Summary: A rocker switch turns ON and OFF the PixelBrite. When turned ON the Teensy microcontroller uses hardware SPI (serial peripheral interface) to send color information to the individual IC (integrated circuits) next to the LEDs. A push button is used as a hardware interrupt and to change the internal state of the microcontroller. The state can be changed from streaming data from the USB port to streaming pixel data from an SD card, a bit like an mp3 player but with pixels rather than sounds. On each button press, the next file in the SD card is read and displayed on the PixelBrite. The whole thing is powered from a 5V source which can come from a wall-plug or a battery pack. WS2801: This microchip is really the tentpole for this whole project.
The WS2801 describes itself as a '3-Channel Constant Current LED Driver With Programmable PWM Outputs', but in its essence the WS2801 is the magic that turns a simple RGB LED into and RGB Pixel. A WS2801 microchip sits next to each RGB LED in the strand and each one can turn a stream of high-speed ones and zeros into 8-bit grayscale color value in less than a thousand of a second(? What's more, it passes along the data for the next pixel in the chain so everyone down the line can get their next color instruction. What's even more amazing is that the next generation of LED controller IC's (WS2811) are being integrated directly next to the LED as a bare die!.Power Supply: The power is provided by a 5V DC source and this could either an enclosed DC power supply like the one provided by Adafruit or a battery pack. I've tried both and both work. Depending on the pattern the current draw can be signicantly less than the rated maximum and so a batter pack can provide just enough juice for an event but not much more. I used a battery pack when using the PixelBrite as a coffee table or night light and it works well.
For the stage events I'll typically switch to a wall-plug DC power supply. The real consideration when choosing the power supply, though, is the amount of current that they can provide. The individual LEDs can max out at around 20mA, so for 100 pixels with three LEDs per pixel that means the total system could draw upwards of 6 amps.
I decided to measure the amount of current that was being consumed when a full-white image, which would correspond to max power. The results showed that rather than 6A I was instead only drawing roughly 2.3A. At less than half the rated maximum I'm speculating that it has something to do with the resistance of my interfaces or contact points. I'm using some pretty light crimp connections between the DC power supply jack and the PCB board which may be restricting the current draw.
I'm going to poke around to see if I can't uncover the cause of this. Regardless, for battery powered use a lower current consumption is preferred and for most images and animations the amount of current needed is far below the maximum. The current discharge rate of the batteries will limit the maximum brightness of the system but as the video and images show, 4X AA batteries can provide enough current to turn the PixelBrite into an un-tethered coffee table, wall hanging, or mood light. The engineer in me says there is still plenty of engineering to work out in this area.
I'll continue to see if I can't flesh out more details in the future so stay tuned. Overview: These RGB LED strands and strips have grown in popularity due to dropping prices, increased availability, and some good ol-fashioned open-source elbow grease. These strands provide a very convenient way for making an array of pixels and I first came across them on Adafruit which includes a ton of great resources for getting started. Be sure to check out these links if you've never worked with these LED strands before. Adafruit Links:.Wiring: The LEDs are connected with 4 wires:.
Power. Data.
Clock. GroundThe LED strands from Adafruit come in 25-pixel sections. For the PixelBrite panel four strands are used, making a total chain of 100 pixels.
The layout is serpentine rather than the typical raster scan layout used in digital displays. I chose the column-dominated serpentine layout in order for the PixelBrites to easily tiled. LED Teardown The LED and populated PCB are encased in epoxy for weatherproofing. Cutting open one of the LED shells reveals the following. The label on the top of the PCB reads:. SJ-1515ICRGBThe labels on the bottom of the PCB include the channels:. Green = Clock (C0).
Yellow = Data (D0). Blue = Ground (GND). Red = 5V+There’s also an arrow indicating the input side. Bad pixels Working with about 400 pixels I came across several that appeared defective. Some were worse than others so I used my best judgement before deciding to amputate the pixel and replace it with a known-good one. I’m not sure what might have caused them to go bad, although I wonder what the expected yield is out of the factory and in some cases what is the level for pass-fail because overall the uniformity is OK but not great.
Power distribution I found it necessary to include four power distribution lines, that’s 2-wires each, +5V and GND, between the input and the end of each strand. Putting up just a plane full-white image reveals the power dips. If you ignore the slight change in color temperature, you can see the image on the left only uses 1 power distribution line to the very end of the fourth-strand in the lower left corner. In the center of the PixelBrite the brightness is reduced and non-uniform. The image on the left includes 4 power distribution lines and the uniformity and brightness is much better. Overview: For lack of a better term I decided to go with “waffle grid.” I sometimes also refer to it as a “louvre” or “light guide” because its purpose is to define the pixel boundaries and reduce hotspot from the center LED.
Here are the quick stats:. The foam is 6mm thick. The pixel pitch is 60mm. The holes are 12mm in diameter (which matches the spec for the ). The slots are 6mm (which matches the ). The backpanel and rails are 606mm in length.
The rails are 60mm tail (and stand 54mm above the backpanel when slotted). There are two interlocking rail designs.
The SVGs contain 1 backplane, 19 rail0 design, and 14 rail1 design.Download:.Layout: Here's the three PixelBrite SVGs I sent to Pololu for laser cutting. There sizes are matched to cutting area and the size of the foam sheets. Be sure to check out. I ended up using Pololu because they offered some of the largest cutting areas available; they are able to take sheets up to 35.5' x 50' in size (at 606mm, the waffle grid pieces are just under 24' in size). No waffle grid vs. Waffle grid During the project I decided to test the PixelBrite without the waffle grid.
Here’s a side-by-side comparison. There are a couple of things that should be apparent. The one on the right does not have the waffle grid and you can see the hotspots are much more pronounced. Furthermore, the color saturation is lower because adjacent pixels are leaking across their logical boundaries and mixing with the a neighbors. This tends to cause the pixels to “wash out” and create a sort of whitish haze. Overall I think its easy to see the waffle grid is an effective light guide and hotspot diffuser. Introduction One thing I’ve noticed with usual build guide for LED arrays is the lack of a modular enclosure.
I’d built previous LED matrices with just a simple backplane, some foamcore poster board or cardboard, but there were wires everywhere and I felt it was in constant danger of being accidentally destroyed. My solution was to enclose the LEDs in acrylic and use the very handy MicroRax aluminum profiles to hold it together. Also I was able to find some great sign-grade acrylic that was tinted so the panel would look black when the LEDs were OFF. This turned out to be great choice for helping dim the LEDs, diffuse the hotspots, and create a good looking box even when the LEDs weren't ON. The Ninja Box stat sheet:. The pigmented acrylic is 10-15% transmissive. The acrylic is glossy on one side and matte on the other.
The MicroRax is 10mm-wide aluminum profile. The dimensions of the acrylic are 606mm x 606mm. The dimension of the side panels are 76mm x 606mm. The acrylic is 3mm thick. Summary: There is an iconic scene in the movie Close Encounters of the Third Kind which shows a giant color organ being used to communicate with an alien Motherhship. Now if you've never heard of a color organ, as the name might suggest, its a way to play with visual colors the same way a organist plays with musical notes. In the movie, the color organ is used with great effect to John Williams score and became a shining example of the possibilities.
However, despite its abilities to communicate with aliens, the color organ never really materialized as a product the average person could connect with. Regardless of its history, it wasn't until I came across this interesting comment that I felt the need to dig deeper:'In the film, the original aspirations of Castel’s ocular harpsichord appear to be finally realized.
However, when I recently spoke to Philip Dodds, the former ARP engineer who appears in Close Encounters as the synthesizer operator, he told me that the synthesizer and light console used in the film were never actually linked.' -James Peel, 2006 Never linked!? Of course I can't confirm this quote (if anyone knows tell me!), but it sounded enough like a challenge to try and hack something together. Overall it ended up being a pretty messy process with all the tempo changes that take place in the scene, but it turned out alright (lets just not mention the fact that a couple of notes are missing from the beginning, ok?) Details: I used a Lenovo T410i ThinkPad which, oddly, does not have the ability to natively record from the sound card. This made it necessary for me to install another driver (Conexant CX20671 SmartAudio HD) in order for me to access the sounds coming through my sound card. While I originally crafted my own software to translate the MIDI signals into triggered pixel patterns, I ended up preferring to use Madrix, a piece of stage-light software designed for pixelized displays. In Madrix I was able to generate a script that would draw colored lines when a MIDI note was detected and so now all I had to do was send the MIDI data into Madrix.
To do this I combined Ableton and a free virtual MIDI driver called. LoopBe allowed my to send out MIDI signals from Ableton as the MIDI file was played to this virtual MIDI port which Madrix was setup to listen to. Thus I could play and edit the MIDI notes in Ableton and then see the pixel patterns being triggered in Madrix, all without even having any hardware! Once I was able to build the PixelBrite panels and get the firmware working, I could then just broadcast the Madrix view to the PixelBrite with the PixelPal software as Ableton sent out the MIDI notes in real time. Overall I thought it turned out pretty well.
Now I just need to find some Motherships. Summary: Perhaps one of my favorite uses for the PixelBrite panels is for creating live light shows to accompany a DJ or musician. Here’s a summary of my experience:. Multiple PixelBrite can be easily tiled together and controlled. I ended up building four PixelBrite panels and tiled them together. My preferred layout is 4x1, although 2x2 ain’t bad either. Setup is fast and easy.
The PixelBrite panels are hung from t-bars mounted on tripods. I used O-rings (like a key-chain ring) and so no clamps or other mounting hardware is needed. They are a fraction of the cost of other stage lights. Gear is expensive, and in some cases needs to be, but if I could have bought a cheaper pixel panel setup I would have instead I built one. No DMX, no DVI, just USB.
DMX is a signal protocol akin to MIDI signals used with audio, except DMX is meant for stage lighting. While there's nothing wrong with that in principle, it requires unnecessary middleware if you want to run some lights from your laptop. There are a lot of projectionist that will use projectors for light shows with amazing success. However in this case a full DVI video signal is needed, that includes a lot of pixels, for high-definition that’s 2 million pixels! Yet you don’t need a video port to do the job of a serial port, and so with a fraction of the bandwidth you can still create a pretty awesome light show with a 100 pixels.Setup: I’m able to control them with a USB MIDI controller and my laptop.
By piping in the audio line from the main DJ mixer I can create sound-reactive effects. Madrix has a good collection of equalizers and sound-reactive effects.
I've also included my own collection that you can download from the GitHub repo. Tiling multiple PixelBrites together: To tile the PixelBrites together all that has to be done is to connect the LED strands from one box to the next. You only need one master box which includes the PCB and electronics. The other boxes can just be passive strands of LEDs however for larger arrays more power and more power distribution is needed. Download: I experimented a lot with Madrix and over the course of the project generated a bunch of effects and color palettes. You'll need to download in order to open these files. Download:.
(137mb = includes a bunch of patterns, PNGs, and GIFs as well)How does it work? It creates ultra low-res pictures by undersampling what appears on your desktop. You specify the pixel array (e.g. 10x10, 20x5, 200x200) and the capture window and the PixelPal software will grab the color values from your desktop and create a pattern to save or display.How do I start? On Windows, just download the Processing code and run the PixelPal.exe in the 'application.windows32' folder. You'll need java if you want to try and hook it up to the PixelBrite.
Get it fromTo compile the source code you’ll need:.What about the Arduino code? You can use the PixelPal software without a PixelBrite or without the Arduino code, however, if you want to stream data over the USB port than you’ll need the Arduino code. To use the Arduino code you also need a couple of libraries.Also don’t forget to change the numPixels variable in the Arduino code to match the number of LEDs being used in the PixelBrite otherwise the images will look scrambled.Screen resolution The desktop capture feature of the problem should scale with your screen resolution, so the app should always look similar to image shown. However, I’ve only really tested this with a screen resolution set to 1280x768, so caveat emptor!Gamma adjustment: Easily apply gamma correction to the pixel patterns in order to generate the proper colors on the PixelBrite hardware.
For more information on gamma correction be sure to check out the Measurements section.Serpentine Remapping: As the LED wiring shows, the LEDs are connected in a serpentine fashion. This means that the order of the pixels stored in memory is different than the physical order of pixels in the PixelBrite hardware. As a result, if the image is to be displayed corrected the pixels must be saved in a new ordering.
Hello friends, Welcome to our Youtube Channel.