Dancing lights is an interactive sensitive light installation where 180 (was 300) programmable LEDs in a tube filled with crushed glass responds to movement by sensing the induced voltage from static electricity stored in people into an old TV antenna.
Video demo from Oslo skaperfestival 2022 at Deichman library
Youtube short showing basic functions, no audio
120 of 300 LEDs are currently not working since I accidentally pulled off a solder-pad. Will probably have to empty it of glass to fix. The problem is in the top.
To filter away noise the arduino ground has to be connected to ground via a capacitor (type Y). I currently solve this by using an extra power brick for a Thinkpad laptop that happens to have one built in.
The long wire for the antennae is acting like an antenna as well and merges the signals.
Right now it flickers quite a bit, I should look into altering the code to reduce that. (Perhaps blur or filter harder?)
- The glass shard filled LED diffusor tube is inspired by Invento3Ds Instructable: Glass Stone LED Tube
- The motion sensor is based on Capacitive touch Arduino playground: Capacitive Sensing Library by Paul Badger and My own lesson material on pulldown and EMC noise
- It uses the Arduino FastLED library to make the pretty light patterns and Scott Marleys youtube videos were priceless
Purchased in or imported to Norway. NOK = Norwegian kroner.
- 300 WS2812B GRB LEDs on a 5 m tape strip IP30 5V (60/m). WS2812B GRB ~$10 from Aliexpress
- 1m Ø50 mm Acrylic tube 383 NOK from Sløjd-Detaljer
- Used 2 kg 4-10 mm size crushed glass, 175 NOK for 3 Kg from My stone
- 3D-printed endcaps for the tube, modeled in Fusion360 STL Printed for free on a Pruse at Bitraf makerspace
- Copper tube, Ø15mm wall thickness 1.5mm, Recyled scrap.
- 2 5V 8A Power bricks, ~10$ each from Aliexpress
- 3 pin connector cheap from Aliexpress
- 2 pin barrel jack connector cheap from Aliexpress
- Base material TBD
- Vero-board
- Capacitors
- Antenna from flea market (According to its manual it's a FIA 137 47-68MHz, 87,5-104MHz or 174-230MHz depending on expended length but I doubt it matters in my case.)
Diameter 15mm => cicumference 47mm, 5 strips that are 10mm wide should not work in theory but works in practice since the edges don't follow the curve of the tube perfectly. The tape attatches well to the tube. Didn't feel there was need to secure it further.
Note that I staggered the ends of the strips. They are soldered together like as if they still were one long strip.
Default configuration for the LED coordinates.
Alternative LED coordinates increases the axial resolution from 60 leds / m to 300 leds / m.
I'm using an imported Chinese Arduino Nano with the CH40 USB to transistor logic chip. Remember to select "Old Bootloader" under processor. Herre you can download drivers for the chip
Fusion model (online view, can be downloaded)
STEP file (right click and "save link as" or it will open as text
The idea is to clamp the copper tube tight so that any load on the acrylic tube is transfered to the copper via the endcaps and not via the LEDs. I also want it to cover the ends of the led strips.
Didn't fit very well. Had to file off some plastic to get it over the edges of the LED_strip tape and since I did it didn't clamp as well. Compensated with white electricans tape. I consider adding metal hose clamps.
Concept of a top cap to hide the end and allow airflow through the pipe. Allows space for a large capacitor inside the cap, for the end of the strip.
Slim version of top cap to hide the end and allow airflow through the pipe. Requires trimming the copper pipe tight to the plastic clamp. No space for capacitor here, needs to be attached to the other ends of the strips.
Fan mount for bottom
For holding the power bricks in place.
Current code using both antennas
"Pacifica" and "Fire2012" are also nice when copied around the column.
I observe that moving the leds along a full step at a time isn't very smooth. As in if I turn the next led on 100% as I turn the last to 0%. Some X-fading would be much better. Perhaps I can increase the pixel resolution articficially and spread the light between two pixels proportionally, like anti-aliasing?
Perhaps I can use blur or smoothe harder?
I have not started on the code for a beat-sensor like I had intended. I have a basic idea but no code yet. If I smoothe the same signal differently hard and compare when they cross I should be able to track a frequency. I can track amplitude also if needed but should wait with it. I have no ready plan for what to show if I mananage to track the beat. Figure that out first?