Introduction: 8x8 LED Array Multiplexed Infinity Mirror

About: Designing electronic creations from microcontrollers, LEDs and anything else I can pull out of a dumpster and make use of. Check my Profile

A little bit different than your regular Infinity Mirror. Using a piece of mirrored acrylic for the back mirror, 8 rows of 8 holes are drilled into in a grid pattern. A LED is then placed in each hole and wired up so that i can be multiplexed through a controller.

The frame I built for this project is very similar to my 8x8 Infinity Mirror, but instead of having glass for the rear mirror, I used mirrored acrylic which is easily drilled. And there are no LEDS around the outside. All the LEDs are in the back mirror and appear to be floating within it.

I got the idea after making an octagon mirror with a inner ring of LEDs, the effect of the LEDs floating in there is quite appealing, so I decided to do a small/simple project to demonstrate.

Building the actual frame will not be covered in detail here, but plans are in the ZIP. For detailed instructions on building the frame please see my other Instructable - 32 LED Infinity Mirror

The firmware is written in C18 for the PIC18F1320 and the TPIC6C596 high power shift register. Its a very basic program, with just 4 patterns to display, 2 switches change the pattern and the speed.

UPDATE: Kits are now available for this project, the LED controller is not being offered, but there are many different 8x8 array controllers out there to choose from. Quality glass 2-way mirror on the front and mirrored acrylic for the back, drilled and ready to use. Link

Check Out my Infinity Mirror Gallery

Step 1: Supplies

Get a Kit including the Frame Parts, front and back mirror, drilled and ready. LED Controller is not being offered.

- PIC18F1320
- 18pin socket
- TPIC6C596 shift register
- 16 pin socket
- x64 5mm LEDs, whatever color, I used white. Buy Some
- x3 10kohm 1/4w resistors
- x8 220 ohm resistors, may be different based on color
    *Used high value resistors because they LEDs shouldn't be to bright inside an infinity mirror or it won't        work as well.
- 1 uF capacitor
- 0.1uF capacitor
- x2 momentary pushbuttons
- 5v @ ~1A power supply with DC Jack Get One

Circuit Board:
- Solid strand wire
- Perfboard

- Plans are on the next page or in my 32 LED Infinity Mirror
- I use 100mil Polystyrene, but acrylic or 1/8th masonite would work as well

- Soldering Iron
- Hotglue gun
- drill and bits, for button hole
- 5mm drill bit for LEDs
- Utility Knife

I could put a kit together for everything or just certain parts, Contact Me to find out

Step 2: Build the Frame

I am not going to cover building the frame to much here as it is the same process and nearly the same size as my 32 LED Infinity Mirror. Only difference is the inner walls do not have any holes drilled in them and the outer walls should be a 1/4"-1/2" wider to accommodated the LED array.

The plans in the image below is for the 32 LED mirror. Rest are for this projects mirror frame.

Find where you will want the DC Jack and switches, I always choose a corner. Later the 2 switches will be soldered on some perfboard to be mounted in the holes. Take a look at your switches and find their spacing. With some masking or painters tape put some tape in the area of the holes and mark your layout on the tape.

Drill the holes for the 2 switches, I used a 5/16" bit to drill them out then a utility knife to cut them more square. They will later get a black decal over them to hide the switches nearly completely.

Step 3: Drill the Rear Mirror

*Leave the protective film on the acrylic until later.

- Printout the drill pattern.

- Align it and tape it to the back of acrylic mirror.

- Place it on some wood or work surface that you can drill into that supports the acrylic. Ensure there is no particles that could scratch the face of the mirror.

- Using a 5mm drill bit or the closest standard one they sell, I found close enough to 5mm at Home Depot.

- A drill press works best, but otherwise go very slow and steady drill out all the holes.

Step 4: Place All the LEDs

Its now time to place all the LEDs into the acrylic from behind.

