We don't need any snow to build this awesome snowman.

We just need some foam balls, stiff wire, festive decorations, a Circuit Playground Express (CPX) with CRICKIT, a servo motor and some extra electronic goodies.

To make this snowman dance, just touch the top of his hat! This triggers a servo in his belly that moves his body around.

This guide will show how to program this groovy guy using Microsoft MakeCode, an easy to use block-based programming system.

Prerequisite Guides

Reading or at least skimming through these guides before beginning will help you understand this build. You can always refer back to them if you need help.

Adafruit Parts

1 x Circuit Playground Express
Circuit Playground Express is a great introduction to electronics and programming
1 x Adafruit CRICKIT for Circuit Playground Express
Crickit: Creative Robotics and Interactive Construction Kit is an add-on to Circuit Playground Express
1 x Micro servo
A little servo can rotate approximately 180 degrees (90 in each direction)
1 x Small Alligator Clip Test Lead (set of 12)
Enables capacitive touch for the snowman's hat
1 x USB cable
USB A to Micro-B (Plugs into computer to program CRICKIT and Circuit Playground)

Optional but recommended: 

1 x Copper Foil Tape with Conductive Adhesive - 6mm x 15 meter roll
Enables capacitive touch for the snowman's hat

Tools and Materials

  • 3 white foam balls: roughly sized 13 cm, 10 cm, and 7 cm in diameter (found at craft stores)
  • Thick wire (around 16 gauge - found at craft stores)
  • Medium to large width corrugated cardboard - need at least 1 sheet sized 18 x 18 cm
  • Black foam sheet
  • Orange model magic (for carrot nose)
  • Black rhinestones (for eyes and mouth)
  • Black buttons
  • A couple small twigs
  • Pencil
  • Ruler
  • Scissors
  • Hot glue gun + a couple glue sticks
  • Aluminum foil
  • Glue stick
  • Wire cutter (for cutting and bending wire)

Attach the CPX (Circuit Playground Express) to the Crickit following this guide.

  • Attach an alligator clip to capacitive touch input A3 on the CPX.
  • Plug the servo into input 1 on the servo section on CRICKIT. Orient the leads such that the yellow wire is on the outside edge of CRICKIT.
  • For power use a 5V 2A (2000mA) switching power supply plugged into the 5V DC jack. When you want the project to run, please be sure the tiny on/off switch next to the CRICKIT's DC jack is on.

What is MakeCode?

MakeCode is a web-based code editor for physical computing made by Microsoft.

What does that mean for you? It means you can program your Circuit Playground Express to do almost anything you can dream up right from a website! You can code with blocks similar to the language Scratch, or you can do more advanced coding with Javascript. We'll be sticking to the block-based programming for this project.

More on MakeCode for Adafruit boards here.

Install the MakeCode CRICKIT Extension

Before we start programming, let's make sure you have the CRICKIT extension installed in MakeCode.

Detailed instructions on how to do that can be found in this guide.

Create a New Project with MakeCode

Head over to https://makecode.adafruit.com/ and create a new project.

Click the button below to access the code for this project.

What's going on the code above?

  • In a forever loop, we set volume level to 140 then play "Deck the Halls" by calling the deckthehalls functions. The "forever" loop means this code block loops forever regardless of other events that happen in the code!
  • "Deck the Halls" can be separated into 3 parts. The song starts with part 1, then repeats, then goes to parts 2 and 3. Creating functions for these song parts then "calling" the functions later allows us to have much cleaner looking and more organized code. It also allows us to reduce the amount of code needed for the project making the program more efficient!
  • When capacitive touch input A3 on the CPX is touched, we want to move the servo motor from 0 to 120 degrees, and back, 10 times fast to shake the snowman. Adding the 100ms of pause in between allows the servo to have enough time to move to each position.

Uploading the Code

Now that we have the code for the project, we need to upload it to the CPX.

Let's name our file and download it.

  • Choose a name at the bottom of the page.
  • Then click the pink Download button.

Note MakeCode adds a UF2 extension to the filename.

Follow the directions and connect your CPX to your computer via the USB cable. Click the CPX Reset button once to go into programming mode (all NeoPixels will turn green).

In some cases, you may need to press the reset button twice to get into programming mode.

Next, look for the UF2 file in your downloads folder and drag it onto your CPLAYBOOT drive that should have showed up in your file manager/finder when you plugged in your board and entered programming mode.

You should now see the CPLAYBOOT drive disappear, this means the code is running.

Power up CRICKIT

