Introduction: CNC Sculpture With Neopixel

This is a project that I like to call the "Adobe Cloud" because I programmed my lights to CMY colors. It required knowledge of SketchUp 3D software, Breadboarding, Soldering, and general painting and crafting.

The "Adobe Cloud" I created is a aesthetically pleasing hexagonal sculpture that responds to sound volumes, slow pace blue lights for low, medium pace yellow for mild, and high pace magenta for high volume. I wanted to create this to be something interesting that I could look at on my wall when it's dark.

I have provided a material list of all the items that I used, bought, or were provided to me in categories.

There is diagrams for the breadbaording and circuitry as well as the code.

I found this project fun working with Neopixel LED strips, that you can buy from Adafruit Industries.

Here is their link:

Here is the link to the Neopixel strip:

And here is the Library that MUST be included:

If you don't have Arduino software you can find that here:

Step 1: Step 1: Material List


**Work in a ventilated area for soldering**

Breadboard - $5.95

Female breadboard jumpers - $2.02

Female/Male breadboard jumpers - $9.99

Male breadboard jumpers - $5.83

1000 uf capacitor - $4.11

10k resistor - $4.99

Adafruit Neopixel 60 LED strip - $24.95

Mini sound sensor - $8.69

Protoboard - $4.50

Arduino Uno - $26.45

Soldering iron - $8.95

Solder - $5.40

Micro screwdrivers - $10.59

Multi-stranded wire - $7.81

Single-stranded wire - $ 4.00

Header pin - $7.99

5V/2A wall adapter - $7.99

9V Adruino adapter - $1.51

Flush wire cutters - $4.95

Wire stripper - $9.39

Scissors - $5.56

Shrink tubing - $7.35

CNC Sculpture

**CNC Machine was provided to me by my school**

4'x2'x1" foam

2 flute bit

CNC Machine with Rhino software

Sculpture Finish

X-acto knife - $4.49

Wall plaster - $4.28

220 grit sand paper - $8.09

White gloss acrylic paint (may need bigger bottle) - $1.79

Blue matte acrylic paint (may need bigger bottle) - $1.59

Blue parachute cord - $5.02

Velcro - $3.69

Clear tape - $6.45

Disposable lighter - $7.80

Step 2: Step 2: Breadboarding With Code

The breadboarding part of this project was the most frustrating, besides the fact that I had to recreate my Instructables due to accidental deletion of the entire project versus one EMPTY page (pardon the rage).

I have attached a picture of what my breadboard looked like, along with a visual diagram of the integrated pieces.

For the breadboard I used a 10k resistor, 1000uf capacitor (Adafruit recommended), LED light (And then the Neopixel strip), the mini sound sensor, the Arduino Uno, Arduino software, female/male breadboard jumpers, header pin, male breadboard jumpers and a breadboard.

** For the Neopixel strip we (my teacher and myself) took a header pin, with three pins, and attached them to the Neopixel strip with solder and a soldering iron. We then used female/male breadboard jumpers to attach to the header pins, different colored wire for each part (red for 5V power, yellow for input, and black for ground) and once we attached it we used black shrink tubing to keep them together.**

** For the mini sound sensor we had to use a micro screwdriver to adjust the threshold of the sensor **

What made this frustrating was finding code that worked for the project.

I found and adapted code from:

I used this code and adapted it with RGB color codes for the CMY (cyan, magenta, yellow) colors I used in conjunction with the Adafruit library ( example under the buttoncycle Arduino code.

Here is the code:



#define VOLUME_PIN A0

#define PIXEL_PIN 6

#define PIXEL_COUNT 40

float threshold = .05; //Change This

float volume;

Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800);

bool oldState = HIGH;

int showType = 0;