An 8x8 LED grid is controlled with Multiplexing which basically is to have all the LEDs cathodes(negative) all be bent over to the next one above it, so that a column of 8 LEDs will all have their cathodes in parallel, and be bent in way that the anode can be bent to the side and connect with the next LED in its row. So by sinking(allow path to ground) a column and sourcing(apply voltage) a row, a single LED can be controlled. Check the Internet for more detailed explanations.

This Instructable has good matrix directions.

- Check the images below and bend some LEDs, as shown

- You have to start from one side and work your way over like in the images. Or its hard to get at the solder points.

- As you work check to make sure the LEDs are bent suitably so they don't touch anywhere.

Normally diffused LEDs are preferred in Infinity Mirrors, but if using clear lens ones like I am, because thats what I had on hand, before removing the protective film on the acrylic I sprayed my LEDs with a Frosted Glass spray paint to diffuse the light.

Step 5: Build Controller

In the ZIP in step 1 was the schematic along with the firmware.

Not going to cover building the circuit to much here. I constructed mine point to point on some perforated circuit board. I chose not to use any terminals or connectors and just solder all the LED wires directly into the circuit, takes up less space and costs less. Just follow the included schematic.

On some of the images there is a 5-pin header for ICSP, which is optional.

Once the circuits built and checked, before plugging any ICs in, check with a volt meter to make sure everything is in order and not shorted/reversed ect.

Flash the included HEX file to the PIC, or use the included C file to edit and use in MPLAB to program.

Lastly for this step is to wire up the switches onto some perfboard, making sure their spacing will line up with the holes drilled into the frame. One connection on both switches are connected to ground, their other sides to a PIC port, see the schematic.

*I forgot to add an 0.1uF capacitor and everything for the two buttons, two 10k pullups for RA1 & RA2, along with the wires and button. So they are not show in the images below, but are on the schematic.

Step 6: Connect the Controller to LED Array, Install Into Frame

Take a look at the schematic and make the connections to the rows from the resistors and the columns to the TPIC6C596.

Once its all soldered up, the circuit should be done at this point, power everything up and see if its working correctly, and no rows/columns are mis-wired.

If it is working correctly its time to install it into the frame.

- Clean both mirrors with some window cleaner to remove any fingerprints or smudges.

- The mirror with the LED array should fit in with the inner walls.

- Using some tape that won't stretch(I used regular masking tape), squeeze the walls into a bit to close any gap between the wall and the mirror then tape it all the way across.

- Tape all 4 sides.

- Once the mirror is installed,  mount the DC Jack and switches with some hot glue.

- Mount the PCB to one of the walls with a bit of hot glue.

Step 7: Firmware

The firmware should have been flashed in step 5, so the PIC can be installed into the PCB.

Included in the ZIP file on Step 1, is the firmware in C18. I tried to comment as best I could but its not complicated code and shouldn't be to hard to follow.

Basically each pattern is made up of frames. Each frame is in an array. Such as GraphicA1 is frame 1 of Graphic A. In the array there are 9 bytes, with the first byte( GraphicA1[0] ) being 0x00. Each byte is the data for filling in the columns.

Only one column is on at a time and a byte is applied to the rows. Each row is shown sequentially for a small delay, allowing it to be seen. It will repeatedly display the same frame until FrameCounter = FrameCounterMax, when that happens it will begin to use the next frame of data such as GraphicA2 and so on until reaches PatternMax then it will wrap to frame 1.

There are 4 included graphics, 3 simple ones with less than 6 frames and one complex one with almost 70 frames.

Adding more is as simple as increasing the "#define Patterns" value. Adding the frame arrays variables and adding a Case x: to the fill rows function. I have put comments in on where to add and change things.

Step 8: Finished


Check out my other Instructables in my Profile

or my Projects on my main website

And watch for my next release of a USB Enabled Board with 24 channels with 1w dissipation each.
It can control 24 1w or 3w LEDs or 8 RGB LEDs 3w or 5w, or RGB LED Light Strip or whatever combinations. Based on a 18F4550 and PIC C18. 

Microcontroller Contest

Runner Up in the
Microcontroller Contest