I got the idea for this project from my Mega Man Pixel Pal. While it's a nice decoration, it only lights up in one color. I figured since Mega Man is known for color-changing costumes, it would be cool to make a version using RGB LEDs to display custom colors.
Although there are many ways you could possibly go about doing this, such as buying a pre-made RGB LED array, when I saw the Woodworking Contest I thought it would be a fun challenge instead to use wood and create sections of like-colored lighting rather than lighting each individual pixels.
I've organized this Instructable roughly in the order I took steps myself, but ultimately it is a lot of sub-components that all come together, so feel free to re-arrange in an order that you see fit.
Step 1: Tools and Materials
- Wooden plaque or similar piece for base
- Clear plastic sheet (frosted recommended)
- Square wooden dowels
- Black and white paint
- Wood filler (optional)
- Reflective tape (optional)
- Arduino Uno
- Circuit board
- Diffused Common Cathode RGB LEDs
- Solid hookup wire
- Super glue
- Paint brushes
- Saw (manual or power)
- Glass/plastic cutting knife
- Soldering iron and solder (fine point recommended)
- Wire strippers
- Digital Multimeter (optional)
To determine how many dowels I would need I counted the total number of pixels that don't change colors, which comprises Mega Man's black outlines and his face. There are 159 of these. You can determine the size needed for your plastic, base and circuit board from the dowel width, which represents one pixel. The sprite's width is 21 pixels and height is 24 pixels. I chose 1/4" wide dowels and cut them to a length of about 3/4" each. I purchased the wood pieces and plastic at Hobby Lobby but you can also get them at a hardware store. I recommend using something thinner than the plaque I chose, as a thinner base will allow more light through, but make sure it is sturdy enough.
It's important to use diffused LEDs, otherwise the colors do not blend well and you see the individual red, green and blue. Common anode should work with essentially reversed wiring and inverse values in the Arduino program, but I find common cathode more intuitive. I ultimately used 14 LEDs but I bought the 25-pack for convenience, and you may find more than 14 looks better, though I don't know how many the Arduino board will support.
Step 2: Cut Dowels
The first step in building out the wooden portion is to cut the dowels into your desired height for each pixel. As stated before, I chose 3/4". I used a bandsaw so I would only have to measure the length out once and quickly cut through all of them. The dowels should also be easy to cut through with a hand saw, but this is time consuming and not recommended.
I placed all of the pieces into a convenient container and cut until I had the necessary 159. It's okay if they are not perfectly uniform and flat, mine weren't either, but you don't need to sand them down yet.
Step 3: Gluing Pieces Together
For all the gluing I used Loctite superglue, which is available in many stores. Wood glue may work but the super glue is less messy and bonds very quickly. Make sure to wear gloves when using this stuff.
3a. Attaching pieces to each other
I went through and found all locations in the sprite where multiple "wood" pixels are adjacent (non-diagonally) so I could glue these together. Putting the pegs side-by-side wherever possible gives you much more surface area to form a strong bond, and then the bottoms will have a much larger surface area to glue to the base. The first picture shows these laid out in a convenient manner so you can understand how many of these are needed.
I recommend not doing what I did, which was starting with the feet. The downside to the fast bonding is things can come out a bit crooked if you don't get them lined up right away. Start out with the smaller pieces to get your technique down.
3b. Arrange all pieces in proper order
This step isn't super necessary, but I put all the pieces together (minus some single pieces) on a table to make sure things would fit okay before gluing.
3c. Glue to the base
Once the glue on the side-by-side pieces is dried and you are confident you'll be able to arrange everything correctly, you can start gluing pieces to the base. At this point I sanded the bottoms of each piece/group of pieces to make them reasonably flat and uniform before gluing.
I started with the left foot and basically worked my way around clockwise. I put the large "face" piece down as a reference point for gluing things around it, but I didn't glue the face itself. I left the face unglued until completion of the project, since I knew it would get in the way and be easy to glue in later.
3d. Sand the top of the dowels
After the glue dried, I put the face piece in (but again, didn't glue) and took a sanding block over the whole top surface to help make it more uniform.
3e. Add wood filler (optional)
Since everything wasn't perfectly aligned, I put in some wood filler between unwanted gaps in an attempt to prevent light from bleeding through. However, unless you have some significantly large gaps, I'd recommend skipping this step or at least saving it for later. Once I had everything lit up I realized light bleeding wasn't going to be much of an issue anyway.
Step 4: Cut the Plastic
My first step in cutting the plastic was to cut it down to the rectangular size of the assembly. After doing this, I held it over the assembly and drew lines around the sprite.
I'm not sure about other plastic cutting techniques, but with the knife I used, you are supposed to score it about halfway through and then bend it off til it breaks. For that reason I broke pieces off gradually to minimize bending points and avoid damaging the plastic. The final product wasn't perfect, but the mistakes aren't too major.
We'll want a diffused effect that will help spread the light, which is why frosted plastic is better. Sandblast it if possible, but I was limited so instead I used 400 grit sandpaper. Even this fine grit creates noticeable scratches, but you can mitigate this a bit by sanding in different directions for a more uniform look. I sanded on the underside so the top surface would still be smooth.
Step 5: Painting
This step is pretty simple. Take the paint and paint the top and outward-facing surfaces with as many coats as necessary. I actually painted the face separately (see pic in previous step), but it can be done at the same time as the black outlines. For the face, I left the skin portion unpainted since the wood look is appropriate.
Step 6: Prototyping
I highly recommend prototyping the circuit before you begin soldering LEDs. Even if you are confident, in the set of LEDs I bought there were some differences between how they displayed colors, so it's good to test them quickly in a protoboard to get a uniform set.
The Fritzing diagram I've included shows the basic setup to connect one LED each for the primary and secondary color sets we'll be using. RGB LEDs essentially work like three different LEDs combined into one, and you can control each of these three individually using an Arduino program. My LEDs called for 330 and 150 Ohm current-limiting resistors, but since I didn't have 150 Ohm available I experimented with others in a ratio of 2.2.
You can extrapolate the connections in the Fritzing diagram to connect multiple LEDs in parallel. This is shown in the photo (I did not have any green or blue wire available). Essentially you just need to add more LEDs to the same columns of the protoboard and you will see how they display the same, while the brightness decreases. As you add more LEDs, you can mitigate the decrease in brightness by lowering the resistor values. The parallel LEDs will divide the current so the risk of overcurrent decreases. Ultimately, I ended up choosing 220 Ohms for the red anodes and 100 Ohms for the green and blue anodes. There are seven LEDs in each set.
The Arduino program I've included can provide PWM to the LEDs with a value of 0-255, much like the color selectors computers use. However, as I would find out, the color selection on LEDs is far from one-to-one with computers. Initially I planned to try including the colors of all different Mega Man abilities, but this is not feasible. Some colors such as brown and gray cannot be replicated easily with these LEDs. Instead I settled for creating the colors of the rainbow, plus a few variations in-between.
The program includes a fader function that can smoothly transition between colors by either incrementing or decrementing to the next value with a delay. By default I have it set to a program that fades through the rainbow, but there is also a set of commented lines for displaying Mega Man's main colors. There is also a header file that has some colors I defined after experimenting with different values.
Step 7: LED Locations and Wiring
7a. Drilling holes for LEDs
To start off, I located sections in the body where patches of the primary or secondary color are present. Once I did this, I marked off dots around the center of these color sections. Then I drilled the markings from the top with a bit slightly larger than the diameter of the LED.
I don't have a photo with all of the original holes drilled. After drilling them I had quickly moved on to testing an individual LED in each hole with the plastic held over. I started widening a few holes where there wasn't enough light.
7b. Adding LEDs to the circuit board
Next I started soldering in LEDs. There isn't a great way to do this since it's hard to line everything up with the holes. I started out with one of the feet (of the sprite) and worked my way from there. I soldered each one as I went along, as it's otherwise hard to keep these in place as you find the right set of holes for each. It takes a bit of guessing and then adjusting accordingly.
Don't push the LEDs down as far as possible. You should leave enough room so they can move a bit and so the wires we'll add can fit under the LEDs. I oriented all the LEDs in the same direction (except the sprite's hands, which I had to put vertically) so that it would be easier to remember how to wire them up. I trimmed the remaining leads.
7c. Wiring the LEDs to the appropriate locations
This is a very difficult part of the project. If you are capable of making your own PCBs, definitely do that, but otherwise be prepared to do A LOT of soldering. Basically, the way I did this was to use the empty central area of the circuit board to create rows for each relevant node in the circuit: GND and the red, green, and blue controls for both the primary and secondary color, so seven in total. A wire connects each leg of the LED to these rows. So for each LED you basically have 12 solder points, 4 for the LED itself and 8 for both ends of the wires. Multiply that by 14 LEDs and add in the bridging of nodes and you get around 200 solder points! This is why PCBs are so useful. Even for a relatively simple project, this is about at the threshold of feasible soldering.
I tried to split the nodes in half on each side of the board, as well as solder them roughly in the same physical order as the LEDs, in an effort to reduce wire crossover. I created solder bridges between the LED and one end of the wire, and between the other ends of the wire and each other of the same node. When bridging I find it's much easier with a fine point soldering tip, and for the bridges to the LEDs is easier if you leave an extra bit of the wire lead to attach directly to it.
It's hard to explain this in a true step-by-step manner, so take a look at the pictures. The circuit is simple in theory, just convoluted in practice, especially multiplied to 14 LEDs. If you have more than two different colors of wires, definitely color code to make it easier for yourself to follow.
Step 8: Putting Everything Together
To complete the assembly, I essentially just have it run through the Arduino and protoboard setup from the prototyping stage. While it's possible to create a more permanent, standalone setup, this is sufficient for my purposes. The RGB primary and secondary wires from the circuit assembly connect in the same spot where we connected the RGB LED leads before. The GND wire of course connects to GND.
Then you just need to align the LEDs into the holes, connect the Arduino, and place the plastic cover over the top. For me, some spots weren't getting enough light through so I drilled out more holes next to the existing ones. You could probably use a jig saw if you want this to look nicer, but ultimately it's not meant to be visible. I also added some reflective tape inside. Lastly, I used thin cardboard to create barriers between different-color sections. I have the plastic held on with clear tape instead of glue for easier access to the inside.
Even after breaking out the fancy camera, it is difficult to capture how this looks in person. For example, in the main picture, which is set to blue and teal to match Mega Man's default colors, there appears to be a lot of bleed-through of the teal. This is just a result of the camera. That's why I've included a picture of the same blue paired with a contrasting orange, to better show the color separation. There is also a video of the full rainbow cycle.
Step 9: Conclusion
Overall, I am satisfied with the results of this project, but there are definitely areas for improvement, such as adding light to the face area and making more compact circuitry. Wood proved to be a challenging medium to work with. If I were to improve on this with the lessons learned from the first try, I'd plan where to provide more lighting coverage, and would probably use something like a 3D printed shell instead.
If you liked this project, please give it a vote in the Colors of the Rainbow contest!