Connect CRICKIT to power with the 5V DC power cable and be sure the tiny on/off switch next to the black power input jack is on.

The code should now be running so try it out!

  • When the board is powered up, "Deck the Halls" should start playing.
  • When the end of the alligator clip is touched, the servo should quickly move back and forth for 1 - 2 seconds.

If you are having issues getting things to work check out this extended guide here.

Carving the foam body:

  • Cut off about 5 mm from the bottom of the largest ball to give the ball a flat surface to sit up on.
  • Next cut the medium sized ball in half.
  • Then carve out the middle of each side of the medium sized ball.

Creating the servo pushing wire mechanism:

  • Cut about 36 cm of stiff wire with wire cutters.
  • Push bottom and top of medium sized ball through wire so they lie close to the middle.
  • Take off the top of the middle ball.
  • Place servo next to wire such that one of the arms is right up against the wire. Push the servo firmly into the foam to create an imprint.
  • Remove wire and glue servo in place.
  • Push wire back in place then use wire cutters or pliers to bend the wire around the servo arm.
  • Once the wire is shaped accordingly and there are equal parts wire above and below the servo (slightly more above is better), glue wire in place next to the servo.
  • Stick top of ball onto wire. Make sure servo cables are hanging out before glueing top down.

Forming the wire:

  • Bend one end of the wire at the top/bottom of the ball at a 90 degree angle towards the servo cables.
  • Bend the same wire back the other way 90 degrees after about 1-2 cm.
  • Repeat on other side.
  • Stick on top and bottom balls. When putting on the large ball, make sure to orient such that the flat part we cut earlier is directly opposite to where the wire is inserted into.
  • Cut a roughly 18 x 18 cm square of cardboard and white paper.
  • Glue paper to cardboard.
  • Glue bottom of snowman in center of base.

Testing out the Snowman so far

Plug the servo into CRICKIT, and power up the board. Test out the snowman by touching A3 on the CPX. Quite a dance! I call it the Snowing Man :)



If you aren't getting much movement out of the snowman when A3 is touched:

  • Re-open the two halves of the snowman's middle section. Double check that one of the servo arms is right up against the wire and moving towards it.

If the snowman parts are moving around too much or spinning around:

  • Push the parts closer together indenting the wire into the foam.

Create the top hat parts:

  • To create the hat top, on a sheet of black foam, draw two perpendicular lines 3 cm long going through the center of each other.
  • Draw a circle around the plus sign.
  • Next, to create the brim, draw a line 5cm long. On this line, mark points at 0, 1, 2.5, 4, and 5 cm.
  • Create an identical line perpendicular to this one and running through its center.
  • Draw a circle around the 0 and 5 cm points and 1 and 4 cm points.
  • To create the hat's base we must know the circumference of the hat top. Circumference = 2πr = 2 * (3.14) * 3 cm = 9.42 cm.
  • Draw a rectangle 9.4 cm long and 4 cm high.
  • Cut out all components.


*Hat created based off a 5cm diameter head. May need to modify measurements if head larger or smaller in size.

Assemble the hat:

  • Bend the base into a cylinder and glue ends together slightly overlapping.
  • Glue the brim to the base.
  • Glue on the top.
  • Cut off excess wire from top of snowman so hat fits just over the wire. The wire should be reaching just barely under the hat top.

Adding the snowman body and facial features:

  • Mold the model magic into a carrot shape and glue onto snowman.
  • Place 2 larger rhinestones onto snowman to make eyes.
  • Place 5 smaller rhinestones onto snowman to make mouth.
  • Glue 4 buttons onto snowman's chest and torso.
  • Stick twigs into sides.
  • Cut about 20 cm of ribbon for scarf and tie around neck.

Capacitive touch cap:

  • Cut 36 cm of copper tape.
  • Turn snowman around. Slowly peel off backing and stick onto snowman starting on the top of the hat, creasing down hat's base and brim and ending at the bottom of the snowman.
  • One a piece of aluminum foil, draw a circle with a 3 cm diameter.
  • Cut out circle.
  • Glue on hat top.
  • Add a shorter piece of copper tape on top of foil down onto the previous piece of copper tape along just the hat's length.
  • Use two pieces of copper tape to tape one end of the alligator clip to the bottom of the snowman. Be sure to tape the alligator clip on top of the first piece of tape.
  • Attach other end of alligator clip to A3 on CPX.
  • Plug servo into CRICKIT.

Power up CRICKIT, touch the top of his hat and watch him groooooooove!

Happy Holidays!!!

This guide was first published on Dec 07, 2018. It was last updated on Mar 08, 2024.