The spirit of Hanukkah, the Festival of Lights, is shared by all people who love freedom.
—Norma Simon

Late December marks the holiday season for much of the world. Seasonal songs, tree decorating and gift-giving seem to dominate the landscape. Everyone at the company Holiday party is decked out in their favorite Ugly Christmas Sweater, laughing in their red and green as Santa's booming Ho, Ho, Ho drowns out every other sound.

Here's an opportunity for all the Jewish folks to light up the holidays in their own style. Add NeoPixels and a Gemma M0 to your handmade Menorah sweater, and be the life of the party. Touch the center shamash candle to light all eight Hanukkah candles, and celebrate each magical night with your family and friends.

This is an easy beginner project - just perfect for crafting together with your kids this Holiday season. There's no soldering or sewing required. Use our drag-and-drop code, or dig in and learn to create your own colors and sequences. Make one for everyone in your family and pose for the perfect Hanukkah family photo.

Mazel Tov!

Materials Needed

The Adafruit Gemma M0 is a super small microcontroller board, with just enough built-in to create many simple projects. It may look small and cute: round, about the...
$9.95
In Stock
We have all sorts of LED strips for a wide range of needs. Chonky strips? We got those! 
$19.95
In Stock
Lithium-ion polymer (also known as 'lipo' or 'lipoly') batteries are thin, light, and powerful. The output ranges from 4.2V when completely charged to 3.7V. This...
$7.95
In Stock
You have a Circuit Playground Express, and want to connect some wires to it for adding LEDs or sensors or speakers? You can use our...
$1.50
In Stock

You'll Also Need

Tools

  • Soldering iron & solder (optional)
  • Vinyl cutting machine (like a Cricut or Silhouette) OR a good sharp utility knife
  • Iron
  • Screwdriver
  • Awl

We'll wire the NeoPixel strand to the Gemma as shown: the red wire goes to VOUT, the IN end of the middle wire to D1, and the remaining wire goes to G.

We could connect the power and ground wires from either end of our NeoPixel strand, but the middle data wire must be connected to the IN end or the lights won't work. It can be a bit tricky to tell which end is IN and which is OUT on these pixels, but if you get your magnifying glass out and look really closely, you'll see a tiny red or green dot on each pixel. The dot isn't perfectly round - it has a pointy end which points in the direction of data flow. So be sure to connect to the end with the tiny arrows pointing away.

 

Find the "in" end of your LED strip. For mine, it was the end with the female connector attached - but don't trust that your strand is the same as mine. Check for the tiny green or red dots to figure out the data flow direction.

Leave the "in" end alone for now, and cut off the connector from the "out" end of the strip. For my strip, this is the male connector.

Solder or bolt this connector to your Gemma M0: the red wire goes to VOUT, the middle wire goes to D1 and the remaining wire goes to G

If you're new to soldering NeoPixels, check out this guide for step by step instructions.

Plug your light strand in to your Gemma with the connector, and plug in your battery. You should see the first and fourth light come on. Touch the pad on the Gemma marked D0 a few times to make more lights come on.

Trim your strand between the 9th and 10th pixels. Keep the rest of the light strand for another project.

MakeCode is Microsoft's ritzy drag-and-drop code editor. It makes it easy to get up and running with the Gemma M0. 

Find the Gemma M0 code editor at maker.makecode.com

Here's my completed project. This code will light the center shamash pixel in red, then light the 8 individual candle pixels sequentially in gold each time the D0 capacitive touch pad is touched.

Click the Download link at the bottom, plug your Gemma M0 into your computer, click or double-click the reset button and drag the file onto the resulting GEMMABOOT drive. 

Or, follow along below to create your own project from scratch.

Code It Yourself

Head to https://maker.makecode.com and select New Project. Choose the Gemma M0 board. Give your project a name. I called mine Hanukkah Sweater.

On Start Block

First we'll write the code that runs once, when the Gemma powers up. This is where we set up our variables and set up our pixel strip.

