Mystical LED Halloween Hood

Create glowing eyes for your costume! This project is ideal for any character with glowing eyes, like the Black Mage from Final Fantasy, Jawa from Star Wars, or Orko from He-Man. Two NeoPixel Jewels can appear any color or animating pattern, and they are driven by a GEMMA microcontroller powered by a 500mAh lipoly battery in a 3D printed pocket.

Before you begin, check out these prerequisite guides:

For this project, you will need:

NeoPixel GEMMA Circuit

Connections are as follows:

  • GEMMA D1 to 1st NeoPixel Jewel IN
  • 1st NeoPixel Jewel OUT to 2nd NeoPixel Jewel IN
  • GEMMA Vout to 1st and 2nd NeoPixel Jewel PWR
  • GEMMA GND to 2st and 2nd NeoPixel Jewel GND

Strip, tin, and solder wires to the NeoPixel Jewels according to the circuit diagram. It’s easiest to insert the wires from the front of the PCB and solder on the back, where there aren’t any other components to bump into.

Be sure to leave enough slack between jewels to space your eyes out in your costume! Extra slack is ok, you can always tack it down with a needle and thread.

Solder long wires (at least 18 inches) between GEMMA and the 1st NeoPixel jewel according to the circuit diagram. 

You can optionally diffuse the LEDs by covering them in white paper and/or hot glue.

Arduino Code

If this is your first time using GEMMA, work through the Introducing GEMMA or Gemma m0 starter guide first; you need to customize some settings in the Arduino IDE. Once you have it up and running (test the ‘blink’ sketch), then follow the instructions on the following page for installing the NeoPixel library:

NeoPixel Überguide: Arduino Library Installation

Plug in your circuit via USB and test that all LEDs are functioning properly with the NeoPixel example sketch ‘strandtest.’ Please refer to the Gemma starter guide and the NeoPixel Überguide if you haven’t before.

Once you’ve verified your wiring is correct, load your desired color code or the sketch below that gently pulses the LEDs red.

//fades all pixels subtly
//code by Tony Sherwood for Adafruit Industries

#include <Adafruit_NeoPixel.h>

#define PIN 1

// Parameter 1 = number of pixels in strip
// Parameter 2 = pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
//   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(14, PIN, NEO_GRB + NEO_KHZ800);

int alpha; // Current value of the pixels
int dir = 1; // Direction of the pixels... 1 = getting brighter, 0 = getting dimmer
int flip; // Randomly flip the direction every once in a while
int minAlpha = 25; // Min value of brightness
int maxAlpha = 100; // Max value of brightness
int alphaDelta = 5; // Delta of brightness between times through the loop

void setup() {
  strip.begin();; // Initialize all pixels to 'off'

void loop() {
  flip = random(32);
  if(flip > 20) {
    dir = 1 - dir;
  // Some example procedures showing how to display to the pixels:
  if (dir == 1) {
    alpha += alphaDelta;
  if (dir == 0) {
    alpha -= alphaDelta;
  if (alpha < minAlpha) {
    alpha = minAlpha;
    dir = 1;
  if (alpha > maxAlpha) {
    alpha = maxAlpha;
    dir = 0;
  // Change the line below to alter the color of the lights
  // The numbers represent the Red, Green, and Blue values
  // of the lights, as a value between 0(off) and 1(max brightness)
  // EX:
  // colorSet(strip.Color(alpha, 0, alpha/2)); // Pink
  //colorSet(strip.Color(0, 0, alpha)); // Blue
  //colorSet(strip.Color(alpha, alpha/2, 0)); // Yellow
  colorSet(strip.Color(alpha, 0, 0)); // Red

// Fill the dots one after the other with a color
void colorSet(uint32_t c) {
  for(uint16_t i=0; i<strip.numPixels(); i++) {
      strip.setPixelColor(i, c);;

Sewing Pattern

Download and print our hood/cape pattern, then tile and tape the pieces together, then cut out the patten pieces and arrange them as shown on a folded piece of thick coat fabric (fold is along top edge in photo)

Trace around the edge of the pattern with tailor’s chalk, then also trace a seam allowance outside that line 1/4″ to 5/8″ or more depending on your preference.

Cut out pattern pieces and flip them over. Unpin the paper pattern and flip it over too, using it to trace its shape onto the other side of the folded fabric (so each fabric piece has a full pattern perimeter traced). This makes it easier to sew in the right place!

Pin shoulder seams and darts together and stitch, removing pins as you go.

Pin the hood and cape pieces together along the neckline, starting with the center back crease. Machine stitch along the seam and remove pins as you go.

To finish the hood, fold with top edges aligned, right sides together, and stitch the seam.

Cut out a round piece of translucent fabric to use for the face panel, roughly the same size as the hood opening.

3D Printed Battery Pocket

Print a sew-on pocket for your lipoly battery! The pocket protects the battery from abuse and also makes it easy to remove the battery for charging. It’s not strictly necessary, though, but bare lipoly batteries can be risky, so unless you protect it in some way, we recommend using a hard shell alkaline pack like the 3xAAA holder.

TPE Flexible Filament

The battery pocket works best when printed in flexible material like Ninjaflex or Semiflex. This material requires a direct-drive extruder system and can be challenging to print. We recommend Semiflex because it handles overhangs better than Ninjaflex, and has a shell hardness (98A). Follow the print settings below for best results.

Printing speed30mm/sec
Raft / Support MaterialOFF
Extruder Temperature220-230c
Heated Bed20-50c (if applicable)

The part should be centered on the print bed and ready to print “as-is”. We recommend using CURA, or Simplify3D to slice the file.

Final Assembly

Fold over a 1/2″ seam along the front edge of the hood and thread in a long piece of galvanized wire (we’re using 19awg). Twist the ends and stitch them down to anchor the wire. This wire gives structure to the hood and helps support the weight of the face panel.

Try on the hood and decide where you want the face panel to be, then pin and sew it in place by hand with a few tack stitches, or run it through the sewing machine.

Once the face panel is in place, try the hood on again to find the placement of the eyes. Hand stitch them in place using the mounting holes on the PCB.

Stitch through unused holes on GEMMA to affix it to the inside of the cape’s lapel. Stitch the battery holder near GEMMA and insert the 500mAh rechargeable lipoly battery.

Wear it!

Enjoy your spooky new costume! We hope this serves as a jumping off point for your own project. Dress it up, dress it down, change the fabric and LED color– the posibilities are numerous!

It’s pretty easy to see out of the translucent face panel, and to remove the hood for eating/drinking. 

Originally posted on Adafruit

%d bloggers like this: