Building a Mind-Boggling Infinity Mirror, Part 2

You can find all sorts of images and descriptions of infinity mirrors on the web, but most of them are rather vague when it comes to nitty-gritty details.

As you may recall, a couple of weeks ago I decided to create an infinity mirror. Of course, the infinity mirror concept isnít new, but I've never actually made one myself. It also gives me a chance to play with a 1-meter length of NeoPixel Strip I acquired from Adafruit.com.

NeoPixel strip from Adafruit (60 tri-color LEDs per meter).

This stuff is pretty amazing. There are just three wires running down the length of the strip: power (+5 V), ground (0 V), and a signal line. Using this signal line (and therefore only one digital pin on your Arduino), you can individually control the color and brightness of each pixel. You can also download a corresponding Arduino library and examples from the Adafruit website, which makes everything just about as easy as it could be.

These NeoPixels are amazingly bright, to the extent that you canít really look at them head-on when they are at full intensity. I'm planning on using them for all sorts of projects, of which my infinity mirror is just one.

The thing about infinity mirrors is that you can find all sorts of images and descriptions on the web, but most of them are rather vague when it comes to the nitty-gritty details. For example, they may tell you to use a full mirror on the back and a half (one-way) mirror on the front, but they donít even hint as to the optimal gap between the two mirrors. Similarly, you may find a how-to article saying that you can form your one-way mirror using a piece of regular glass covered with a sheet of the film they use to tint car windows, but they donít say what type of film to use (there are lots of different shades, including mirrored ones).

Fortunately, "I R an Engineer" and I'm quite happy to experiment for myself. My first step was to determine the optimal gap between the two mirrors. I started by creating a crude prototype frame using four strips of wood with a 0.5" x 0.5" cross-section. I spray-painted these gloss black and placed them on top of the full mirror. I then used a couple of thin strips of painter's masking tape to temporarily attach one end of my NeoPixel strip to one of these pieces of wood, after which I laid the half mirror on top.

Test frame formed from a single 0.5" row.

In this experiment I was only lighting 16 or so NeoPixels at the end of the strip. You can see the unlit pixels on the rest of the strip as it exits my mirror from the upper right-hand corner. The far end of the strip (not visible in this image) is connected to an Arduino Uno. Eventually, I will end up wrapping the entire strip around the inside of the frame, but that's still in the future.

My next experiment was to leave the original four 0.5" strips and NeoPixels where they were, but to add a second 0.5" strip on top of the first. The result was for the reflections to come in pairs as shown below:

Test frame formed from two 0.5" rows with the NeoPixel strip attached to the bottom row.

Next, I swapped things over so that I started with a 0.5" strip without LEDs on the bottom and then added the strip with the NeoPixels on the top. This time we see a single row of lights at the top, followed by pairs of rows fading off into infinity as shown below:

Test frame formed from two 0.5" rows with the NeoPixel strip attached to the top row.

Finally, I used three rows of 0.5" wooden strips, with blank rows at the bottom and top and the NeoPixel row in the middle. The result -- as compared to the first test using only a single wooden strip -- is to have a wider gap between the reflections and for the reflections to appear to go much deeper (further) as shown below:

Test frame formed from three 0.5" rows with the NeoPixel strip attached to the middle row.

As we can see by comparing the above images, the advantages of having only a 0.5" gap between the back and front mirrors is that the resulting infinity mirror is really thin and it gives the impression you have many rows of LEDs mounted in close proximity to each other. The disadvantage is that the reflections fade away quite quickly. By comparison, the advantage of having a 1.5" gap between mirrors is that the reflections appear to continue longer (and deeper). The disadvantages are that the infinity mirror is thicker (chunkier) and the rows of reflections are spaced further apart.

In the end I went for a compromise and decided to use a 1.25" gap between the mirrors. My chum Bob, who lives in the office next to mine, has access to all sorts of saws and tools in a warehouse just around the corner from this building. He just popped out and whipped up the pieces for the real frame as shown below:

The pieces for the real frame, which provides a 1.25" gap between the full and half mirrors.

Sometime over the coming holiday weekend I will assemble the frame and mount the NeoPixel strip all around the inside. My next step will be to experiment with different types of automotive window-tinting film (my original experiments as shown above were conducted using a real one-way mirror). I shall, of course, report back as to the results of my experiments in a future blog. In the meantime, have you ever played with this infinity mirror concept yourself?

Either one of those rings, with associated pushbuttons, would make a God-awful nasty game of Simon! One could start out with arcs of 4 or 6 (16 or 24) to simulate the four buttons on the original game, then remove one at random from each arc in turn so that, for example, the second level would be 4-4-4-3-1 (five "buttons"), the next 4-4-4-2-2 (five "buttons"), 4-4-3-1-2-2, 4-4-2-2-2-2, 4-3-1-2-2-2-2, 4-2-2-2-2-2-2, and so on. You'd also have to change the colors as you go along, with the original four "buttons" (arcs) set as Red, Green, Yellow, and Blue as in the original Simon, and different colors for the "buttons" (arcs or segments) as you start spliting up the original arcs. At the start, hitting any of the 4 (or 6) pushbuttons associated with an arc/button would count as a push (i. e., hit any Red pushbutton when four Red lights are lit).

Not only does the melody get longer, but the potential number of tones/buttons gets larger! With 16 or 24 different tones to remember as well as the sequence, this would be one tortuous game -- not one for those afraid of failure!

That's not mind boggling enough. You need to at least alternately turn the rows on and off, so you get that illusion of falling. Or maybe put a hinge on one side and a screw motor on the other, so you can change the angle between the two mirrors, so it looks a tunnel go around turns. Or just fix a pivot point at one corner and use two motors; one on the horizontal axis and one on the vertical axis and creating a spinning vortex into the abyss!

You can't really tell from the images above -- but in the real world, the last test (with the three strips of wood = 1.5" seperation between mirrors) has an amazing impression of depth -- when you look down over the mirror sitting on our kitchen table, it appears as though the lights keep on going right down to the floor.