Work

05 / 06Light Sculpture

Loading model000%

Project 05

Light Sculpture

Programmable optical sculpture integrating spatial design, CAD, machining, embedded electronics, and applied optics.

Click a component to isolate it

Drag to orbit · Scroll or pinch to zoom

ProjectNo. 05 of 06Mechatronics / optical art

The Light Sculpture

Printed atD.P.E.A.Santa Barbara, Calif.

Programmable optical sculpture integrating spatial design, CAD, machining, embedded electronics, and applied optics

The finished sculpture with the LEDs off: clear acrylic rods of different heights standing in the black base, with the knob on the front.
Light Sculpture - selected project documentation image.
Type
Mechatronics / optical art
Core tools
SolidWorks, mill, lathe, Arduino
Systems
Mechanical + electrical + software + optics
Figure 1. Early top-view layout used to establish rod positions and geometry.
Top-plate template: rod positions marked in green, blue and white inside the 4 in square, with pole coordinates noted in pencil.
Annotated drawing translating the artistic pattern into measurable positions.
Hand plan documenting rod coordinates and design intent.
The finished sculpture mid-show: four acrylic rods glow green end to end while the other rods, taller and shorter, stay unlit.
Breaking-wave painting by an uncredited artist, kept as design inspiration; the rod plan uses the same blue, green and white.
Figure 2. Digital rod-array simulation showing height, position, and color relationships.
Top-view simulation used to verify rod locations and radial relationships.
Alternate simulated color/height arrangement used during iteration.
Top view of an alternate layout used to verify location relationships before machining.
Figure 3. Machined enclosure/base used to support the top plate and internal electronics.
The machined aluminum base before finishing, with its front holes drilled.
The aluminum top-plate blank, hand-marked 1–4 for orientation.
Lathe operation used to machine the user-interface knob to drawing dimensions.
Dimensioned drawing specifying the knob geometry, knurl, chamfer, and potentiometer press fit.
Raw aluminum stock for the same DPEA base and top plate: a square-tube section and a flat plate blank, before drilling and anodizing.Photo: Lindsey Rios, DPEA ’24
Another DPEA student's finished light sculpture, LEDs off: the same black-anodized base and front knob, with that student's own rod layout.Photo: Lindsey Rios, DPEA ’24
Another student's drawing of the same DPEA kit rod: Ø0.250 in clear acrylic, Ø0.120 x 0.180 in LED hole, manual lathe; 3.875 in version.Photo: Emily Diffenderfer, DPEA ’26
A benchtop manual lathe with a small workpiece in the chuck beside a quick-change tool post.Photo: Emily Diffenderfer, DPEA ’26
Freshman-year shop training (not part of this project): an end mill cutting a small aluminum block clamped in a mill vise.
Freshman-year shop training: sizing an aluminum die blank on a benchtop mill, reading position off the digital readout.
Freshman-year shop training: tapping the mill's drawbar with a dead-blow hammer to unload the collet during a tool change.
Figure 4. Finished rod bundle and electronic connection work from the project.
Physics lab: lenses projecting a refracted image of a window onto paper.
Thin-lens equation practice: a ray diagram solved for image distance and magnification.
Same DPEA controller PCB used in this kit, mid-assembly: 14 resistors and the potentiometer soldered in, before the header pins and LED wires.Photo: Lindsey Rios, DPEA ’24
Same DPEA controller PCB after wiring: numbered lead pairs run to heat-shrink-sleeved LEDs that will light the acrylic rods from below.Photo: Lindsey Rios, DPEA ’24
A breadboard practice circuit with two LEDs and resistors, powered from a bench supply through alligator clips.Photo: Emily Diffenderfer, DPEA ’26
Figure 6. Assembly drawing documenting the rod array, top plate, base, and component relationships.
Arduino code: LED pins configured as outputs, a table of brightness levels, and LEDs faded in groups.
Shared DPEA Light Sculpture code template, one student's version: loop() checks the mode, then runs a calm or party show of fades and blinks.Photo: Emily Diffenderfer, DPEA ’26

The codeFour light shows and a night light, chosen by one knob and run by software PWM on 14 LEDs.

Board
Arduino Uno with the DPEA LED shield
LEDs
14 on pins 2–13, A0 (14) and A1 (15); 7 blue, 7 green
Brightness
Software PWM: 10 ms period, duty = brightness³
Knob
Potentiometer wiper on A5 (0–1023)
On / off
The knob's built-in switch on A4, INPUT_PULLUP
Random seed
randomSeed(analogRead(A5)): the knob position seeds the party show
The modes · run one and the page glides up to the live model
SelectModeWhat the code doesRun
Click offOffturnOffAll()The knob's switch is open: every LED off.
Knob band 1Calm showrunCalmShow()The lower four rods breathe in and out over 2 s each way, then the upper four. Then pairs sweep up and down the full order, groups fade in turn, and every rod cross-fades to its mirror.
Knob band 2Party showrunPartyShow()Everything fades up and strobes four times, twenty random rods flicker out one by one, then random flickers over a full field of light and a fast chase from pin 2 to pin 15.
Knob band 3Final showrunFinalShow()Three lit rods chase around the ring of eight, stepping faster from 600 ms to 25 ms. Then the two corner arcs sweep together, each round shorter than the last.
Between bandsDead bandrunDeadBand()A gap between shows: all LEDs off, and any running show returns at its next check.
Knob band 4Night lightrunNightLight()All 14 rods glow steadily. Turning the knob further clockwise dims them, along a gamma-3 curve.
LightSculpture.inoMy sketch on the DPEA template (4.1.24): the shows and patterns193 lines
/* Light Sculpture Template - Written by DPEA Staff and __________ <--(add your name) - Updated 4.1.24*/

#include "LightSculpture.h"

// Add your Global Variables and Arrays here:
const byte lower[4] = {9, 10, 2, 3}; const byte upper[4] = {14, 15, 7, 8};
const byte Order1[14] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
const byte Order2[14] = {15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2};


// Main Functions (setup & loop) - DO NOT EDIT THESE!

void setup() {
    setupLightSculpture();
}

void loop() {
    updateMode();

    if (mode == offMode) turnOffAll();
    else if (mode == nightLightMode) runNightLight();
    else if (mode == calmMode) runCalmShow();
    else if (mode == partyMode) runPartyShow();
    else if (mode == finalMode) runFinalShow();
    else if (mode == deadBandMode) runDeadBand();
}

/* ---------------------------------- Show Functions ----------------------------------*/

void runCalmShow() {
    fadeLowerAndUpper(2000);
    upDown(200);
}

Component directory4 parts · choose one to isolate it in the model

Machining + Mechanical Assembly

Acrylic Rods + Optics

Embedded Control + User Input

Next edition · No. 06Luminism Shadow Box