LED Music Sculpture
Add visual effects to your favorite music! This LED sculpture dances along to the music using the built-in microphone on the Adafruit CircuitPlayground Bluefruit. With knobs to control the brightness, color, and sensitivity level, this fun light fixture works at a variety of volumes and light levels.
Supplies
Electronics:
- Adafruit Circuit Playground Bluefruit (Link Here)
- 3x Potentiometer (Link Here)
- 2x Adafruit Neopixel RBG LED Strips (Link Here)
- 9x Breadboard jumper wires
- Micro USB cable
- Portable battery (if you would like to make the project wireless)
Case/Housing:
- Inside of paper towel roll
- Cling wrap
- Light diffusion paper (or wax paper)
- 3x12 inch frosted acrylic tubing (2 and 3/4th inch inner diameter)
- Plywood - 1/8th inch thick (for case)
Other Supplies:
- Hot glue gun and sticks
- Laser cutter
- Paint, stain, or any other decorations
The Housing
The first step is to create the housing for your light sculpture. There are two aspects to the housing, the top cap and the main body. Both were constructed using a trotec laser cutter and 1/8th inch baltic birch plywood. The main body was created using boxes.py and then edited using adobe illustrator to include cut-outs for the potentiometers and the acrylic tubing as well as the two circles for the top cap.
I have attached the .ai file below, but feel free to create your own if there is a box design you like better on boxes.py. Use the attached file to size and position the additional cutouts on your own custom design. You can also paint the box whatever color you'd like!
Once you have laser cut your parts, the box assembly can go together with no glue! The fit should be tight enough that all the pieces come together nicely. For the top cap, you will want to use some hot glue (or wood glue) to attach the smaller circle to the center of the larger one. The smaller portion will go inside the acrylic tube while the larger will sit on top.
The Electronics
Now that your enclosure is constructed, it's time to get to the inner workings of the project! Given that this project uses two NeoPixel strips and three potentiometers, the cabling can get pretty hectic, but don't worry! We'll walk through the setup and you can reference the attached diagram above (also attached as a pdf for download).
The first step is to wire up the NeoPixel strips. Both of the red wires on the strips will go to VOUT and both of the black cables will go to the GND or ground (it doesn't matter which GND!). The last wire, the white one, is the signal for the strip. One of these will go to pin A1, and the other will go to pin A2. If you want to make sure everything is working before continuing, go ahead and download the code.py file below to your CPB. You the lights should dance along to music right now, you just won't be able to control brightness, color, or sensitivity (yet that is!).
Next, let's set up the potentiometers. There are no colors indicating which pin is which on the potentiometers, but I have included a helpful graphic that shows what each pin on the potentiometer does! #1 is VCC or power - but it HAS to be a 3.3V pin, not VOUT. The first pin for each of the potentiometers will be wired to one of the two 3.3V pins on your CPB, these can be shared, but it may be easier to wire two of them to one of the 3.3V outputs and the third to another. The center pin, #2, on each of the potentiometers is the signal pin. The first potentiometer will be for brightness and will be wired to A3, the second will be for sound sensitivity and will be wired to A4, and the third will be for color and will be wired to A5. Lastly, all of the potentiometer's third pins will be wired to one of the ground pins, and you're all set!
It gets a little bit messy here and can be helpful to uncomment some of the print statements (already in the code) which show the values we need from the potentiometer. This will help you troubleshoot if some of your wiring is off!
Downloads
Assembly
The picture attached above shows how I attached the LED strips to the paper towel holder. I first laid the strips on the side and wrapped both over the top, then I wrapped the whole thing in cling wrap to hold it together. Next, I wrapped it in diffusion paper and insert it into the acrylic tubing. The top cap can then be put on top and the bottom can be put into the housing.
Next, you need to glue the potentiometers in. Place the knob through the big hole, and the small stabilizer should go into the smaller hole next to the larger one. Once the potentiometers are all installed, nestle the CPB into the housing, and put the acrylic tube on top.
I also included the file for the potentiometer knobs I 3D printed, it was found at: https://www.thingiverse.com/thing:4725626
These are totally optional, but can add a nice touch if you have access to a 3D printer! These are your last step in the assembly if you decide to add them!
The Code
The code for this project was adapted from code found at: https://learn.adafruit.com/adafruit-circuit-playground-express/playground-sound-meter
I edited the code in order to include the NeoPixel strips, as well as adjustability to the sensitivity, brightness, and color.
Re-name the attached file to code.py, download it onto your Circuit Playground and you should be all set to party!