void setup() {

Serial.begin(9600); // For debugging




void loop() {

volume = analogRead(A0); // Reads the value from the Analog PIN A0

//Debug mode




theaterChase(strip.Color(248,8,53), 5); //magenta


else if(volume<80){

theaterChase(strip.Color(18,240,190), 200); //teal



theaterChase(strip.Color(255,236,146), 80); // off white



void theaterChase(uint32_t c, uint8_t wait) {

for (int j=0; j<10; j++) { //do 10 cycles of chasing

for (int q=0; q < 3; q++) {

for (int i=0; i < strip.numPixels(); i=i+3) {

strip.setPixelColor(i+q, c); //turn every third pixel on



for (int i=0; i < strip.numPixels(); i=i+3) {

strip.setPixelColor(i+q, 0); //turn every third pixel off






Step 3: Step 3: the Sculpture With SketchUp and CNC

** The CNC machine, foam, and Rhino software was provided to me by my school as part of the fabrication lab **

This part of the project requires knowledge with 3D software, I used SketchUp, and CNC fabrication knowledge.

In SketchUp I used a 2'x4'x1" rectangle and overlayed hexagonal shape to create overlapping pieces and pushed/pulled the overlapping areas to create interesting shapes that in turn create interesting shadows.

After I created this, I exported a few different 2D PNG graphics, 3D model, and a two scene Animation.

After the Sketchup process, I took this into the fabrication lab and the lab monitor and I processed the 3D model in Rhino to prepare to cut.

** This model took 2.5 hours to cut. Before the piece could be cut, I had to set the CNC table up by plugging in the air holes that were not needed and foam the area on the rows I used that allowed the foam to be suctioned to the table to be cut without moving. We also used a buffer board to not accidentally cut the table, and this ended up being needed as one area of the piece went too low and cut the buffer.

After the piece was cut I had to vacuum the entire table, sweep the floor and clean up my mess.**

We used a 2 flute cutting bit at 40 percent, there was a 50 percent finish that ended up not being needed.

After the piece was finished, I cut the excess foam with an X-acto knife.

Step 4: Step 4: Finishing the Sculpture

Finishing the sculpture was the most fun about this project.

I used wall plaster on top of my sculpture, which I intentionally did not sand to keep the mechanical cut marks under the plaster for texture. I did this by hand as I had to cover a large area.

After I plastered and sanded the piece with 220 grit paper the entire piece, I put three coats of white glossy acrylic on the entire front of the piece. I used less than eight ounces of this paint.

After this was dry the third time, I flipped the piece over and painted the edges and back a matte blue.

Step 5: Step 5: Soldering the Protoboard

** It's important to do this in a ventilated area on a surface that will not burn. It is also important to wear pants and closed-toed shoes as solder can fall and burn you.**

For this step, I literally moved all of my pieces from the breadboard to the protoboard and arranged them in the same configuration.

The materials used for this part were solder, soldering iron, protoboard, Arduino Uno, mini sound sensor, 10k resistor, 1000uf capacitor, female/male breadboard jumpers, male breadboard jumpers, Neopixel strip, multi-stranded wire (I used solid orange for ground and white/orange striped for input and voltage).

The connections are made with solder lines instead of wire primarily, there is one part that has single-stranded wire connecting the 1000uf capacitor to one location.

For the Neopixel strip, I cut my 40 LED strip into four 10 LED strips, with scissors, which I connected with multi-stranded wire, for flexibility, by soldering the wire to the strip, paying attention to the arrows on the strip to ensure proper flow. I used flush wire cutters and wire strippers on the multi-stranded wires to cut and strip them to attach to the piece.

I also spliced a 5V/2A power wall supply and 9V Arduino adapter with the flush wire cutters and wire stripper. I attached the connection piece to the wall supply and used shrink tubing to close the piece. This didn't draw enough power due to the Arduino regulating the power, but it was what Adafruit suggested. Instead I used the 9V Arduino adapter with a 9V battery.

Step 6: Step 6: Attaching to the Sculpture

This part of the project was extremely simple and was the most interesting to do.

For this part I used blue parachute cord, micro screwdriver, Velcro, clear tape, and my protoboard, Arduino Uno, Neopixel sections, mini sound sensor, 9V Arduino adapter, and 9V battery.

I positioned the protoboard, mini sound sensor, Arduino Uno, and Neopixel sections to the back of the sculpture and then took Velcro and fastened them down. Then I arranged the multi-stranded wire neatly on the back and fastened them down with clear tape.

To hang the piece, I went with a blue parachute cord that I cut to stretch across the top of the piece and to hang the smallest hexagon. For the parachute cord, I melted the frayed ends with a disposable lighter to make it cleaner and easier to feed through the holes I would make.

For the holes, I used one of my micro screwdrivers to puncture the foam in the locations I wanted (three in total). I then fed the parachute cord through the holes and tied it off.

Step 7: Step 7: Powering the Piece!

Finally, I plugged in the 5V/2A power wall supply. It did not respond the way I wanted due to the Arduino regulating the power. Instead I used a 9V Arduino adapter with a 9V battery.

Plugging it in and seeing it work away from the computer was the best!

Step 8: Step 8: Enjoy!

I hope you all enjoyed my instructable!