Neopixel RGB LED Sword Prop




Introduction: Neopixel RGB LED Sword Prop

Hi everyone, today I'm going to show you how to make a fantasy sword that glows using embedded Neopixel style LEDs. I must admit that I did not really have a reason for making this, other than I just felt like having a glowing sword. I'm a big ol' nerd okay. Anyway, hopefully someone else finds this useful as a part of a costume or prop.

The sword is about 33 inches (~84cm) long, so it should comfortably work as a one-handed sword for adults, or a two-handed sword for children. I should note, that, due to the electronics, the grip is slightly thicker than you might expect. It's dimensions are 41x46x120mm. The bet approximation to this is 1-1/4" PVC pipe. The thickness should be comfortable in adult hands, but if you're planing on building this for a child, you might want to check with some pipe first. The upside of this is that the grip makes up the majority of the sword's weight, keeping it surprisingly well balanced.

One of my overall goals with this project was to keep the sword almost entirely 3d printed. Since 3d printers are fairly cheap and easy to use, hopefully this makes it easier for you guys to make one. Likewise, it makes it easier for me to adjust the design and make new swords, if I feel so inclined :).

I've also included a scabbard design to hold the sword on a belt.

Please note that the sword edge not sharp, but it is hard; it's not intended to be swung at anyone or used in serious mock combat. Doing so may cause injury and also possibly damage the electronics.

All the files you need (minus the custom PCBs, see Supplies links) can be found at my Github: here.

A brief overview of the electronics:

The sword uses SK612 3535 led strip for lighting. SK6812's are essentially the same as the more ubiquitous WS2812b LEDs (aka Neopixels). The reason I chose to use them, was because, at the time of assembly, they were the only WS2812b compatible LEDs I could find on strips at 3535 SMD size. At 3535 SMD size, the LEDs are just 3.7x3.7x1mm, much smaller than the WS2812b's 5050 size of 5x5x3.5mm. This meant I could fit more LEDs in the sword, while also minimizing the blade's thickness. The LEDs are controlled using an Arduino Pro-Mini mounted to a custom PCB, while the sword is powered by an 18650 LiPo battery. A single push button is used to control the LED effects, while an optional potentiometer controls brightness.

Overall, I've programmed 25 different effects for the sword (as displayed in the video above). Please note that for a lot of the effects the colors are chosen at random during runtime.

Finally, if you have any questions about anything in this instructable, please leave a comment, and I'll get back to you.


Custom PCBs:

To keep everything compact, you'll need to order a couple of my custom PCBs:

If you've never ordered a custom PCB before, it's easy. I briefly go over it in Step 2 of one of my other Instructables here. As with that Instructable, all the ordering defaults should be fine for this project.

Electronics Parts:

(You might be able to find most of the parts for lower cost at places like Aliexpress, Ebay, Banggood, etc)

  • 2M of 144 LEDs/M SK6812 3535 (mini) led strip, non waterproof. Found here
  • One 5v Arduino Pro-Mini (available in two pin styles, either works) Found here. For the curious, you can read about why I use a 5v Pro-Mini over a 3.3v version in step 1 of one of my other Instructables.
  • One 18650 LiPo. Any type will do as long as it can do 4A output. Can be with or without protection. The one I used can be found here.
  • One 18650 over current protection board (if not using a cell with protection circuit pre-installed). Can be easily found on Ebay, any with a 4A cut-off will do. The one I used can be found here.
  • One TP4056 1s LiPo charging board. Found here.
  • One Flashlight style push-button. Found here
  • Four 3 pin JST-XH 2.54mm female connectors. Found here
  • Five 3 pin JST-XH 2.54mm male connectors (one for making test probe). Found here
  • One 2 pin JST-XH 2.54mm female connector. Found here
  • One 2 pin JST-XH 2.54mm male connector. Found here
  • One of each 0805 size 100K resistor, 1K resistor, and 1uf capacitor. Found here, here, and here.
  • (optional) One Bourns 10k potentiometer (3310C-125-103L). This is used for brightness control, and can be omitted if you prefer. Found here
  • Copper Tape, 1/4". Found here
  • Seventeen JST-XH crimp terminals (although you should buy spares). Found here
  • One 6x6x13mm tactile button. Found here
  • 22Ga stranded wire, at least three colors.
  • 26Ga stranded wire, at least three colors.
  • 3mm diameter heat shrink tubing.
  • 2.54mm male headers.
  • Three Dupont style jumper cables with a male end (for testing)
  • FTDI Programming cable. Found here, although other types are available on Amazon for less. You can also use an Arduino Uno as the programmer (if it has a removable ATMEGA328P chip), see a guide for that here.

Other Parts:

