NeoPixel Ring Kaleidoscope

I am pleased to offer instructions and material files for making a LightLogo Kaleidoscope! I have been thinking about doing this for many months and finally worked out a design. If you have any improvements on this design please do share!

You will need:

  • Adafruit 24 NeoPixel ring
  • Arduino UNO or Adafruit Metro or Sparkfun redboard
  • USB cable
  • A couple pieces 12in X 24in 1/8″ plywood, or corrugated cardboard
  • optionally, 1 piece 12in X 24in X 1/8″Β mirrored acrylic
  • Mylar roll
  • a few jumper wires
  • wood glue or hot glue
  • double sided tape
  • 3D printer
  • soldering equipment


Here are files that can be imported into your vector program of choice (Illustrator, Inkscape, etc) for use with a laser cutter.

if you use Illustrator, just use If you want to import svg files, use those

  • Cut 3 X kaleidoscope_bracket.svg on 1/4 inch mdf
  • Cut 3 X kaleidoscope_sides.svg on 1/8 inch plywood
  • Cut 1 X kaleidoscope_circles.svg on 1/8 inch plywood
  • To be sure the svg is retaining its dimensions, the shape for the sides should be 300mm X 114.31mm
  • If nothing is showing up when you import the svgs select all and they should. I was finding when I tested the import the stroke formatting was lost.
  • I use a Universal laser, which requires red hairline stroke but set yours appropriate to the machine.

NB you can use corrugated cardboard for the sides and circles pieces, even double up for the brackets. That’s what I did for prototypes. It just won’t last as long and it will be harder to make the mylar stay smooth.


I am using a roll of mylar to make the reflective sides. If you can get ahold of a sheet of mirrored acrylic that would be the perfect surface, but mylar produces a good effect. Use a side piece of wood as a cutting guide to cut 3 pieces of mylar. I tried several techniques to affix the mylar to the wood. I found taping with a strip of double sided tape at each end to work best. Unfortunately it comes off the roll with some wrinkles and creases but sometimes you can find a smoother area to cut from.

Update here; I actually just made a kaleidoscope with the mirrored acrylic and it is sooo good! The main GIF for this instructable is now from the acrylic version and you can see way into the distance when you look inside.

Step 3: GLUE UP

Get some wood glue and glue A and a B together, making sure to line up the slots.

Spread glue along the inner edges of the B piece and insert the sides.

Set the other B piece over the ends of the sides. Turn the whole structure over and add glue along the seam.

Insert the brackets into the slots in the circle pieces and add a little glue.


There are 2 parts to print. You will need the NeoPixel ring Arduino shield to keep the ring stable on the Arduino and its wires plugged in securely. This shield is a remix of one developed by the awesome engineerΒ Tiff Tseng, as an improvement to my own first version. The diffusion cover is optional but I really like it. It provides greater stability for the NeoPixel ring and Arduino assembly and gives a more uniform look to the kaleidoscope on the inside. Clear filament is best for the diffusion cover. I attach the diffusion cover with a dot of hot glue at the corners.


Solder the cut end of jumper wires into the Data Input, PWR, and GND holes of the NeoPixel ring from underneath the board.

Insert the other ends of the wires into Arduino pin 2 (Data Input), 5V (PWR), and GND (GND) pins going through the holes provided in the 3D printed shield. Press the ring over the shield until it clicks in tight, and press the shield over the Arduino headers so all feels tight. The ring needs a good consistent connection on all 3 wires or weird things happen.


Download LightLogo (v2e is the most recent as of this time). Unzip and look in the “light docs” folder, and follow the directions in “installation.txt” to install it. Also see the LightLogo Reference pdf for programming documentation.

Here are a couple programs I played with to get things spinning around:

Bands of colors:
to startup
setbrightness 99
loop [
setc yellow
fd 8
setc blue
fd 8
setc white
fd 8
wait 50
fd 1

A single spinning dot:

to startup
setbrightness 99
setc red
loop [
wait 50
fd 1


Set the ring against the diffusion cover or centered in the triangle opening if you’re not using a cover. Orient the USB cord as shown so you can access the Arduino reset button.

Use rubber bands to attach the bottom cover C with the 3 slotted parts.

That’s it! Have fun!


You can see from the image above that the mylar does not reflect the lights very smoothly. It’s impossible to keep the material from rippling and in the end I had to see what it would look like with the perfectly smooth surface of mirrored acrylic.

I would highly recommend going with the acrylic if you can, unless the price is prohibitive.

Not only can you see the reflections much more clearly but you can also look into the “distance” quite far, an effect that is really engrossing.
Once I saw this I thought the diffusion cover was detracting somewhat from the experience and now I wanted to see the neopixels in all their brilliance. When I tried this something unexpected happened. I turns out the acrylic causes multiple mini-reflections for each neopixel and the end result is a disconcerting diffusion that multiplies at each level of reflection. You can see the effect in the second picture.

Source: NeoPixel Ring Kaleidoscope

About The Author

Scroll to Top