The Challenge: Bringing Light to Life
The client needed an installation that could detect visitor interaction through light, trigger complex LED animations across 17 independent strips, and drive physical outputs — all in real time, all day, every day.
The primary hurdles were:
- Ambient Interference:Â The installation is exposed to changing sunlight throughout the day. A fixed lux threshold would false-trigger constantly as ambient conditions shift from dawn to dusk.
- Channel Density: 17 independent LED strips needed simultaneous, flicker-free DMA output from a single microcontroller — far beyond typical 8-channel NeoPixel solutions.
- On-Site Tunability: Animation speeds, sensor thresholds, LED counts, and colours all needed to be adjustable on-site without reflashing firmware — the installation lives in a dynamic environment.
Our Engineering Approach
We moved beyond standard Arduino patterns to deliver an installation-grade system built for 24/7 unattended operation:
Adaptive Lux Baseline
Each VEML7700 sensor maintains a slow-moving exponential average of ambient light via a PCA9548 I2C mux. The trigger threshold is relative to this baseline — afternoon sun doesn't false-trigger, but a visitor's flashlight does. The baseline freezes during active triggers to prevent drift.
17-Channel DMA LED Control
Using OctoWS2811 in Teensy 4.x any-pin mode, we drive 17 WS2815 strips simultaneously via DMA — zero CPU overhead during transmission. The 600MHz Cortex-M7 renders all animations at ~60fps with a single non-blocking show() call per frame.
Charge-Based Game Mechanic
Sensor input charges a central core visualized across 11 pulsing LED strips. At 5% charge, lightbox buttons unlock. Each press deducts charge, fires a trailing animation, then activates a timed relay. Torch buttons provide instant hold-to-activate control with breathing LED indicators driven by a 51kHz ISR.
Non-Blocking Architecture
Zero delay() calls in the runtime loop. Sensor reads are interval-gated at 200ms, buttons are polled every frame (~16ms), and all state transitions use timestamp-based logic. A 3-second startup lockout prevents false triggers during power-on sensor settling. All parameters persist in checksummed EEPROM.
The Tech Stack (Shop the Components)
Interested in building your own interactive LED installation? We use the same high-quality components we sell in our retail store:
- Microcontroller: Teensy 4.1 – ARM Cortex-M7 at 600MHz. The backbone of our 17-channel DMA implementation with OctoWS2811 any-pin mode and IntervalTimer ISR for software PWM.
- Sensing: VEML7700 Lux Sensor – High-accuracy ambient light sensor with I2C interface. Three units behind a PCA9548 mux provide position-specific light detection with adaptive baseline tracking.
- I2C Multiplexer: PCA9548 8-Channel Mux – Allows three identical-address VEML7700 sensors to share a single I2C bus. Channel switching is transparent and adds negligible latency.
- Lighting: Addressable LEDs WS2815 – 12V addressable RGB strips at 60 LEDs/m. The 12V rail allows longer runs with less voltage drop than WS2812B, critical for strips up to 2900mm in this installation.
Full-Cycle Service: Ideation to Handover
Kuriosity didn't just provide the parts — we delivered a complete, site-ready system from initial concept through final calibration:
- Ideation & Feasibility: Mapping the interaction flow, sensor placement, LED strip routing, and power budget across 17 channels.
- Prototyping: Testing adaptive baseline algorithms under real sunlight conditions, validating DMA channel limits, and tuning animation timing.
- Final Build: Firmware development, wiring harness assembly, relay integration, and serial configuration interface for on-site tuning.
- On-Site Handover: Final sensor calibration, baseline seeding, animation parameter tuning, and operator training on the serial command interface.
Work With Us on Your Next Event Activation
Need a technical partner for an interactive or immersive experience? From adaptive sensing to DMA-driven LED control, we turn creative visions into reliable hardware.
[Get a Feasibility Consultation Today]