pixel brite

34
http://www.instructables.com/id/PixelBrite/ Food Living Outside Play Technology Workshop PixelBrite by LeoneLabs on May 19, 2013 Table of Contents PixelBrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Intro: PixelBrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Step 1: Project Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Step 2: The Bill of Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Step 3: The Electronics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Step 4: LED Wiring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Step 5: Waffle Grid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Step 6: Ninja Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Step 7: Close Encounters of the Third Kind Demo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Step 8: DJ Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Step 9: Color and Light . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Step 10: PixelPal Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Step 11: The Build . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Step 12: Pixel Art Gallery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Step 13: Measurements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Step 14: Project Meta Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Advertisements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

Upload: helderrui

Post on 20-Oct-2015

90 views

Category:

Documents


0 download

TRANSCRIPT

  • http://www.instructables.com/id/PixelBrite/

    Food Living Outside Play Technology Workshop

    PixelBriteby LeoneLabs on May 19, 2013

    Table of Contents

    PixelBrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

    Intro: PixelBrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

    Step 1: Project Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    Step 2: The Bill of Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    Step 3: The Electronics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    Step 4: LED Wiring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    Step 5: Waffle Grid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    Step 6: Ninja Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    Step 7: Close Encounters of the Third Kind Demo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    Step 8: DJ Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    Step 9: Color and Light . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    Step 10: PixelPal Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    Step 11: The Build . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    Step 12: Pixel Art Gallery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    Step 13: Measurements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    Step 14: Project Meta Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    Advertisements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

  • http://www.instructables.com/id/PixelBrite/

    Author:LeoneLabs author's websiteI'm an artist and engineer living in Jackson, WY.

    Intro: PixelBriteI 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 theMothership 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 myown 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 somethingmore 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 butwith 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 builtfour 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 removemyself 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 partof 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 streampatterns 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. Its aplug-n-play light show, its a minimalist light sculpture, its a conversation starter and its a piece of wall dcor. Its a futuristic Ikea coffee table and a Daft Punk discolight. Its bright, dark and colorful. Its digital stained-glass. A center-piece or a perimeter-piece, its portable, playable and programmable.

    Welcome to my Instructable, I hope you enjoy.-LeoneLabs

  • http://www.instructables.com/id/PixelBrite/

  • http://www.instructables.com/id/PixelBrite/

  • http://www.instructables.com/id/PixelBrite/

  • http://www.instructables.com/id/PixelBrite/

  • http://www.instructables.com/id/PixelBrite/

  • http://www.instructables.com/id/PixelBrite/

  • http://www.instructables.com/id/PixelBrite/

  • http://www.instructables.com/id/PixelBrite/

  • http://www.instructables.com/id/PixelBrite/

    Step 1: Project OverviewIntroductionThis will be your guide into the world of pixels. Ill teach you a bit about color theory and display science, and then Ill show you how I was able to make four PixelBriteLED panels. Ill provide all the sources for building your own and provide a step-by-step guide. Ive also included a whole bunch of pixel art patterns and animations Imade 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.

    Heres the quick and dirty: tech specs, components, tool references, and downloads.

    Technical Specifications:

    Resolution: 10 x 10 pixelsOperating Voltage: 5VMax Current: ~6AMax frame rate: 60fpsColor depth: 24 bits/pixel = 16 million colors/pixelSize: 610mm x 610mm x 90mmPixel fill factor: 90%Weight:

  • http://www.instructables.com/id/PixelBrite/

    Misc. interface electronics (switch, button, resistor, etc...)Build Tools:

    Soldering ironWire strippers/cuttersDremelHacksawPCB etchant, Developer, AcetoneCaulkingHot glue gunScribeAllen wrenchStraight edge

    Downloads:All the files are available from the LeoneLabs PIxelBrite GitHub repo . This includes all the Processing and Arduino code as well as a whole bunch of content to play with.

    Step 2: The Bill of MaterialsOverview: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. Behold!...the Bill of Materials...! This is really the one-stop-shop if you want to try and build your own PixelBrite.

    Bill of Materials:

    .LeoneLabs PixelBrite Bill of Materials - June 2013

    .Component Part Description Vendor Value QtyPrice Unit Cost

    .Translucent acrylic panel ACRYLITE GP P-95, sheet, Black/White 9H04SCacrylite-shop.com

    23.875" x 23.875" x 0.118"(3mm thick) 2 $6.63 sq-ft $31.24

    .Opaque acrylic panel ACRYLITE FF (extruded), sheet, Black 9M001GTacrylite-shop.com

    23.875" x 23.875" x 0.118"(3mm thick) 1 $5.20 sq-ft $25.58

    .Aluminum extrusion 10mm Profile, black microrax.com 600mm 8 $7.20 $57.60

    .Aluminum extrusion 10mm Profile, black microrax.com 70mm 4 $0.84 $28.80

    .Aluminum tri-corner bracket Tri-corner microrax.com 8 $2.40 $19.20

    .Foam 6mm White Depron - 10 Sheets, Size 27"x39" rcfoam.com 6mm thick 0.4 $69.00 10 sheets $27.60

    .Laser Cutting Service Laser cutting foam pololu.com 1 backplane, 8 rails_0, 8rails_1 0.5 $203.00

    Quoted for 2 setsof parts $101.50

    .Teensy 2.0 Microcontroller Teensy USB Development Board prjc.com Atmel 32u4 microcontroller 1 $16.00 $16.00

    .MicroSD Card Adapter pjrc.com 1 $8.00 $8.00

    .USB adapter USB Cable, Mini-B to Standard-B Panel MountAdaptor pjrc.com 1 $5.50 $5.50

    .Invidually-addressable RGB LEDpixel strands

    12mm Diffused Flat Digital RGB LED Pixels(Strand of 25) - WS2801 adafruit.com WS2801 4 $39.95

    1 strand = 25pixels $159.80

  • http://www.instructables.com/id/PixelBrite/

    .5V DC power supply 5V 10A switching power supply adafruit.com 5V 10A 1 $25.00 $25.00

    .PCB Board Circuit Skills #1: Jameco Value Pro PrototypingKit jameco.com 0.5 $46.95 $23.48

    .Molex Header + Wiring Molex Jumper 6 Wire Assembly sparkfun.com 6-wire 1 $1.95 $1.95

    .DC Barrel Jack Panel Mount 2.1mm DC barrel jack adafruit.com 2.1mm barrel 1 $2.95 $2.95

    .Rocker power switch SWITCH ROCKER SPST 16A 125V digikey.com SPST, 16A, rocker 1 $0.96 $0.96

    .Momentary Button SWITCH PUSH SPST-NO 3A 120V digikey.com SPST, 3A, momentary 1 $1.80 $1.80

    .Terminal Block Fixed Terminal Blocks 4P 2.54mm 90DEG mouser.com 4 positions, 2.54mm (0.1")pitch 1 $2.43 $2.43

    .Twist-on wire connector ("wirenut") Radioshack $0.00

    .22awg wire Radioshack $0.00

    .Resistor Radioshack 10k $0.00

    . Total: $539.39

    Commentary:Heres the top four most expensive components

    $159.80 | RGB Pixels$129.10 | Laser cut foam$105.60 | MicroRax$56.82 | Acrylic

    If there are better sources let me know!

    Step 3: The ElectronicsOverview: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 readstreaming pixel data from a USB port or SD card and then send it out to the LEDs.

    Download:

    Fritzing Schematic and PCB

    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 tothe 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 canbe 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 buttonpress, 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 batterypack.

  • http://www.instructables.com/id/PixelBrite/

    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 PWMOutputs", 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 strandand 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(? need calc). What's more, it passesalong 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 LEDcontroller IC's (WS2811) are being integrated directly next to the LED as a bare die!

    WS2801 datasheet

    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 bothwork. 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 notmuch 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 DCpower 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 for100 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 consumedwhen 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 crimpconnections 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 causeof 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 themaximum. 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 provideenough 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.

  • http://www.instructables.com/id/PixelBrite/

  • http://www.instructables.com/id/PixelBrite/

    Step 4: LED WiringOverview: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 gettingstarted. Be sure to check out these links if you've never worked with these LED strands before.

    Adafruit Links:

    Product pageLadyada tutorial - RGB LED pixelsGitHub WS2801 library

    Wiring:The LEDs are connected with 4 wires:

    Power1.Data2.Clock3.Ground4.

    The 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 serpentinerather 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 TeardownThe 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-1515ICRGB

    The labels on the bottom of the PCB include the channels:

    Green = Clock (C0)Yellow = Data (D0)

  • http://www.instructables.com/id/PixelBrite/

    Blue = Ground (GND)Red = 5V+

    Theres also an arrow indicating the input side.

    Bad pixelsWorking 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 amputatethe pixel and replace it with a known-good one. Im not sure what might have caused them to go bad, although I wonder what the expected yield is out of the factory andin some cases what is the level for pass-fail because overall the uniformity is OK but not great.

    Power distributionI found it necessary to include four power distribution lines, thats 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 veryend 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 powerdistribution lines and the uniformity and brightness is much better.

    Step 5: Waffle GridOverview: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 boundariesand reduce hotspot from the center LED. Here are the quick stats:

    The foam is 6mm thick.The pixel pitch is 60mmThe holes are 12mm in diameter (which matches the spec for the LED Pixels from Adafruit)The slots are 6mm (which matches the depron foam from RCFoam)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 designsThe SVGs contain 1 backplane, 19 rail_0 design, and 14 rail_1 design.

    Download:

    Layout SVGs

    Layout:

  • http://www.instructables.com/id/PixelBrite/

    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 Polulu'sCustom Laser Cutting Guide . 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" insize (at 606mm, the waffle grid pieces are just under 24" in size).

    No waffle grid vs. waffle gridDuring the project I decided to test the PixelBrite without the waffle grid. Heres a side-by-side comparison. There are a couple of things that should be apparent. Theone 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 adjacentpixels 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. OverallI think its easy to see the waffle grid is an effective light guide and hotspot diffuser.

  • http://www.instructables.com/id/PixelBrite/

  • http://www.instructables.com/id/PixelBrite/

    Step 6: Ninja BoxIntroductionOne thing Ive noticed with usual build guide for LED arrays is the lack of a modular enclosure. Id built previous LED matrices with just a simple backplane, somefoamcore 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 theLEDs 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 panelwould 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 whenthe LEDs weren't ON.

    The Ninja Box stat sheet:

    The pigmented acrylic is 10-15% transmissiveThe acrylic is glossy on one side and matte on the otherThe MicroRax is 10mm-wide aluminum profileThe dimensions of the acrylic are 606mm x 606mmThe dimension of the side panels are 76mm x 606mmThe acrylic is 3mm thick

  • http://www.instructables.com/id/PixelBrite/

  • http://www.instructables.com/id/PixelBrite/

  • http://www.instructables.com/id/PixelBrite/

    Step 7: Close Encounters of the Third Kind DemoSummary: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 ifyou'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, thecolor 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 interestingcomment that I felt the need to dig deeper:

    "In the film, the original aspirations of Castels ocular harpsichord appear to be finally realized. However, when I recently spoke to Philip Dodds, theformer ARP engineer who appears in Close Encounters as the synthesizer operator, he told me that the synthesizer and light console used in the film werenever actually linked."

    -James Peel, The Scale and the Spectrum, 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 endedup 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 aremissing 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 softwaredesigned 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 wassend the MIDI data into Madrix.

    To do this I combined Ableton and a free virtual MIDI driver called LoopBe . LoopBe allowed my to send out MIDI signals from Ableton as the MIDI file was played to thisvirtual 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, allwithout 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 asAbleton sent out the MIDI notes in real time.

    Overall I thought it turned out pretty well. Now I just need to find some Motherships

    Step 8: DJ SetupSummary:Perhaps one of my favorite uses for the PixelBrite panels is for creating live light shows to accompany a DJ or musician. Heres a summary of my experience:

    Multiple PixelBrite can be easily tiled together and controlledI ended up building four PixelBrite panels and tiled them together. My preferred layout is 4x1, although 2x2 aint bad either.

    Setup is fast and easyThe 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 isneeded.

    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 USBDMX 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, itrequires 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, thatincludes a lot of pixels, for high-definition thats 2 million pixels! Yet you dont need a video port to do the job of a serial port, and so with a fraction of thebandwidth you can still create a pretty awesome light show with a 100 pixels.

    Setup:

    Im 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

  • http://www.instructables.com/id/PixelBrite/

    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 andelectronics. 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 Madrix 2.14 (free to try) inorder to open these files.

    Madrix Effects and Color Tables

    Step 9: Color and LightIf theres only one light in each pixel where do all the colors come from? Well, if you remember your basic color mixing from grade school or youve ever opened up MSPaint youll see that with only three primary colors its possible to mix them in various amounts to create any color in spectrum.

    But wait! We arent mixing red, blue and yellow like we did paint brushes, when we mix light we are mixing color differently than when we are mixing paints or pigments.Its an additive process rather than a subtractive process and that means the primary colors are different. Its not red, blue and yellow. The primary colors for mixinglight are red, green and blue.

    Inside each pixel is three light sources, a red one, green one, and blue one (RGB). By turning up or turning down the brightness of the individual components we canmake any color. The same technique is used in every display around, albeit with tiny pixels rather than jumbo ones, but the principle is the same.Pixel PatternsSo what are pixel patterns? In their simplest form they are just a big list of numbers, one value for each red, green, and blue component within each pixel of every frame.Most often a color is represented as a triplet, for example:

    Yellow = {255,255,0}Blue = {0,0,255}

    Therefore to make an array of pixels we just need a list of triplets, and if we set up the physical hardware into a 2D array that list of triplets will get mapped out to the rowsand columns physical pixels.

    As a part of the software development I decided to try and keep things as simple as possible so rather than saving the pixel patterns as images I decided to save them asraw binary files. This means they are just pixel values, theres no metadata about what the physical array of pixels looks like. This means that the pixel pattern files needto be opened in the PixelPal software in order to see what colors the values translate to, but you can also look at them in a hex editor if youre curious.

    For reference heres what a raw binary file looks like in the free hex editor, Frhed , compared to the actual colors of the pattern. You can see the first three entriescorrespond to the color triplet of the first pixel. The numbers are represented in hex notation so FF is equivalent to a value of 255 or the maximum value of an 8-bitnumber. The first triplet is {FF, 00, FF} which is equivalent to the magenta pixel seen in the pattern.

  • http://www.instructables.com/id/PixelBrite/

    Step 10: PixelPal SoftwareOverview:In order to make the PixelBrite more accessible to everyone I spent a lot of time working a software app that would be useful but also be able to create lots of greatcontent. The PixelPal software is standalone and doesnt require the PixelBrite. It lets you record, play, and save your own pixel patterns. Be sure to check out theSoftware Demo video to learn more about how to use the application.

    Download:Arduino codeProcessing code - (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 thePixelPal 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 from java.comTo compile the source code youll need:

    Processing 2.0ControlP5 libraryAdafruit WS2801 library

    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 youll need the Arduinocode. To use the Arduino code you also need a couple of libraries

    SDFat libraryAdafruit WS2801 library

    Also dont 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 lookscrambled.

    Screen resolutionThe desktop capture feature of the problem should scale with your screen resolution, so the app should always look similar to image shown. However, Ive only reallytested 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 sureto 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 ofpixels in the PixelBrite hardware. As a result, if the image is to be displayed corrected the pixels must be saved in a new ordering. This is easily accomplished with theRemap button which will take a rasterscan normal pixel pattern and reorder it to match the column-major serpentine layout of the PixelBrite

    Code Reference:

    Processing (PixelPal)LeoneLabs_PixelPal_v1_41

    setup()draw()stop()

  • http://www.instructables.com/id/PixelBrite/

    mouseDragged()mousePressed()controlEvent(theEvent)

    Animation(buffer, array_width, array_height)getFrame(frame_n)

    CaptureGUI (x, y, w, h, array_width, array_height)display()capture()renderFrame()blendFrames(src_img0, src_img1, float percentage)mouseEvent()grabDesktop()resizeImage(out_img, in_img scale)updateCaptureWindow(x, y)expandCaptureWindow(x, y)updateCaptureCoords()updateCaptureScaler()sampleImage(source_image)histSampleImage(histsize_x, histsize_y, source_image)

    FileManager(x, y, w, h, path)listFiles(dir)listFileNames(dir)AddToListBox(path, filenames, files)loadPatternFromFile(filepath)

    PixelBrite (app, x, y, w, h)display()updateArray(app)controls(list)controls(controller)

    PixelPlayer(app, x, y, array_width, array_height)display()applyRemapGamma(input_img)renderFrame(n, anim, previous_frame)blendFrames(src_img0, src_img1, percentage)resizeImage(out_img, in_img, scale)resizeImage(out_img, in_img, scale_x, scale_y)updateBlendCount()updateFrameRange()loadAnimation(filepath)loadAnimation(pixel_buffer)savePNG(fileName)saveBytesToFileVer2(fileName)controls(controller)saveAnimationToFile(selection)saveGIFToFile(selection)openGIF(selection)savePNGToFile(selection)sampleImage(source_image)sampleImageVer2(source_image)

    PixelRecorder(x, y, w, h, array_width, array_height)saveToOutputBuffer()display()updateProgressBar()mouseEvent()record(sampled_img)controls(controller)

    PixelStreamer(app, x, y, array_width, array_height)display(pixel_array)connect()disconnect()controls(controller)

    Arduino (PixelBrite_v1)LeoneLabs_PixelBrite_v1

    setup()loop() //not usedbutStateChanged()colorWipe(wait)startup(wait)rainbow(wait)Wheel(WheelPos)Color(r,g,b)

    LEDstream()SDstream(wait)

    setPixels(pixels[],wait)

  • http://www.instructables.com/id/PixelBrite/

    Step 11: The BuildLayout Foam and PCBThe first thing I did was generate the layout files for the foam waffle grid light guide. I used the free, open-source vector graphics editor Inkscape. This process was astraightforward combination of the basic shapes and the Boolean operators built into Inkscape.

    For the PCB I used the free, open-source layout software Fritzing. This turned out to be a bit of an uphill battle. I ended up having to create two layouts, one in theschematic editor and one in the PCB editor. However, all I needed up front was the PCB layout so I started from there and then added the schematic as a reference later.

    Laser cutting services from Pololu.comOnce I'd completed the layout I exported the .svg files to .dxf and then uploaded them to Pololu.com. Their online quotation tool was easy to use. I also drop shippedthem an order of 6mm depron foam sheets I'd ordered from RCFoam.com. They sent me a selection of quotes from 5-day to same-day service! I opted for the lowest-cost, 5-day service, however the results exceeded my expectations!

    Paint the foam waffle gridThe raw foam itself is not a very good light guide. The foam is too translucent and if used in its raw state would let a lot of light leak from one pixel to the next. The bestsolution I could come up with was to paint the foam.

    Now in hindsight this wasn't the best choice; painting foam, as it turns out, is a very labor-intensive process. One might think that you could throw a layer of paint ontoeach side of the foam and you'd have a completely opaque piece of foam. You might even think that you could get away with a couple coats of spray paint... oh you poornaive child! As it turns out it took me about 7 coats of paint before I was satisfied with the opacity of the foam.

    This was perhaps the most time consuming part of the whole process. I think in retrospect it would have been a lot easier to go with some normal corrugated cardboardand then simply paint them white. I spent some time looking for 2-sided white cardboard but came up short. This would have probably produced some more opaque railsand created better pixel separation but I'm satisfied with the painted foam despite the extra effort.

    Cut the MicroRax frameThe MicroRax aluminum extrusion can be cut a variety of ways, I opted for some hand vices and a hacksaw.

    MicroRax :8 pieces, 600mm*4 pieces, 70mm*

    *As a possible coincidence (who knows!), you can buy these sizes directly from MicroRax and no cutting is needed!

    Assemble the frameOnce the pieces were cut the frame was easily assembled by screwing the tri-corner brackets onto the ends of the aluminum profiles.

    For added strength I used some silicone caulking between the Microrax and the acrylic panels on the front and back faces. What I found was that the tricorner bracketscould hold the entire assembly together but when I was picking up or hanging the panels the aluminum would flex slightly in the middle.

    Some silicone caulking in the V-groove of the MicroRax helped improve the grip to the acrylic and create a more rigid enclosure. I ended up only doing this for the frontand back panels leaving the side panels removable in case some internal repair was needed.

    My one err during this process was not realizing I would want to add some nut-plates to the back panel before it was too late. These nut-plates would let me screw onsome additional mounting hardware in the future but with the back panel fully cured I could no longer simply slide the nut plates into the V-groove as intended. Instead Ihad to dremel out a bit of the V-groove to wedge them into place. In the end it worked, but it did leave a little scar.

    Scribe and break the AcrylicTo reduce the number of cuts needed, I ordered the acrylic with a fixed width, this way the side panels would only require one cut to make. I set out with ruler and sharpieto mark out an acrylic panel for scribing, remembering that the cover on the acrylic should be left on until the very end.

  • http://www.instructables.com/id/PixelBrite/

    For cutting the acrylic I had a tough choice to make, my abode does not lend itself well to a table-saw which is arguably the tool of choice for cutting strips of acrylic, sohow am I going to cut these pieces? Well as it so happens I have a saying and thats anything that can be done with a power tool can be done with a hand tool. Andas it turned out I discovered a rather convenient way to create strips of acrylic. The tool: a scorer or scribe, like this one on Amazon.com.

    The scribe is incredibly sharp and will make an awful screeching every time you rake the scribe across the acrylic. Youll want to apply some good downward pressure tothe scribe and get it to really dig into the surface of the acrylic. I ended up scribing across the acrylic five times (5X) per side, thats a total of 10 screeching scribingscrapes per piece. If it werent for the ghastly sound this technique would be the ultimate low-tech solution for cutting acrylic.Heres a single scribe pass on one side. Only 9 more

    During the scribing process you can see Im using one of these big clamping straight edges to guide the scribe.After the ten passes of the scribe, I clamp a heavy piece of particle board that was used for a shelf on top of the acrylic and then extend the piece over the end of thework table. With everything clamped down tight and scribe lane sitting right on the edge of the table I press down firmly with both hands to snap the acrylic right along thescribe lane.The pieces come out a bit uneven but the MicoRax frame allows for loose tolerances. These could be evened out, perhaps with a belt sander, but it wasn't necessary.

    Assemble the waffle gridI discovered that using painted foam was a nice idea to keep the weight of the PixelBrite down especially compared to something like MDF or acrylic which would add alot of weight. Fitting the foam together, however, was a bit tedious. The interlocking rails were a snug fit and the squeaking sound of foam of foam was sign that it mightjust be a pretty good pixel separator. One rail at a time the puzzle came together.

    Hot glue the pixels to the back panelI discovered that even though the diameter of the holes match the specd size of the LEDs there was enough tolerance that the LEDs would tend to slide out if too muchforce was applied on the wires. The solution I found was to grab the glue gun and give a couple shots of hot glue to the rim of the LED and then twist it in place. The wiresshould also zig-zag rather than stick out from the back, otherwise this piece will be too thick to fit into the Ninja box!

    Wire additional power and ground leadsEnsuring that each pixel receives the necessary current and voltage requires some additional connections for power and ground connections. I used some twist-on wireconnectors or wire nuts along with some 18-22awg stranded wire to provide the power busses. I ended up with four power busses and that seemed to create a prettyuniform pixel array.

    Build a custom PCB for the electronicsTo move the circuit off the breadboard I used a basic PCB prototyping process pretty well documented by Jameco and Make magazine

    With a laser printer I transferred the digital layout of my PixelBrite circuit board Id made in Fritzing to a 3M transparency. The transparency was cut and mounted in adollar-store picture frame with the photoresist coated PCB and then exposed for roughly 8 minutes. After developing the resist for about a minute, the board was etchedin ferric chloride and after about a half an hour I had a completed PCB.

    After drilling the holes the components were ready to be soldered in place. Its important to remember to cut the power trace on the Teensy board ( see PRJC for moreinfo) before soldering in place. This will make it so the Teensy does not try to draw its power from the USB but rather the VCC and GND pins.

    Route the acrylic side panel for the electronic portsFor the control panel I decided to keep it quick and dirty by just hand routing the holes for the components a laser cutter might have been the right tool hear. I took itslow and made sure I had the acrylic well clamped before starting.

    Final AssemblyThe best method I found for assemble was to proceed from the bottom up, so start with the back face and the PCB circuit. Drop the side panel in with the bulk headconnections and get everything lined up and fixed. Then drop in the LED/waffle grid assembly ontop and connect the 4-pin Molex on the LEDs to the 4-pin Molex on thePCB board from the side. Drop the side panels in place and then press the waffle grid down with the front panel. Tighten the screws on the tricorner brackets andeverything should be ready.

    As part of this process I discovered the USB panel-mount was bumping into the underside of one of the LEDs. To remedy it I had to mount the USB connector with theflanges on the outside rather than inside.

    Load the firmwareThe Arduino firmware must be loaded onto the Teensy, get the code from the LeoneLabs PixelBrite repo on GitHub. If youre just getting started with the Teensy be sureto check out PRJCs Teensyduino Tutorial.There are a couple of important things to remember in order for the system to run correctly:

    In the Arduino code:dataPin = 2 (matched to the physical pin of the Teensy)clockPin = 1 (matched to the physical pin of the Teensy)numPixels = 100 (matched to the number of physical pixels)

    Youll need Adafruits WS2801 library and the SDFat library to compile the Arduino source codeThe file names on the SD card need to be short; they are limited to 8 characters with a 3 character extension. This is a limitation of the SDFat library.

    Color_bars.pixex will not work because Color_bars > 8 characters and file extension, pixex > 3 charactersColorBrs.pix will work

    The SD card will stream from the PB folder within the root directory of the SD card so all the patterns and animations must be stored in this folder on the SDcard.

    Power ON!Plug in the power supply, flip the switch and plug in the USB port or load a SD card to get started. The pushbutton will cycle through the operating states. There are threestates:

    Color swirl1.This is a hard-coded pattern used just for reference

    USB streaming2.

  • http://www.instructables.com/id/PixelBrite/

    The PixelBrite is waiting for data to be streamed via the USB. The PixelPal software must be loaded up and connected in order for streaming to work. If nostreaming is taking place the display will briefly show the color swirl pattern before turning black.

    SD card stream3.If the PB folder on the SD card contains patterns, then after advancing to this state the PixelBrite will continuously stream the pattern or animation untilthe pushbutton is pressed again, at which point it would advance to the next file.

    Step 12: Pixel Art GalleryIf you need a crash course on the category of Pixel Art I highly recommend this documentary called: Pixel A pixel art documentary.

    While I didnt originally intend the PixelBrite to be classified as a piece of pixel art it is easily recognizable as one. The ultra low-res, digital feel is easy to see, however Iwanted the pixel art that resulted to be a bit different. Ive found that theres a very gray area between pixel art and abstract art, especially as the number of pixels isreduced. Details become textures and then textures become blocks of color, just a palette of tones and huesEventually one must ask, where is the line between the actual object and just blocks of color? How few pixels are needed to capture its essence? Some things arerecognizable down to 10x10 pixels. Some things you wouldnt know what you were looking at without being prompted.

    If youve ever seen or played minecraft you might know the feeling. The representation of a person and his surroundings are modest to say the least. But somehow itsall still there and somehow its just as fun and possible more fun than if everything were represented in full detail. Its this kind of experience that I want to showcase, theone where theres a spark-gap, where your mind jumps past what your eyes see and creates a new world and a new experience.All the images and animations were all made using the PixelPal app. The videos were recorded as a screencast in order to capture the synchronized audio.

    Video Game:

    Famous Paintings

    Disney

    Madrix VJ Loops

    Corporate Logos

    Memes

    PixelPal Videos

    PixelBrite Performance Videos:

    PixelBrite Live Music Videos

  • http://www.instructables.com/id/PixelBrite/

    Step 13: MeasurementsIntro and UniformityWhen I first set out to measure the PixelBrite I wanted to see if I could calibrate it to make the image look better. To me, this meant developing a way to measure theoutput of every pixel. I saw Adafruit had just released a color sensor break out board so I thought why not give that a try. Heres the color sensor: RGB Color Sensor withIR filter - TCS34725 -

    I used a Teensy, a cardboard tube, a little circular perf board from Radioshack and some black spray paint to make my own USB color sensor.

    After creating a Processing sketch to measure all the pixels I was able to come up with the following image. The picture shows the 10 x 10 grid of pixels on the PixelBritewhen they are displaying pure white which doesnt look very white does it?

    There are several reasons this looks very non-uniform.

    1. They are raw measurement values, optical power not perceived brightness, they arent gamma corrected and so they dont visually represent what the PixelBritelooks like (for more info on gamma correction check the following section).2. The LEDs themselves or the driver circuits have not been calibrated or matched, and so whatever manufacturing tolerances existed appear as variations in color.

    a. This would be fine for just the bare LEDs which would normally look very bright and washed out and ones that arent meant for displays.Even after trying to take this data and come up with a way to improve the uniformity I relinquished because it was a bit like chasing your shadow. This uniformity isntconstant, but rather is varies with the power, so a single look-up table (LUT) would not work. Also, the PixelBrite already looks pretty good, the non-uniformity is not reallya distraction.

    HotspotsMuch of the design of the PixelBrite stems from the point of removing the hotspot associated with the LED and turning it from a very bright point of light to a nice softglowing pixel. The following figure (Figure 40) shows the intensity profile from a single pixel. While this doesnt represent the actual optical power being put out by thepixel, I adjusted the camera settings to match my own eye, it does mirror the intensity seen by an observer. I took the photoAchieving a perfectly flat pixel profile is very challenging. Initially I experimented with several different pixel geometries, changing both the pitch and thickness of thewaffle grid until I found that with these particular brand of LEDs a waffle grid with pixels 50-60mm per side looked good enough.

    GammaThe concept of gamma or gamma correction or gamma encoding is a bit tricky to explain but the basic premise is that the complexities of the human vision systemrequire our displays be controlled in a non-linear way in order for them to look correct. Heres the Wikipedia article on Gamma Correction which gives a pretty goodrun down.

    I made two different measurements of the output of the LEDs on the PixelBrite to show what Gamma looks like.

    The straight) lines show the linear output of the LEDs as the grayscale input value was increased. This is what youd expect if you were opening a water valve, open atiny bit and a tiny stream of water comes through, open it twice as wide and twice as much water comes through. Yet, when this mode is used the displayed image doesnot look correct, it looks washed out, like the following image shows.

    On the other hand, the curved lines show the non-linear output when applying gamma correction. Now when the valve is opened just a fraction only a tiny fraction ofwater is allowed to pass through, moreover, when the valve is opened twice as wide the amount of water allowed to pass through is nowhere near double as it waspreviously. While this nonlinear relationship may seem odd, when gamma correction is applied the colors of the images look much more realistic or correct. See.

    ColorUsing the actual part of the color sensor, the part that measures how much red or green or blue, was actually a bit disappointing. The color sensor uses narrowband colorfilters to get the individual readings for the red, green and blue channels. As it so happens, the output of the LEDs do not match the filters and so if the green channelgets a little red and blue light too (and theres some green in the red channel, and green blue channel as well), so for trying to calibrate colors its a bit of a mess. As aresult I just ended up using the clear channel to make all the measurements and just do it one color channel at a time.Pixel-to-Pixel ContrastAs you may have noticed, the waffle grid does not perfectly isolate the light from one pixel, instead some light bleeds through. This is partly from the semi-opaqueness ofthe painted foam and also partly from the slates where the pieces interlock.

    I attempted to measure this with the color sensor but with the acrylic in place the light leaking into the neighboring pixels was at the noise floor of the sensor. I ended uptaking off the acrylic and measuring the pixels without it in place and the measurements indicated about a (100-150):1 difference in optical power between the pixel ON inthe middle and the pixels directly next to it.For most realistic images this isnt very noticeable but it does mean that pixels are talking to one another and the colorswere seeing arent exact matches of the colors we want to display. Its more noticeable with abstract or binary-type patterns. Heres some checkerboards whichillustrates this effect.

    Step 14: Project Meta Data

    This is a bit like the bonus features on a new Blu-Ray. I included a little extra info at the end of my last Instructable so I thought I'd do it again.

    I shot most of the footage with the Pentax Q camera I won in the last Instructable ContestThis also means most of the original footage is 1080p rather than the 720p I was working with before.

    I started down the road of building LED pixel panels back in 2010 when I bought my first Arduino and a bunch of ShiftBritesI upgraded to Adobe Premiere for my video editingI'm still using Microsoft PowerPoint for annotations and markupI used a free font called "KG Second Chance" for the title, and "Denne Marker" for the text. Get in touch with me through my website leonelabs.com.

    Shout out to the open-source, DIY, maker community. As always, this wouldn't have been possible with you.

    Final Note:I've been pushing hard to try and get this project finished by the deadline for the Epilog Laser contest and the Battery-powered contest. It seems I made it justunder the gun, so If you enjoyed please show your support with a vote. Thanks!

  • http://www.instructables.com/id/PixelBrite/

    Related Instructables

    PixelLux- A 64Pixel RGB LEDVideo Screen byajdi123

    Cyberpunk Wigby GadgetGears

    RGB LEDSculpture byamartinez39

    Arduino /ProcessingAudio SpectrumAnalyzer byKeanan

    Buzz WireAlarm Clock byhertzgamma

    Pumpktris - TheTetris Pumpkinby HaHaBird

    Advertisements

    Comments49 comments Add Comment

    Knight Lamune says: Jul 21, 2013. 4:12 PM REPLYAnother future "shut up and take my money" supporter for a kit reporting in. =o

    MCUman says: Jul 18, 2013. 10:51 AM REPLYUtterly AMAZING!!! Well Done!! Where do I get the kit?

    LeoneLabs says: Jul 18, 2013. 4:55 PM REPLYHaha, well I'm glad you asked. This would make a great kit and its something I've been pondering for a while. There's lots to consider but I think with alittle more work and some social support from the community I can make something happen, so tell your friends and stay tuned for future updates.

    svsoke says: Jul 21, 2013. 1:12 PM REPLYMaybe you should look at starting a kickstarter campaign?

    kingofrandom92 says: Jul 19, 2013. 8:13 PM REPLYI would be down for a kit :) this would look perfect in my basement bar hangout does it go to music? that the be the awesome

    LeoneLabs says: Jul 20, 2013. 1:58 PM REPLYWith some software you can stream out music visualizers. The PixelPal software lets you stream anything you can see on your desktop, so youcould use any itunes or custom visualizer software and have it show up on the PixelBrite. I tried out the Madrix 2 software which has some funvisualizer effects.

    kingofrandom92 says: Jul 19, 2013. 8:13 PM REPLYI would be down for a kit :) this would look perfect in my basement bar hangout does it go to music? that the be the awesome

    Tspherix says: Jul 20, 2013. 11:15 PM REPLYBeautiful! About the Kit. Let me know. Tspherix.com

    connor_802 says: Jul 20, 2013. 5:57 PM REPLYAnd/or skill level

    connor_802 says: Jul 20, 2013. 5:57 PM REPLYFirst of all... Awesome. Second... How much is this project going to cost and how much time?

    Makedo says: Jul 20, 2013. 10:30 AM REPLYI was wondering if you had a plug in back board and each square was like a Lego block that plugged in. If one failed all you have to is unplug it. and put anew one in. I was looking at it and wondering about hexagons or octagons where you can get more fluid angles . how much heat does a block generate?

  • http://www.instructables.com/id/PixelBrite/

    LeoneLabs says: Jul 20, 2013. 2:00 PM REPLYThat an interesting idea. Some other shapes would be fun to try. The PixelBrite generates almost no heat, the LEDs are cool to the touch. This isn't like alightbulb that gets hot. The power supply may get a little warm but overall heat/fire danger isn't an issue.

    Thaisa says: Jul 20, 2013. 1:15 PM REPLYI'm stunned by how much passion and effort you putted into this project. it looks amazing! :oCongratz and thanks for sharing!

    spl928 says: Jul 20, 2013. 8:50 AM REPLYBeaytiful ,

    lux4x4 says: Jul 19, 2013. 10:08 PM REPLYGreat job!! Great idea!! Good! I suppose do you have a cnc???

    syti55 says: Jul 19, 2013. 7:17 PM REPLYThe perfect valentines gift! I got a year to build this so it's time to hit the shops hahaha thank you man!

    NoseyNick says: Jul 19, 2013. 4:33 PM REPLYGorgeous! My kids and I have built a 12x12-pixel WS2801 dance floor, end target 24x24 pixels. We've done some basic scrolly text and a few prettyanimations, but nothing quite this cool! Ours also weighs a tonne, takes 2 people to move just the 4ftx4ft 12x12pixel section, and a minivan to transport it. Ican see why you went for the foam! We're possibly looking for a compromise, something more danceable than foam but not as heavy as the wood we'vebuilt our waffles with :-/Nice work! Gets my vote!

    braxtron says: Jul 18, 2013. 12:36 PM REPLYDJJules: Where did you buy 1000 and how much was it?

    LeoneLabs says: Jul 19, 2013. 12:06 PM REPLYThere are lot of Chinese vendors which produce similar WS2801 LED strands which, at wholesale prices can be acquired for quite a bit less than theones from Adafruit.

    bkmosch says: Jul 18, 2013. 6:39 PM REPLYWow... super project and write-up!I'll bet that painting the foam pieces with silver would do it in 2 or 3 coats. Definitely less than 7. It contains metal particles which should be far more opaquethan the pigment in white paint. Also, silver shouldn't affect the hue of the LED colors (just as white doesn't). Now I'm curious about this and will have to try itsometime.

    LeoneLabs says: Jul 19, 2013. 12:05 PM REPLYThis would be a interesting experiment, I'm curious about the results as well. Early on I thought I might try aluminum foil but the couple of experiments Itried indicated I wanted a more diffuse (scattering) surface rather than a purely reflective (specular) one.

    pwessels1 says: Jul 19, 2013. 1:21 AM REPLYVery cool! In this way, with some materials with more strength you could even make a floor piece?

    LeoneLabs says: Jul 19, 2013. 12:02 PM REPLYYou know I think you could, but it would challenging to get it right.

    bigbaumer says: Jul 19, 2013. 5:46 AM REPLYNot that impressive... we've been using pixel walls for a while. Our latest installation is in the Science Museum of Virginia. We're currently working on a DDR-type pixel floor with 288 individually addressed pixels.

    http://www.roto.com/Portals/0/SMV%20Boost%20Front%20Page.jpg

    bigbaumer says: Jul 19, 2013. 5:57 AM REPLYIn all seriousness though... this is pretty amazing. I do this with a team of 10 people, and you have done this all by yourself. Pixelpal can actually help usout. Thanks for sharing!

  • http://www.instructables.com/id/PixelBrite/

    LeoneLabs says: Jul 19, 2013. 12:01 PM REPLYThanks for sharing, that looks like a great exhibit. I hope you can find some utility from the PixelPal app, I'm definitely looking for more feedback/betatesters.

    Storesnurr says: Jul 19, 2013. 6:00 AM REPLYHi, man!You should put some small switches on each pixel so the start to glow when you press them.I'm actually planning to make a dinner table out of these panels and it would be awesome if the pixels started to glow when I put a cup or a plate on them.

    anneangersbach says: Jul 19, 2013. 3:26 AM REPLYholy shizzles, that is amazing! Also just the introduction is so well written it made me smile :DI wonder how many tools/resources one could ditch and still make one that looks amazing.

    markmoran says: Jul 19, 2013. 1:12 AM REPLYWow. Incredible instructable! You have set a new bar for thoroughness and detail in every aspect of the design and creation. Incredibly impressive.

    braxtron says: Jul 18, 2013. 12:02 PM REPLYWhy are there black lines between the pixels with no waffle grid present? Shouldn't the entire area be lit? Thanks for the info.

    LeoneLabs says: Jul 18, 2013. 5:00 PM REPLYIt's a bit of an optical illusion, the LEDs are illuminating the whole area but they are spaced far-enough apart that the brightness fall-off appears as ablurry line. If the LEDs were moved closer together the blurry line would be less apparent.

    void_main says: Jul 18, 2013. 10:51 AM REPLYNice! Did you think about implementing Conway's Life? The resolution may be on the low side though... http://en.wikipedia.org/wiki/Conway's_Game_of_Life

    LeoneLabs says: Jul 18, 2013. 4:49 PM REPLYThat's a good idea, I'll have to try it now! I'll let you know how it turns out.

    Bibbern says: Jul 18, 2013. 12:43 PM REPLYWow! Very cool project!

    nicolasjara says: Jul 18, 2013. 12:28 PM REPLYWowowowowowooow. That's amazing.

    Brian Henderson says: Jul 18, 2013. 11:31 AM REPLYThis is perhaps the best Instructable I have ever read! Amazing video, very clear instructions, great photographs, and fascinating content! Thank you somuch for posting this!

    biglabrat says: Jul 18, 2013. 8:28 AM REPLYGreat job! I am going to share this with my Technology Class.

    DJJules says: Jul 18, 2013. 7:42 AM REPLYAwesome Instructable! I have 1000 WS2801 LED strings of the 12mm strings from China. Now... I have a project to go with them.Great Job!

    Jules

    scorp76 says: Jul 18, 2013. 7:10 AM REPLYBloody amazing craftsmanship!!!

    Wheatridge says: Jul 18, 2013. 6:56 AM REPLYA rather ambitious project. Thank you for sharring.

  • http://www.instructables.com/id/PixelBrite/

    iamnoskcaj says: Jul 18, 2013. 6:32 AM REPLYI LOVE YOU! I've wanted to make something like this for years. I saw an art installation once that did this impromptu on the street. it didn't have it's ownlighting... instead it went over a flat screen television, and was absolutely stunning. I'm SO going to make this. Maybe one for the wall and one for a table.Awesome work! Thanks so much for sharing!!

    Honus says: Jul 17, 2013. 11:32 PM REPLYOutstanding project!

    agis68 says: Jul 17, 2013. 4:34 AM REPLYLove love love it!!!!!! Awsome job and very good instructable!!! Voted

    sudo_sandwich says: Jul 16, 2013. 6:19 PM REPLYAmazing...These would add lo-res charm to any room or event. Kudos!

    Nicapizza says: Jul 15, 2013. 7:02 PM REPLYBeautiful. What song in the video?

    LeoneLabs says: Jul 16, 2013. 11:26 AM REPLYJust added the music credits:Miike Snow - Black and BlueThe Faces - Ooh La La

    DaShroom says: Jul 16, 2013. 5:37 AM REPLYYour build is awesome, but your software is on a whole new level of awesome :-D

    Congrats on the awesome build :-D

    karlpinturr says: Jul 16, 2013. 5:32 AM REPLYNice idea - and beautifully executed!

    Before reading properly, I immediately thought of this http://tonematrix.audiotool.com/ (originally posted by Kiteman(http://www.instructables.com/community/Cute-musical-time-waster/) on Oct 5 2011, but the link he gave is no longer valid, though it does let you clickthrough to the new location).And then I remembered EvilMadScientist's Octolively (http://archive.feedblitz.com/177238/~4058518), and wondered if you'd managed to combine the two...Obviously not, but maybe you or someone else with more resources and skills than I have might want to have a go..?

    Mackramer says: Jul 15, 2013. 8:49 PM REPLYCool project. We also love the music choice!