input · lab_txt TXT

Lab

Interactive experiments and technical explorations: things I'm building, testing, or just curious about.

input · grid_txt TXT

EXPERIMENT 001 · KINETIC LIGHT · SIM FOR A HARDWARE BUILD IN PROGRESS

GRID — a lamp you sculpt

GRID is a lamp: sixteen frosted cylinders in a 4×4 bed, each on its own lead screw with its own tunable-white LEDs. Hold a cylinder, in the app or straight in the 3D scene, and it rises. Hold it again quickly and it lowers. Each cylinder is one number: height, brightness and color temperature all come from it. Low cylinders glow like a 1800 K ember; the light only cools toward the slider's ceiling as they rise.

There are static set-points (Full, Night, Off, plus anything you sculpt and save) and four motion patterns: wave, ripple, fireplace, noise. The motors are simulated too, 28BYJ-48 steppers with trapezoidal ramps, so everything on screen moves at the speed the real lamp would.

Both views below run off the same state. Change something in the app and the lamp follows. Works the other way too.

16 PTS · Ø50MM COLUMNS · 60MM PITCH · TRAVEL 60/110MM · 1800–6500K

grid_photo · build_log VIEW
// BUILD PHOTO PENDING HARDWARE IN PROGRESS · SLOT RESERVED
help · ctrl_howto TXT
  • TAP a pad and its cylinder steps 10 mm · HOLD and it travels until you release
  • RE-HOLD quickly to reverse and lower
  • FULL / NIGHT / OFF are set-points · sculpt something and SAVE it as P1–P3
  • MOTION runs patterns (the grid becomes read-only) · TEMP sets the white-point ceiling · RANGE clamps travel
grid_ctrl · app_sim VIEW
Studio
connected
Tap steps 10 mm · hold to jog · quick re-hold reverses
Speed
Temp
2700k
Range0100
16 pts avg 0% 1800k
help · studio_howto TXT
  • DRAG to orbit · SCROLL to zoom · DOUBLE-CLICK returns to the hero cam
  • TAP / HOLD a cylinder in the scene for the same steps and jogs as the app
  • HERO / TOP / LOW camera presets · AUTO-ORBIT spins the scene slowly
  • 60 / 110 MM switches the build-plan travel · stroke time updates live
grid_view · studio_3d VIEW
Studio · live
Drag to orbit · scroll to zoom · hold a cylinder to raise it
COOKING SIM · THREE.JS LOADS ON APPROACH…
sys · telemetry SYS
AVG LEVEL0% AVG COLOR1800K IN TRANSIT0 / 16 MODESTATIC · OFF
process · control_design TXT

Why the controls work this way

Jog, not slider. Hold means keep moving; release means stop. And the app draws where each cylinder actually is, not where you told it to go: anything still traveling gets a pulsing rim. I didn't want a screen showing a lamp that doesn't exist yet.

One number per cylinder. Height, brightness and color are locked together on purpose. Dim light is always warm; there's no way to build a low, cold scene, and I consider that a feature. Night mode caps the ceiling at 2700 K, and the cap eases in rather than snapping, the way firmware would fade it.

The motors set the rules. Range clamps travel for everything: set-points, patterns, your fingers. And the patterns run through the same motor model as manual holds, so a fireplace flicker can only ever move as fast as a lead screw turns.

out · the_build TXT

The sim exists so the hardware decisions get made cheaply. Jog feel, 60 vs 110 mm of travel, the shape of the warm-to-cool ramp, whether the patterns still read at real motor speed: all decided here, before committing to parts.

Some questions only the build can answer. How loud are sixteen steppers in a quiet room? Does real frosted plastic scatter anything like the shader? How low can the LEDs dim before the ember falls apart?

▸ NEXT · BUILD PHOTOS LAND IN grid_photo AS THE HARDWARE COMES TOGETHER

queue · exp_002 SYS
MORE COOKING NEXT EXPERIMENT LANDS HERE