Glass Block Table Controller (Box 1-3)

DMX Light Control, Color Strobes


Background Back to Contents

When warehouse 23 was a place that existed in Boston, there was a coffee table made out of glassbricks. Below its translucent surface were several full color LED light fixtures. When lit up, it looked like an oversize stack of Jolly Ranchers. The table had been built and programmed by friends who lived there, though I'm not specifically sure who. There was a simple Java web interface running on an adjacent laptop to control its color. I expressed interest in writing pattern code for it, but before I had my chance, my friend Frostbyte died and warehouse 23 fell apart. Shortly thereafter, I moved to Boston and joined my friends in helping to clean out the space. Being inadequately endowed to repair what really mattered, I managed to salvage the table, but the controller was lost.

I spent that winter in early 2006 (while half heartedly looking for a job) working on a new controller for the dark table that now sat in the living room of the Bennett Street Home For Wayward Boys (and Girl) where I'd come to settle. The controller is called “The Box” for lack of any other name that stuck. It has come in handy for many projects requiring light control. It was designed to output DMX signals to 3 RGB LED fixtures (our living room wasn't large enough to accomodate the full 4 light table). It allows the user to make static color settings to each of the fixtures, fades, and strobes, using 3 control buttons and 3 analog sliders (like from a mixer board). An explanation of its design and function will follow.

Pedigree Back to Contents

  • The first device built, "Box 1", distinguished by the parallel slider arrangement on its face, went missing years ago and is presumed effectively non-existent.
  • The second, "Box 2", lives with my friend Sage in Boston.

    Once the controller had been built, the table was again functional. It lasted for several years, eventually settling in the Psi Trance Loft at Vermin Street until its demise at a party when an errant drink destoyed two of the light fixtures. The controller itself has made appearences in an ever evolving series of art installations since that time. For the interested, a partial listing, and perhaps some photographs:

    • July 2006: Firefly. The year of mud. The glassbrick table made an appearance at this event, and I learned the consequences of making heavy art.
      (Glassbrick table) (Glassbrick table and Josh)
    • October 2006: Playa Del Fuego. The control box was used in an interactive installation entitled "Fnorest", which really could have its own webpage. Fnorest was a geodesic dome with a colored array of strings hanging from the ceiling, filled with fog from a smoke machine, and strobing architectural lighting. It was conceived of and built by Sage Kochavi, Dustin Ledbetter, and Joshua Krueger quite accidently in one of those you-got-peanut-butter-in-my-chocolate moments. It is possible the photos below came from that time.
      (Fnorest Images) (Fnorest Image)
    • November 2006: NYC Decompression. Fnorest once again made an appearance here, on the roof of a warehouse in NYC.
      (Fnorest Image)
      (Fnorest Image)
    • May 2007: Playa Del Fuego. The controller was used to power the "Zen Tables" in a lounge-like installation. The Zen Tables are three differently shaped short kneeling tables with transparent surfaces covered in sand. Designs drawn in the sand are highlighted by the colored lights beneath. The tables were designed by Dustin Ledbetter and built with the help of Doug Ruuska. I do not currently have photographic evidence of this project.
    • August 2007: Burning Man (The Green Man). The Zen Tables were set up in a Hookah Dome hosted by Kamp KAOS of the Boston Hive.
    • August 2008: Burning Man (The American Dream). The controller was used in a blinky dome at Kamp KAOS.
    • October 2009: Boston Decompression Party at Club Therapy in Providence RI. The controller was used to run the lights for an interactive installation built by Sage Kochavi entitled, "The Black Whole". This peice involved strobe lights aimed at geometric patterns painted on the surface of a 6 foot diameter revolving disc shaped table.

Specs Back to Contents

12V DC Input via wall wart. DMX Out via RJ45. The DMX signal is RS-485 at 250kbps consisting of 19 DMX channels (a dummy channel, 8 bits of Red, Green, and Blue for each of 3 lights (addresses 1-9), and then the data from addresses 1-9 repeated just for fun). This partial DMX packet is sent out every 5ms. It's been used with several Color Kinetics fixtures, including PDS-150's, Colorblazes, and (x).

Hardware Back to Contents

The DMX is produced by an electronic circuit consisting of the following modules: Power regulator, power sensor, cpu, transceiver, mode lights, buttons, sliders.

  • Power Regulator Back to Contents

    (Power Regulator Schematic)
    The box doesn't draw a lot of current, so a simple linear regulator (7805) provides sufficient power without getting hot. There are some caps as recommended and a big fat cap that keeps the voltage up for a few (5) seconds after power down. The voltage divider on SNSE was chosen to work with the 12V wall wart that I was using and may not work for the full input voltage range as indicated. Because of this, I've occasionally had to pull the voltage supervisor off the board to get the circuit to run.

  • Power Sensor Back to Contents

    (Voltage Supervisor Schematic)
    SNSE is monitored by the voltage supervisor to give the cpu some advance warning if the user has switched the unit off. Because of the fat cap, the cpu has an eternity during which it can send out a DMX packet to turn off the lights, giving the off-switch a more intuitive response than merely ceasing to send packets.

  • CPU Back to Contents

    (CPU Schematic)
    The CPU is a PIC16F84A 8 bit microcontroller driven by a 20MHz resonator. It has a programming header for the PICkit 3, and a reset circuit. Every 5 ms, it reads the sliders, debounces the button inputs, calculates what color the lights should be, sets the mode light, checks the voltage sensor, and sends out a DMX packet.

  • Transceiver Back to Contents

    (Tranceiver Schematic)
    The MAX490 does RS-485 level translation for the DMX output signal.

  • Mode Lights Back to Contents

    (Mode Light Schematic)
    There are 8 LEDs on the front of the Box that are driven by a 3x8 decoder to indicate to the user which mode the controller is in.

  • Buttons Back to Contents

    (Buttons Schematic)
    There are 3 buttons on the front of the Box that allow the user to change modes and submodes. An additional button, on top of the box, acts as a reset. A detailed explanation of their function is printed in the instructions.

  • Sliders Back to Contents

    (Slider Schematic)
    There are three 100K potentiometer type sliders on the front of the box for user input. These sliders are read using an RC timing circuit by first charging the caps using the PIC output drivers, switching the drivers to tristate / input mode, and measuring the amount of time the caps take to discharge through the sliders in order to register as a 0 input to the PIC. The values chosen here are the result of iterative tweaking rather than design. There are some limited adjustments in the program code to compensate for variations in available hardware, though it occurs to me that it would've been easier to add some pots to the board for this purpose.

  • The circuit is housed in a plastic project box whose face was milled and drilled to accommodate the sliders, buttons, and panel mount LEDs. The box also has an on / off switch with an indicator LED, a reset button, and power and communications wires coming out of it.

    The circuit schematic was assembled using Kicad, a cross-platform open-source schematic and layout capture tool for electronic design. The design does not have a layout as it has been implemented by hand on perf-board in all of its incarnations thusfar.