Click the LIGHT tab.  Another tab titled MORE... will appear. Click on that one to find lots of options for attaching and controlling a NeoPixel strand soldered to the Gemma M0. Drag an instance of set strip to create WS2812 strip on LED with 30 pixels out into your workspace and place it inside the on start loop, which is usually there by default in a new project. (If it's not there, you can find it under the LOOPS tab).  Change the pin to D1 instead of LED, and enter 9 pixels, one for each of our candles.

Note: NeoPixels are also called WS2812 pixels, and DotStars are also called APA102 -- make sure you've got the right ones selected.

Next, drag an instance of strip set brightnessinto your on start loop.  Set the brightness to whatever you'd like.  I want them as bright as possible, so I chose 255.

Above the LIGHT tab there's another tab called PIXEL. Anything in here controls the onboard NeoPixel on the face of the Gemma M0. I want this turned off on my sweater -- no stray status lights for me, thank you -- so I dragged an instance of set pixel color into my on start loop and made it black. This will make sure the pixel stays off.

Go to the VARIABLES tab and create a new variable called day.  We'll use this to tell the Gemma which day of Hanukkah it is, so it knows how many candles to light.

From VARIABLES, drag an instance of set day to 0 into your on start loop. This will make sure we start with the first pixel, which is numbered 0.

Finally, let's make the middle shamash pixel red. From LIGHT > MORE... drag an instance of set strip pixel color at 0 to red and change the pixel number to 4. (Yes, it's the 5th pixel in the strip, but remember we're counting from 0, not from 1).

FOREVER Loop

Next we'll set up the main body of the code, in our FOREVER loop. Anything in this loop will run over and over, forever. 

We can keep this part really simple. 

Go back to the LIGHT > MORE... tab and drag an instance of set strip pixel color at 0 to red into your forever loop. Things in this loop will run forever, over and over.  Change the 0 to your day variable, and change the red color to orange or gold or whatever you'd like your candles to be.

INPUT Loop

Now, all we need to do is set up our input. We want each pixel to light up in sequence whenever we touch our capacitive touch pad (D0). 

Drag an instance of on touch D0 click from the INPUT tab. From VARIABLES drag change day by 1.

 

Testing It Out

You may have noticed that over on the left, a little NeoPixel emulator strip has appeared beneath your Gemma M0. This emulator will run whatever your code is doing. This is a really easy way to preview your code and see if it's working without having to download it every time.

Try clicking your D0 pad in the emulator a few times and see what happens.

It's working! Each candle turns sequentially gold when we click the pad. 

However, it's not quite perfect. The shamash candle is at pixel 4, and this code overwrites the red color as it counts up. We can fix this by setting the pixel back to red each time the button is clicked.

Add an instance of set strip pixel color at 4 to red into your on touch loop. Try the emulator again and see what happens.

Closer! This code sets the pixel to orange but then sets it back to red again. This code accomplishes the goal.

Adding Logic

We can go with this code, or we can get fancy and add one more step. We can use logic to get our day variable to "skip" pixel 4, for a much smoother user experience.

Under the LOGIC tab, find an if true then block and drag it into your forever loop. Grab a comparison block to replace the true, then change the first 0 to our day variable and the second 0 to 4. Then, add another change day by 1 block inside the logic block. 

Now, if the pixel number is 4, the variable day will change by 2 instead of changing by just 1.

Try this out on the emulator to see what happens.

Resetting 

This works great! We can stop here, or add one more fancy feature: we can code a reset at the end, so if we accidentally go too far (or just want to be able to play with the sweater indefinitely) the code will start over at the beginning.

Select your logic loop and copy/paste it into your workspace to get another instance. 

Make it read if day = 9 then set day to 0. This resets our variable to the first candle.

Also drag (or copy/paste) another instance of set strip all pixels and set it to black. This will turn off all the pixels so we can light them again.

Try it out on your emulator. Once you're happy with the way it works, click the DOWNLOAD button to program your Gemma. 

Plug your Gemma M0 into your computer using a USB cable. Click the tiny Reset button in the middle of the board and the onboard pixel will turn green. When the lights turn green, a new drive will appear on your computer called GEMMABOOT.

In MakeCode, click the Download button to download your code to a file. Drag this file onto the GEMMABOOT drive.  It may also ask you if you'd like to pair the board to your computer.  Feel free to follow the directions to do this (you may need to update the bootloader), or you can skip it and simply drag the downloaded file onto GEMMABOOT.  Pairing the board makes it easier if you want to download and test again and again, since it will load the code automatically without you needing to drag the file each time.

Troubleshooting

If it's not working, here are a few things to check:

  • Did you set your strip to pin D1 in the on start block? I seem to miss this step sometimes.
  • Did you call the onboard pixel instead of the strip? These blocks are similar and easy to confuse. Make sure you're suing set strip pixel color and not set pixel color
  • If you just can't make it work, try starting with the completed code linked at the top of the page and working backwards

If your GEMMABOOT drive is not appearing, check out this guide for more troubleshooting tips.

Make the Menorah

I looked and looked (and looked!) for a silly Hanukkah sweater to use in this project. I saw around 1,000 ugly Christmas sweaters but not a single Hanukkah sweater could be found, silly or otherwise.

This seems somehow unfair. But, all the more reason to make our own! 

Find a sweater that's got a fairly tight weave and fits somewhat loosely. Blue is good.

Heat Transfer Vinyl

There are lots of iron-on vinyl colors and brands available. I'm using an iridescent vinyl from Siser. Check out their site for lots of different options. You can also find this stuff at almost any craft store, near the vinyl cutting machines.

Download the menorah graphic linked below.

If you're cutting by hand, you can print out menorah_print.pdf to use as a pattern. Feel free to size it up or down to fit your sweater. On me, 8" wide is just the right size.

If you're using a cutting machine, upload menorah.svg to your cutting machine's software program. Resize it to your preferred size and get ready to cut.

Cutting with a Vinyl Cutting Machine

Heat Transfer Vinyl (HTV) can be a bit tricky to work with. The mistake I most often make is forgetting to place it on my cutting mat face down. You want the machine to cut through the back two layers and leave the acetate film protecting the front intact.

Use the Heat Transfer Vinyl setting and it should come out perfect.

Remove the design from the cutting mat. Still working from the back side of the vinyl, weed out everything that isn't the menorah. Leave the menorah design stuck to the acetate layer.

Cutting by Hand

If you're cutting by hand, it can be tricky to cut through only the back two layers. It's possible if you're gentle with the knife, but it may be easier to cut through all 3 layers and then put another layer of paper or acetate over the top when you're ready to iron.

Placement

Decide where you want your design to lay on your sweater. I recommend putting the sweater on and pinning the design in place so you know how it will look when it's being worn. It seems to lay out much differently on the body than on the table.

Remember to leave room above the candles for the NeoPixel "flames".

Interfacing

Most sweaters are fairly stretchy. Heat Transfer Vinyl is decidedly not stretchy. This could become a problem - if the sweater stretches too much, your menorah will rip.

The easiest solution is to add a patch of fusible interfacing to the inside of the sweater to take the stretchiness out of the area where we'll fix the vinyl. Fusible interfacing is sold by the yard at fabric stores, or you can find it online. It comes in a variety of weights. Its purpose is to stabilize an area of fabric and keep it from stretching, so it's perfect for applications like this.

I'm using a medium weight interfacing since I have a medium weight sweater.

Cut a piece of interfacing a little bigger than your menorah design. Leave an extra inch or so on the top for the flames. Round the corners (I didn't do this for my sweater but I wish I had).

Turn your sweater inside out and fuse the interfacing to the wrong side of the area where your menorah will be. Don't fuse the menorah itself yet.

Use a marker to transfer the layout of the menorah to the interfacing. Be accurate here. We'll use these marks to place our NeoPixel lights.

Attach the Electronics

I'm using Alene's Fabric Fusion embellishing glue to affix the pixels to the interfacing. It dries clear and flexible and won't seep through to the outside and show. It will also be washable after 24 hours.

Starting from the left side, place the first pixel on the first mark. Pin the wires neatly and add a dab of glue. Continue with the rest of the pixels, working from left to right. Let the glue dry completely, then remove the pins.

To keep the wires from catching on anything, we'll add a second layer of interfacing over the pixels and wire. It's always a good idea to unplug the power before ironing the pixels. Be as gentle with the heat as you can while still fusing the interfacing. The pixels will stand up to a few seconds of ironing.

Turn your sweater right-side out. Now it's time to iron on the HTV menorah. Line it up carefully with the lights. Follow the directions on your Heat Transfer Vinyl. Let it cool completely before peeling off the acetate layer.

Use an awl to poke a small hole through the interfacing, just between the center shamash light and its candle. 

We'll attach the Gemma to the back of this light with our bolt-on kit, right through the sweater. Place the Gemma face-down on the interfacing. Thread the screw through the hole and tighten the bolt. 

This screw will hold the Gemma in place, and will also act as our capacitive touch switch. It's tiny enough to go unnoticed in the fibers of your sweater. 

Touch the tiny screw below the shamash, and use it to light each candle one by one, starting with the right-most candle.

Put a rubber band around your battery, trapping the wires inside. This will provide strain relief - these wires can break really easily. Stick a piece of sticky-back velcro on the battery, and stick the other side someplace within easy reach on the interfacing square.

Use the on/off switch on the face of the Gemma M0 to power your sweater on at dusk. Touch your shamash to light each candle. 

When you're done wearing your sweater, unscrew the bolt and unplug the connector before washing. Let the sweater and electronics dry completely before powering them back up again.

This guide was first published on Dec 17, 2020. It was last updated on Dec 17, 2020.