(most of these items, asides from the 3d print filament, can probably be found at your local hardware/craft store)

  • Transparent 3d printing filament and a filament of any other color (if you want to conserve the transparent stuff)
  • 3/8" x 36" square/round wooden dowel. Found here
  • Spray paint in the color of your choice, I used Ace Hardware brand antique gold found here, but any other dark-bronzeish gold paint should probably match.
  • Spray gloss varnish paint. Brand probably doesn't matter, I used Rust-oleum Ultra Cover Gloss Clear found here.
  • Rust-oleum sandable filler primer spray paint found here.
  • (optional) Krylon Glitter Shimmer Opulent Opal spray paint found here. This is basically a clear glitter spray I added to the sword blade to give it some sparkle.
  • Krylon Glitter Blast spray paint in the color of your choice, found here. This is for the gems on the sword blade. It's like the Glitter Shimmer paint, but includes color along with the glitter. I did not actually use this for my gems, I air brushed them with a pink/purple acrylic mix, but it should be about equivalent.
  • Two 8x10mm and one 6x6 acrylic rhinestones in the color of your choice, found here. These are used on the sword hilt. The ones I used are very old, so I don't know where I got them, but the link I provided should be about equivalent.
  • Two 90mm lengths of M3 threaded rod, found here.
  • Two M3 locknuts (nylon insert type) found here.
  • Two M3 6x0.5mm washers found here
  • Bondo Glazing and Spot Putty or gap filler of your choice. Found here
  • Aqua Coat clear wood grain filler. Found here


  • 3D printer
  • Soldering Iron w/ fine tip and solder
  • Wire strippers/cutters
  • Hot glue gun + hot glue
  • Super glue
  • Epoxy
  • 5.5mm wrench (for M3 nuts)
  • Scissors
  • Sand paper (150, 220 grits should be fine)
  • Some kind of strong glue (epoxy, contact cement, etc)
  • Sculpting tools/spatula for spreading Bondo
  • Heat gun (for heat shrink)
  • Tweezers or small pliers
  • Masking tape (the wider the better)
  • Crimper for JST terminals, found here

Step 1: Constuction Overview

Since the entire sword is 3d printed, it's split into quite a few parts. To help make construction more straight-forward, I've produced drawings for both the sword and the scabbard that show an exploded view with almost all of the printed parts. I've attached these as both images and PDFs to this step. They were both drawn up using Fusion 360, which I also used to model the sword. Please note that the drawings do not include all the mechanical/electronic parts, such as the switch, potentiometer, 18650 LiPo, etc.

Please look over the drawings. They each include a list of components to be printed, along with any specific printing instructions. Later in the instructable, I will refer to the parts by name as listed in the drawing (although hopefully you'll be able to identify them using the images attached to each step). You can find all the parts at my Github: here. Also, please note that the 3/8" wood dowel is included in the drawings for reference, and is not a part to be printed.

The drawing is missing two printed parts: one cosplay_mount_base, and one flexbatter18650x1 (flexbatter18650Px1 if you're using an 18650 with a protection circuit built in). These are general parts for mounting the Arduino and the 18650 LiPo. I did not include them in the sword design drawing, because in Fusion 360, inserting components into a design can cause frustrating issues should you ever want to re-organize your project structure.

All of the parts should print without supports, with the exception of the "Guard Half" parts. 10-20% infill should be fine.

Please note that I printed all the parts using ABS filament. I do this so that I can smooth them using acetone vapor smoothing. This saves me a huge amount of finishing time, as the parts do not need to be sanded. PLA should be plenty strong enough for the sword, but if you want a similar finish to mine, you'll need to either sand everything or use some kind of epoxy coating. You'll have to do your own research on that.

Finally, I should add that I painted each part of the sword as I assembled it. This turned out to be a bit of a mistake, as I had to fill a number of gaps, and repaint everything, after the final assembly. So, even though some of my mid-construction pictures will show painted parts, you should probably wait until you get to the painting step to paint everything.

Step 2: Brightness Control Potentiometer Notes

You may notice that the gems on the sword blade are not the same on both sides. That is because one of the gems is mounted on a potentiometer, which is used to control the LEDs' brightness. The potentiometer I used is part of an analog joystick, but was available as an individual part. Unfortunately, I bought it a long time ago, and I cannot find a source to buy it anymore. So I've replaced it with a similar potentiometer, which should work just fine. But because I assembled the sword before checking the potentiometer's availability, I do not have pictures using it, nor have I tested it (both for fitting, and functionality).

I do not want you to be forced to use the untested potentiometer, so I've provided you with a static printed part as not functional replacement. This isn't really a big deal, as changing the brightness isn't critical, and I've included a toggle in the code to disable the brightness control.

That being said, you are welcome to use the potentiometer if you like. I'm very certain it will work just fine. All of my pictures include wiring for it, and I will include the relevant steps in the instructable.

Step 3: Some Notes About Testing

As a final note before I launch into the construction steps, I should add that the SK6812 3535 led strips I used are rather fragile, much more so that normal WS2812b strips. I had a number of LEDs fail on me, either due to excessive strip bending, or over-heating when soldering. Over-heating is particularly annoying, as once you have to replace one LED, splicing in a new one might cause the ones next to it to fail, and so you can get caught in a frustrating cycle. However, if you are careful, you should be fine; many of my issues came from having to splice multiple parts of strips together to get the correct number of LEDs.

Once the sword blade is put together you cannot access the LEDs without destroying the blade. So, while assembling it, you should test the strip frequently. You can create a test probe using three male Dupont jumper cables. Cut off one end of the group of cables, and replace it with a male JST-XH connector, as pictured. You can then connect the cable to the sword controller (which we will build in the next steps). By pressing on the pads of the LED strip with the male ends, you should be able to get the LEDs to light up. Make sure the connections are in the correct order!

Step 4: Controller Contruction Step 1:

We'll begin by assembling the controller electronics. This will let you test your led strip while assembling the rest of the sword.

Print out one copy of cosplay_mount_base, and one flexbatter18650x1 (flexbatter18650Px1 if
you're using an 18650 with a protection circuit built in). Glue the flexbatter18650x1 to the base as pictured (the base has a few pegs that the insert into the flexbatter).

Next, take a small length of copper tape and wrap it around holes are either end of the flexbatter. Use a dab of solder to secure the two ends of tape together, as pictured.

Finally, solder two lengths of wire to the copper tape as pictured. Insert the wires through the bottom side holes of the flexbatter. The length of the wires will depend on if you are using an external protection circuit. If you are, we will mount the circuit to the side of the flexbatter in the next step. If your LiPo already has a protection circuit, your wires should be long enough to reach to the center of the empty portion of the cosplay_mount_base; 80mm should be more than enough.

All credit for the flexbatter18650x1 design goes to enif.

Step 5: Controller Contruction Step 2:

If you are not using an external protection circuit, skip this step.

Adding protection to any LiPo is critical. Over-discharging, overcharging, or drawing too much current (such as during a short circuit) from a LiPo can damage it, leading to a reduced lifespan, or, in the worst case, catastrophic failure. A protection circuit will monitor the battery, and try to isolate it if it detects any abnormal behavior.

The TP4056 LiPo charger board that we use later as part of the sword controller, already has a protection circuit. Unfortunately, the output current is limited to 1A, which is a bit low for our LEDs. So, the controller PCB bypasses the TP4056's protection circuit by tapping directly into the battery output. However, this means that an external, higher current protection board is needed.

Identify the positive and negative battery pads on your protection circuit (it may look different than mine). These will generally be labeled B+ and B-. Solder the wires from the flexbatter to these pads, make sure the + wire goes to the B+ pad, and the - to the B- pad.

Next, identify the output pads from the protection board. The labels for these vary, but it should be fairly obvious. Solder wires to the + and - output pads. Make sure the wires are long enough to reach the center of the empty part of the cosplay_mount_base.

Finally, seal the protection circuit using hot glue to prevent any shorts.

Step 6: Controller Contruction Step 3:

Grab one of my Pro-Mini breakout custom PCBs (the files for ordering can be found in the intro).

Begin by soldering male headers for the Arduino Pro-Mini to my PCB. Make sure the headers are on the side with the "Arduino Pro-Mini" label. Pay attention to the locations of A4-8 on your Pro-mini. They will either be placed as a strip at the bottom of the Arduino, or as two pairs of pins along one side. My PCB accommodates both versions, but you must solder the headers in the correct positions.

As pictured, solder two 3 pin female JST-XH connectors to the A5 and TX rows on my PCB. Make sure that the connectors are oriented the right way round, and are on the correct side of the PCB. (ignore the pins on D2 and D3 in the picture)

Step 7: Controller Contruction Step 4:

Flip the PCB over. Solder a 3 pin JST-XH connector to the D2 row and headers for the TP4056 as pictured.

Step 8: Controller Contruction Step 5:

Flip the PCB back over and solder a 3 pin JST-XH connector to the D3 row.

Step 9: Controller Contruction Step 6:

Cut two ~45mm lengths of 22Ga stranded wire. Strip and solder these wires to the middle and "ON" pads at the end of the controller PCB. Using some extra solder, bridge the "CHG" pad to the middle pad. Normally, the three pads are used to switch between charging the LiPo and powering the controller, but because our switch only has one mode, we need to by-pass the "CHG" pad. This does mean that you are able to charge the LiPo while also powering the LEDs, which you should not do because it will confuse the TP4056 charger.

Finally, attach a male 2 pin JST-XH connector to the loose ends of the wires. Its exact orientation does not matter.

Step 10: Controller Contruction Step 7:

Grab an Arduino Pro-Mini and solder a 6 pin right-angled male 2.54mm header to the programming pin row as pictured. Make sure the header is on the correct side of the Pro-Mini.

Next, solder the Pro-Mini to the controller PCB headers as pictured. The pin labels on the PCB should match those on the Pro-Mini.

Step 11: Controller Contruction Step 8:

Flip the controller PCB over and solder the TP4056 charger board in place using the single male headers.

Step 12: Controller Contruction Step 9:

Grab the printed controller parts you already assembled. Solder the +/- wires from the LiPo mount to the Vin +/- holes on the controller PCB as pictured.

Next, you should be able to insert an edge of the controller PCB into the central groove of the 3D printed mount. Once it's in place, use some hot glue to secure it.

Lastly, you can insert the LiPo into the LiPo flexbatter as pictured. Make sure it is oriented correctly; + to + and - to - !

At this point, the controller is complete. Next we'll upload the code so that you can test your strip as needed.

Step 13: Code Uploading

You can find the code for the sword at my Github: here.

Before you can upload the code to the Arduino, you'll need two libraries:

  • My "PixelStrip" library
  • The Adafruit Neopixel library

You can download the PixelStrip library from here. Download all the files and place them in a folder named "PixelStrip" in the libraries folder of your Arduino install directory. You can install the Adafruit Neopixel library using the Arduino IDE's library manager.

To upload the code to the Arduino Pro-Mini you'll either need a FTDI programming module, or an Arduino Uno with a removable ATmega 328p chip (more details found here)

Once you have selected your upload method of choice, connect your FTDI programmer/Uno to the programming header of the Arduino Pro-Mini mounted to the control board. Please note that the programmer will have a specific orientation for connecting to the header pins. If you get it the right way round, the power indicator LED on the Pro-Mini should light up. If it doesn't, you won't have damaged the board, but you will need to reverse the connector's orientation.

After connecting to the programming header, you can upload code as you would for any other Arduino using the Arduino IDE. Be sure to select the "Arduino Pro-Mini", "ATmega328P (5v, 16MHz)" as the board using the Tools menu. If you have trouble uploading the code, try selecting the board to be an Arduino Uno, I've had some Pro-Mini's come with the UNO's bootloader (my code will still work just fine).

Once the code is uploaded, you should be able to test the LEDs using a test cable as described in Step 3 (leave the programming header connected to provide power, don't try using the LiPo initially) . The LED data is output through D3. Make sure your wiring order is correct; the connection to the controller is Data, Positive, Ground, while the strip should be Positive, Data, Ground. If you mess up either end, it's not a big deal; it's probably not going to damage the strip, and you can use a pair of tweezers to unpick the pins from the Dupont/JST connector to re-order them.

Step 14: Blade Construction Step 1 (prep):

Now that the controller is ready, we can start building the actual sword, beginning with the blade.

You should have already printed out all the components as listed in the Construction Overview step. The blade is assembled from blade parts 1-5 and two blade tip halves.

You should also prepare a strip of 164 LEDs by soldering two 1M strips together and trimming it down. When soldering two strips together, I found it helpful to tin both the front and back pads on each end before soldering them together. You will need to remove some of the sticky backing to solder both sides, but I found it resulted in a much more robust joint.

You should mark the mid point of the strip (between the 82nd and 83rd LEDs) with a marker. I didn't do this, but it would have helped to center the strip in the blade a lot.

Step 15: Blade Construction Step 2:

We will now insert the strip into the blade.

Begin by sliding all the blade parts along the wooden dowel using the central hole in each part. The order of the straight blade parts doesn't matter, but make sure the two base parts are oriented so that the center cut-outs for the gems match. Leave only about 4cm of dowel protruding from the very end of the blade parts; this is where the blade tip will be attached. Do not glue the parts in place yet!

Next, slowly feed the LED strip through the rectangular hole at the base of the right side of the blade (when held with the oval shaped hole in the top of the blade facing away from you). Make sure that the strip's data direction is going away from the base, towards the sword tip. If you strip has adhesive backing, do not remove the tape covering it; we want the strip to slide, not stick. You will probably need to wiggle the strip a bit to get it to move, but eventually the end should pop out of the top of the blade base part. Continue sliding the strip through the rectangular channel in each blade part. Be careful not to bend or crush the strip. I encourage you to test the strip repeatedly as you insert it. Once the strip has emerged from the very end of the blade, bend it at the middle mark you made after you spliced the strip together in the the previous step.

Slide the strip down the channel in the left side of the blade parts, just like you did with the right side, but with the data heading towards the base. Once the strip is most of the way through the blade, slide one of the blade tip halves onto the dowel section at the end of the blade. As pictured, the strip should fit into the channel in the blade tip, and if your bend is in the right place, the LEDs should be roughly aligned on both blade sides. Once you are satisfied, you may glue both blade tip halves in place using a glue of your choice (I used contact cement, but clear Epoxy will probably look better). Do not glue the other blade pieces in place yet!

At this point, if you are using a square dowel, you can move onto the next step. You do not need to glue the middle blade pieces in place, as they will be held between the base and the blade tip. However, if you are using a round dowel, the blade pieces can rotate. You will need slide each blade piece down a bit, apply some glue to the dowel, and then slide it back into place. Be careful of the LEDs when you do this. You should test the strip after each motion.

Step 16: Blade Construction Step 3:

Next, we'll attach the power and data connections to the strip.

Begin by sliding the base blade part back along the dowel to reveal the data in and out ends of the strip.

Cut five ~17cm lengths of 22Ga stranded wire. Ideally you'll use three different wire colors to differentiate between positive, ground, and data. If you don't have three different colors, you will need to label the wires in some way because you won't able to see the strip connections after the blade is assembled.

Slide the wire lengths through the blade base, using the same channel that you used for the strip. You should use three wires on the side with the data in for the strip (positive, data, and ground) and two on the data out side (just positive and ground). The positive and ground connections on the data out side are to ensure that the voltage is stable across the whole strip. If power was only supplied at one end of the strip, the voltage would likely sag enough towards the strip's end that it would effect the quality of the LEDs' colors.

Strip and solder the wires to the pads at each end of the strip as pictured.

Finally, slide the blade base up along the dowel to fully form the blade, re-inserting the strip into the channel as you do so. Glue the base in place when you're done.

At this point the blade is assembled, and we can now move on to finishing the exterior.

Step 17: Blade Construction Step 4 (Blade Finishing):

At this point, the sword blade is usable, but if it's anything like mine, you probably have some gaps/bumps where the blade parts come together. If you're okay with these, you can skip this step (note that this will probably make masking the blade for painting harder as well).

To smooth out the blade and fill in any gaps I used Aqua Coat Clear Wood Grain Filler. This is like Bondo, but is a gel rather than a putty, and does not sand as well. The most important thing is that it dries clear, so we can use it without worrying about obscuring the LEDs. Unfortunately, although we can fill in any gaps between the blade parts to make them smooth, we cannot eliminate the visible line at the joints. This is because of the way the light refracts when it meets the joint surface. I don't think it's possible to remove the lines, while still keeping the blade transparent, without printing the blade as one part, or casting it separately. If anyone has any ideas, please let me know.

I don't have any pictures of smoothing the blade, because the difference wouldn't be noticeable on camera, so you'll just have to use my directions.

Begin by applying the Aqua Coat only to the gaps or bumps between the blade parts. You can use pretty much any flat tool for this, even your fingers (with gloves!), just push the Aqua Coat into the gaps or up to the bumps. Try to keep the Aqua Coat in a thin layer, if you use too much it won't dry fully. Once a gap/bump is filled, wait for it to dry, and then sand it smooth using 220 grit sandpaper. The Aqua Coat seems to shrink slightly as it dries, so you may need to repeat this process a few times to fully fill a gap.

Make sure you use a dusk mask/respirator when sanding, and clean off any excess dust with a damp cloth after!

After all the gaps are filled, I applied a Aqua Coat layer to the entire blade. This will catch any random pockets, and hopefully produce a smooth blade overall. As before, sand the layer down with 220 grit sandpaper, and add more coats until smooth.

Finally, to protect the Aqua Coat, I sprayed the blade with a gloss coat.

Step 18: Blade Construction Step 5:

Next, we'll add the potentiometer to the blade. This is used for brightness control, but if you opted to not include it, then you can skip this step.

Please note that, as I described in the potentiometer notes step, I could not find a source for the potentiometer I used, so yours will look different. It should still work just fine though.

Begin by cutting three 25cm lengths of 26Ga wire. Ideally you'll use three different wire colors, otherwise you'll need to use some other method of differentiating the wires.

Strip and solder the wires to the three pins on the potentiometer. The central wire is used for reading the potentiometer, while the outer wires are positive and ground. The order of the outer wires does not matter. You should apply heat shrink to the joints the prevent shorts.

There are cutouts on each side of the blade for the gems. The rectangular cutout is for the potentiometer. Like with the LED strip, there is a rectangular channel that runs through the blade base to the potentiometer cutout. Feed the wires through the channel from the potentiometer side. You may have to wiggle them a bit to get them to slide in.

Once the wires are slid all the way through the channel, you should be able to glue the potentiometer into the cutout. Hot or super glue should work. Be careful not to gum-up the rotating part!

Step 19: Grip Assembly Step 1:

If you have not done so, print out one "Handle Upper", two of each "Guard Half" parts 1 and 2, and two "Handle Inserts".

Begin by gluing each of the handle inserts into the cutouts inside the handle as pictured. These have angled ends that should match the angled cutouts inside the handle.

Next, take all four of your guard parts and glue them to the sides of the handle as pictured.

Unless your printer can do very thin lines, you'll probably have a ridge where the guard parts meet the handle, and a gap between the guard parts. Since none of the handle is transparent, you can fill the gaps with Bondo Glazing Putty (or any other filler medium of your choice). There are a bunch of ways to apply Bondo, but I usually use a set of hand sculpting tools. Just smush the Bondo into the gaps, wait for it to dry, then sand it smooth using 220 grit sandpaper. Like Aqua Coat, Bondo shrinks a bit when it dries, so you'll probably need to do a few coats.

After smoothing, you generally spray the surface with a primer, which will reveal any gaps/dents you missed. However, as we build the rest of the sword, they'll be other parts that need smoothing, so it's probably easier to do the priming pass once everything is assembled.

Step 20: Grip Assembly Step 2:

Next, we'll assemble the push button PCB. This PCB features a debounce circuit to simplify reading the button input.

Grab one of the PCB's, and solder the components as labeled on the PCB. It's easiest if you start with the SMD parts, before soldering on the button itself. You should solder the button onto the same side as the SMD resistors and capacitor. The end result should match the picture above. All the SMD parts are 0805 sized, which are large enough to solder by hand.

Next, cut three 14cm lengths of 26Ga stranded wire. Like with the strip and the potentiometer, ideally you'll use three wire colors to differentiate the connections.

Next, strip and solder the wires to the PCB as pictured. The wires should come out of the same side of the PCB as the button. Please note that I'm using an earlier version of the PCB where GND and VCC were reversed.You should wire your positive (red) wire to VCC and your ground (black) wire to GND. If you get the wires reversed, the button will read LOW instead of HIGH by default and the debounce circuit will not work.

Step 21: Grip Assembly Step 3:

Please ignore the fact that the sword parts are painted in the pictures. For efficiency, you should paint all the parts when you get to the painting step.

Now we'll insert the button into the sword handle.

Along one side of the inside of upper handle there is a gap between two wide panels. You should be able to slide the button PCB under the panels, matching the pictures above. The button should line up with the square hole on the outer face of the handle (it's round in the pictures though). Glue the button PCB in place. I used hot glue for this, but it's a bit tight in the handle. You may want to try applying super glue to the PCB before sliding it in.

Next, print out one "Button Cap". Please note that you do not need to use transparent filament for this as I did.

The button cap will be square with a hole all the way through one side. Push the button cap through the handle hole and onto the button. It should fit snugly without glue. Make sure that the cap hole is aligned with the hole going through the handle base. This hole is to allow the threaded rods through the button cap (see Grip Assembly step 7).

Using the button cap, you should be able push the button easily. Make sure that the cap is raised slightly from the handle's surface, leaving room for it to move down when pressed.

Step 22: Grip Assembly Step 4:

Please ignore the fact that the sword parts are painted in the pictures. For efficiency, you should paint all the parts when you get to the painting step. Also Ignore the gems on the sword blade and handle.

Now we will join the sword blade and handle together.

Begin by cutting the dowel attached to the sword blade, leaving about 2cm remaining at the base of the blade.

Next, thread the wires from the blade into the rectangular cutouts in the sword handle. As pictured, the wires from the pot should go through the upper central hole, while the wires from the strip should go through the the holes on the left and right sides.

Apply a strong glue of your choice to the dowel and sword base (I used epoxy). While guiding the wires into the base, slide the dowel into the rectangular hole in the handle, joining the sword's blade and handle securely together. Clamp (if you can find a way to!) or hold the blade and handle together to keep pressure on the joint while the glue sets.

Step 23: Grip Assembly Step 5:

Please ignore the fact that the sword parts are painted in the pictures. For efficiency, you should paint all the parts when you get to the painting step. Also Ignore the masking tape.

There will probably be a small gap between the sword blade and the handle. Like with the guards, you can fill and smooth this gap with Bondo.

Next, print out two "Button Molding" parts. These are to accentuate the gems on the handle. I could have formed these into the handle, but then you would be forced to use a rectangular gem. Their design is simple, so, by keeping them as separate parts, you can redesign them if you want to use a different shaped gem.

Unless you can use a very fine layer height, you'll probably have some ridges along the top of the moldings. I used Bondo to smooth these out.

Glue the moldings to either side of the sword handle as pictured. They should be centered around the button (you'll have to eyeball the one on the handle's back to match the front).

Step 24: Grip Assembly Step 7:

Next, we'll add the threaded rods to the sword handle. These are used both to keep the upper and lower handle parts together, and to provide additional strength to the handle.

Cut two 18.5cm lengths of M3 threaded rod using a hacksaw. Be sure that you can thread an M3 nut onto at least one end, cutting can sometimes damage the thread ends.

Using a strong glue of your choice (I used epoxy), coat roughly half of each rod.

Next, slide the glue coated side of the rods into the holes on each side of the handle end as pictured. You should be able to insert them all the way until they reach the base of the blade, leaving roughly half of the rods exposed.

Step 25: Grip Assembly Step 8:

Now it's time to connect JST-XH connectors to the strip, button, and potentiometer wires coming out of the handle.

Strip and crimp JST-XH female pins to each of the wires. Then, insert the wires into JST-XH connectors, matching the pictures and diagram above. The positive/ground wires should be grouped with whatever data wire they are associated with (ie the strip's positive/ground wires should be in the same connector as the strip's data wire). Be aware that the wires must be in the correct order in the connectors. In the pictures, the potentiometer and button wires use blue colored data wires. They both use the same wiring order, so their connectors will look the same. The connector with the green wire is the data in and power for the strip. The final connector is the extra positive/ground connector for the strip, so it has no data wire. For all the connectors pictured, black wires are ground, red wires are positive.

Step 26: Pommel Assembly Step 1:

Set aside the assembled sword parts for now. If you have not done so, you should print out one "Handle Lower", one "Pommel Handle Mount", one "Pommel Middle Cap", one "Button Cap", one "Pommel End Cap", and two "Pommel Slide Insert".

Take the Pommel Middle Cap, and each Pommel Slide Insert. Glue the slide inserts into the cutouts on the bottom of the middle cap as pictured.

Next, take the Handle Lower and the Pommel Handle Mount. Glue the handle mount onto the end of the lower handle as pictured. The outer rim of the handle mount should fit snugly over the lower handle's end.

Step 27: Pommel Assembly Step 2:

Take the big push switch, the pommel middle cap (with the slide inserts glued in), the button cap, and the pommel end cap.

Insert the switch into the cutout in the pommel middle cap, and the button cap into the hole in the pommel end cap as pictured. You should hot glue the switch to the middle cap, but make sure the button still works. Do not glue down the button cap.

Next, apply plastic/super glue to the outer ridge of the middle cap, and glue it to the pommel end cap as pictured. The two parts should be flush with one another. The bottom of the button cap should press against the switch's center button. Pressing down the button cap should actuate the switch. You may need to add a drop of light oil to get the button cap to slide smoothly.

Step 28: Pommel Assembly Step 3:

Next, take a female 2-pin JST-XH connector. Solder the connector to the switch tabs on the under side of the pommel you assembled in the last step. The orientation of the connector doesn't matter. Your switch has shorter tabs than the one I used, so you'll probably need to add a bit of 22Ga wire to each tab to make the connections.

Cover the tabs and JST solder joints in hot glue to prevent shorts.

The pommel is now complete, you should be able to slide it onto the lower handle as pictured. It should be able to rotate and lock in place.

If you have any major gaps, you can fill them with Bondo, like in the previous steps.

Step 29: Painting

At this point, all the major components of the sword are assembled, so it's time to paint!

I'll detail the painting steps I used below, but obviously, how you paint the sword is completely up to you.

Be sure to wear a mask when spray painting!

Please also note, that although the parts are separated in the pictured, your sword will be mostly put together. This should make painting faster.

To begin, I masked off all but a thin central section on both sides of the blade using masking tape. I kept the section about 1cm wide, which keeps the edges bordered on where the LED strips are located. To help keep the section straight and even, I recommend using one continuous strip of tape. At the sword base I masked off all the sloping sections, leaving only the flat diamond in the middle. I also did not mask off the triangular part of the base that transitions to the hilt.

I did not mask off anything on the sword hilt as I painted it all one color.

You should mask off any exposed electronic parts, including the potentiometer, wires, and the pommel's JST connector to protect them.

I started painting by applying a coat of filler primer (linked in the supplies) to all the parts. Whenever you are using any spray paint you should make light, quick passes, building up the paint over time. This keeps the coat even, and prevents the paint from running. The primer layer will both expose any imperfections in the sword (which you can fill with Bondo) and provide a good surface for other paints to stick to. Filler primer is useful for 3d prints, as it is thick enough to partially fill in layer lines. After filling in any gaps, you should apply a fresh layer of primer.

Once everything is primed, I moved on to the main gold coat. I kept it simple, applying gold to everything evenly, but you could make a more elaborate paint scheme using using other colors and more masking.

Once the gold is dry, you can remove the masking on the blade. You should remove the tape slowly, being careful not to pull up any paint where the paint meets the tape's edge.

Next, to make the blade a bit more sparkly, I applied a coat of "Krylon Glitter Shimmer Opulent Opal" to the entire blade. This is basically glitter mixed with a clear coat.

Finally, to protect and seal the sword, I applied a gloss spray coat to everything. This makes the gold more shiny, and helps prevent damage to the paint.

With the painting done, you can glue rhinestone gems to the buttons on the hilt and pommel.

Step 30: The Blade Gems

With the painting on the sword done, we can add the gems on either side of the blade.

If you have not done so already, you should print out one "Gem Switch Cap", one "Gem Cap", one "Gem Support", two "Gem Inset Rings" and optionally one "Gem Switch Mount" if you are not using the potentiometer. You do not need to print them using transparent filament as I did.

You should glue the Gem Cap to the Gem Support. There's a central hole you can use to align the parts. This should allow the gem to be inserted into the oval cutout on the blade.

If you are not using the potentiometer, you should glue the Gem Switch Cap to the Gem Switch Mount. The mount should fit inside the D-shaped hole on the underside of the gem.

How you paint the gems is up to you. I used a purple spray paint followed by a coat of the Krylon Glitter Shimmer, and a final gloss clear coat. You can probably roll the glitter and paint into one by using some Krylon Glitter Blast.

You should also paint the gem inset rings to match the sword blade.

Once the gems are painted, you can glue them into the cutouts on the sword blade using plastic/super glue. If you are using the potentiometer, the gem switch mount should fit onto to the potentiometer's D-shaped shaft. Be sure not to get glue into the potentiometer's mechanism.

Finally, you can push and glue the inset rings into position around each gem. These help obscure the transition between the blade and the gem, and make the gems feel more attached to the blade.

Step 31: Controller Connections

As pictured, slide the controller battery first into the upper handle. It'll be a snug fit, so you'll need to adjust the wires to slide around the controller.

Next, take each of the connectors coming from the sword and connect them to the controller as follows:

  • Button connector connects to D3 - the lone connector on the TP4056 side of the controller
  • Potentiometer connects to A5 - the bottom connector on the Pro-Mini side of the controller
  • Strip data connector connects to D2 - the middle connector on the Pro-Mini side of the controller
  • Strip extra connector connects to TX - the top connector on the Pro-Mini side of the controller

You should be able to test the sword by powering it using the FTDI header on the Arduino Pro-Mini.

Step 32: Final Assembly and Controlling the Sword

As the final step in the sword's construction, take the lower handle and slide it along the threaded rods in the upper handle as pictured. The upper and lower handles should become flush with one another. The ends of the threaded rods should protrude from the end of the lower handle.

Next, grab two M3 lock nuts and washers. Fasten them to the ends of the threaded rods. Make sure they are tight, because they are the only thing holding the handle together.

Finally, take the pommel and connect its female JST connector to the male one on the controller. Push and lock the pommel back into place. Pressing the button on the end of the pommel should turn the sword on and off.

You can charge the LiPo using the micro USB on the TP5056 module.

Congratulations your sword is now complete! :)

This has been a looong Instructable (with one step left haha!), so if you've made it this far, thank you for reading! :)

If you have any questions, please leave a comment and I'll get back to you.

Sword Controls:

Pressing the gem button once on the sword handle will restart the current effect (it will also restart after a set period). Double tapping the button will advance to the next effect. Triple tapping it will put it into brightness mode.

In brightness mode you can rotate the gem on the sword blade to change the LED strip's brightness. The LEDs will be fixed to a solid blue to make it easier to judge the brightness. Single pressing the handle gem will take you out of brightness mode.

Whenever you advance effects or change the brightness, the setting will be saved to the Arduino's EEPROM memory after a short duration. EEPROM persists after the Arduino is switched off, so next time you power up the sword, your previous effect and brightness will be re-applied.

You can disable both EEPROM usage and/or brightness control (if you aren't using the potentiometer) by settingEEPROM_MODE_ENABLE and/or BRIGHTNESS_MODE_ENABLE to false in the code.

Step 33: Scabbard Assembly (optional)

A sword isn't much good if you have to carry everywhere in hand, so I designed a basic scabbard to hold it while not in use. As a bonus, the scabbard is open, allowing you to show off the sword's glowing effects even when sheathed.

The clip I designed should fit onto belts up to 29mm wide and 4mm thick. I kept the clip simple enough that other people should be able to adjust the design for their own needs.

You can assemble the scabbard for left-handed, right-handed, or horizontal configurations. The files are labeled with the configuration. In the horizontal configuration, the scabbard is not tilted to either side. Right/left hand refer to the hand that is used to draw the sword. So for a right-hand configuration, the sword hangs off the left hip.

To make the scabbard you'll need to print one "Scabbard Part 1", one "Scabbard Part 2" (right or left handed) and one "Scabbard Clip" (right, left, or horizontal version). You may need two part 2's and clips for the horizontal configuration.

Assemble the scabbard as pictured, using a glue of your choice to join the parts. Note that the right hand version is pictured.

I painted the scabbard using similar methods to that of the sword, so a primer coat, a gold coat, and finally a gloss coat.

To protect the sword blade I glued some strips of 1mm thick craft foam to the inside of the scabbard.

With that, everything is complete. Thank you for reading! If you have any questions please leave a comment below and I'll get back to you.

Halloween Contest

This is an entry in the
Halloween Contest

Be the First to Share


    • The 1000th Contest

      The 1000th Contest
    • Battery Powered Contest

      Battery Powered Contest
    • Hand Tools Only Challenge

      Hand Tools Only Challenge

    11 Discussions


    10 hours ago

    Very well done! Your attention to detail is amazing.
    - It's an achievement to get all those components in the same cross-section as the 18650; that's really compact
    - The exploded parts view looks professional
    - The step-by-step instructions are clear and detailed
    I don't think I'll make the sword, but it inspires me to make other battery-powered LED projects. It's good to see an example of integrating battery, charge control, and microcontroller.
    One question: did you consider APA102 LEDs? I think you picked this type of LED because it was 2835 instead of 5050, right?


    14 hours ago

    Fabulous Design and a lot of work even for a nerd.. :) So, where is my Matching Cape? giggle...I think this is a great design and many children would love it as would many cosplaying adults. Good job!


    2 days ago



    Reply 2 days ago

    Thank you! :)


    4 days ago

    Very cool project. I am trying to load your code but no matter what i do i get this error?
    Arduino\libraries\Adafruit_GFX_Library\Adafruit_GrayOLED.h:30:32: fatal error: Adafruit_I2CDevice.h: No such file or directory

    I found that i have to use Version 1 of the Adafruit_GFX_Library. The later versions no longer have the Adafruit_I2CDevice.
    It compiles now and looks very cool on my project.
    Thanks for sharing!


    Reply 4 days ago

    That's weird, it works on my end. I think maybe Adafruit split their bus supports to a separate library, so you might have to download that.

    Regardless, I'm not actually using any Adafruit_GFX functions in my library (nor do I have any plans to atm), so I've removed it as a dependancy.

    Thank you you bringing this to my attention. :)

    Penolopy Bulnick
    Penolopy Bulnick

    5 days ago

    This is amazing and I love it! I just love how you use lights in your projects :D


    Reply 5 days ago

    Thank you! I'm definitely a Led addict haha. :D


    Reply 4 days ago

    Sounds just like me :D Very nice project; I have to try that sometime!


    5 days ago on Step 33

    Very impressive (and in many ways similar to a project I am working on).
    One minor pet peeve: why is everyone referring to JST XH connectors as 2.54? according to official specs, they have pitch of 2.50 mm....


    Reply 4 days ago

    Haha, I guess it's b/c they are compatible with the classic 2.54mm Dupont connectors, so sellers on Amazon, Ebay, etc list them as 2.54mm for SEO purposes and that gets stuck in everyone's head.