Software Back to Contents

The software running the Box was developed using Piklab (a graphical development environment for PIC micro-controllers) and the GPUtils toolchain. The current version (Pattern7.asm) is written in PIC assembly.

Instructions Back to Contents

The Box has a complex control scheme that can nevertheless be easily conveyed in abbreviated form to a novice so that anyone can use it. The instructions for Hardware Version 2, Software Version 8 are as follows:

(Diagram of Box's Face)


M = Mode Button
L = Light / Select Button
C = Commit Button
R = Reset Button
S1, S2, S3 = Sliders
0 - 7 = Mode Indicator Lights

Color Key:

R = Red
Y = Yellow
G = Green
C = Cyan
B = Blue
M = Magenta
X = Black
W = White
  • The lights on the front of the box indicate which mode you are in.
  • The reset button (on top) returns to mode 0.
  • Push M to cycle through the following modes:
  1. Panic Mode

    The lights are set to static white at 1/2 intensity. There are no controls in this mode.
  2. RGB Color Selector

    The lights are (as a group or individually) settable using the sliders to choose the red, green, and blue component intensities. S1 = Red, S2 = Green, S3 = Blue. The Light Button toggles between which light(s) to effect in this sequence: All (default), Light 1, Light 2, Light 3, None. A blue flash indicates the selected light. A red flash indicates that no lights are selected. The Commit Button saves the color of the selected light (indicated by a green flash) so that when you switch to a new light, the now unselected light retains the set color.
  3. HSV Color Selector

    The lights are settable using the sliders to choose the hue, saturation, and value components of the color. S1 = Hue, S2 = Saturation (whiteness), S3 = Value (brightness). All of the buttons operate the same as in Mode 1.
  4. Faders / Color Wash

    This mode dynamically fades the lights through a selectable sequence of colors. The overall brightness and speed are settable. Additionally, a third variable, "Phase," can be set to determine how far the adjacent lights are from each other in the pattern. S1 = Brightness, S2 = Phase, S3 = Fade Speed (Can be 0). The Light Button toggles between these fader types: [RYGCBM], [RGB], [CMY], [RWB], [RXGXBX], [RWGWBW], [CXMXYX], [CWMWYW], [RXYXGXCXBXMX], and [Random Sequence]. The Commit Button freezes the entire table at the current color set and returns to Mode 1 with no lights selected. This is an easy way to set a rainbow pattern on the table face instead of having to go through the procedure in Mode 1.
  5. Strobes #1 - Single Color

    All the lights on the table are treated as one. There are 2 flags that effect the way the strobe functions. These two flags result in 4 submodes that can be selected by pushing the Light Button:
    • [In-Phase + Manual Hue]
    • [Out-of-Phase + Manual Hue]
    • [In-Phase + Increment Hue]
    • [Out-of-Phase + Increment Hue].
    The In-Phase strobe flashes the sequence On, Off, On, Off, etc,... The Out-of-Phase strobe breaks the On phase into its component RGB colors and alternates between them, eliminating the Off phase entirely. In other words the sequence: ROn, GOn, BOn, ROn, GOn, BOn, etc,... S1 adjusts the hue in Manual Hue mode and an increment added to the hue every cycle in Increment Hue mode. S2 adjusts the color saturation. S3 is the strobe speed. There are 64 strobe speeds on the S3 slider. For an In-Phase strobe, the frequency follows the harmonic series, 100Hz, 50Hz, 33Hz, 25Hz, ..., 1.5625Hz from S3max to S3min. For an Out-of-Phase strobe, the frequency follows the harmonic series, 67Hz, 33Hz, 22Hz, 16Hz, ..., 1.042Hz. The Commit Button is not used in this mode.
  6. Strobes #2 - Dual Color

    Mode 5 strobes between two selectable hues at the chosen speed and duty cycle. S1 = hue of color 1, S2 = hue of color 2, S3 = Speed or Duty Cycle. The Light Button selects the function of S3. The Commit Button sets 50% duty cycle and sets the function of S3 to speed. This mode is useful for exploring the "Imaginary Colors" (colors outside of the human retinal color gamut).
  7. There is no mode 6.

  8. Mode 7 is a secret.

    From nothing's core, three paces More,
    a flag you'll see, once Left by three,
    one more pace, don't avert your eyes,
    box's face reveals where beauty lies.