A freeform interactive snowflake animated by Arduino Nano. Using 17 independent PWM channels and touch sensor it can create awesome effects!

Similar projects worth following
The snowflake consists of 30 LEDs grouped into 17 independent segments which can be controlled separately by Arduino Nano microcontroller. Each of the LED group can be dimmed with PWM to create some awesome animations. Additionally, there is a capacitive touch sensor ring that allows you to interact with the flake.

A freeform interactive snowflake animated by Arduino Nano. Using 17 independent PWM channels and touch sensor it can create awesome effects! See build instructions section below, to build one yourself.

Portable Network Graphics (PNG) - 122.76 kB - 12/06/2018 at 19:08



Arduino sketch with a few animations

ino - 4.25 kB - 12/06/2018 at 19:03


View project log

  • 1


    All you gonna need is soldering iron, solder, and pliers.


    First of all select some pattern. I choose a nice and simple snowflake crystal and print it to the size to fit Arduino Nano inside the hexagon - core of the crystal.

    The support structure which also acts as a wiring is created from 0.8mm brass rods soldered together with tin. I've used 2m of the rod in total. Why freeform? Because I always wanted to try that and it's a test of your patience and skill.

    First I created a core hexagon by bending a single rod and soldered the ends together. By adding another 6 rods to the tops of the hexagon the ground wiring is complete, all cathode leads of LEDs now need to be soldered to it to create a snowflake pattern. The tricky part was adding the SMD LEDs but I helped myself with a jig created from a cardboard and a double-sided tape.

    Next it was time to add the Arduino Nano microcontroller under the core structure leaving enough space in between to fit 3 layers of brass rod wirings which will connect microcontroller pins to all the LED anode leads. This required a tremendous amount of patience. Not only you need to avoid a short circuit between the wires but also add a current limiting resistor and make it look nice.

    Leaf LEDs are connected separately each to the nearest Arduino's output pin. Branch LEDs are grouped by two and connected to PWM pins. Core LEDs are also grouped by two and connected to the rest of the pins. Arduino NANO has only 18 output pins (A6 and A7 are input only) and I need one pin for the touch sensor, that left me with only 17 pins so the two pairs of core LEDs are connected together to create a group of 4. I am using 220Ω resistors to limit the current flowing thru each pin to around 8mA. That means 240mA in total which is little high for ATmega328 chip but it works - safe maximum is said to be 200mA.

    See schematics in attachments for details how everything is wired up and for the parts list.

    Final note

    Don't forget to check all the diodes before soldering, it will be pretty hard to exchange them if broken or connected in reversed polarity.

  • 2
    Touch sensor

    To be able to interact with a snowflake I added another brass rod to create a capacitive touch sensor. I found a great library and tutorial by Paul Stoffregen. The touch sensor is used to interact with the arduinoflake - change animation, turn on/off, sparkle when touched, you name it...

  • 3

    Originally I thought I will be able to only dim the branch LEDs which are connected to hardware PWM pins. But luckily there exists an awesome software PWM library which allowed me to use all the pins as if they were hardware PWM. This setup created endless possibilities for animations! Check out the code attached with a few animations.

View all 3 instructions

Enjoy this project?



fdufnews wrote 12/31/2018 at 10:20 point

Really beautiful and well documented.

Your are not sinking 240mA. You have 17 branches so 17 x 8 = 136mA. Branches with 2 or 4 LEDs are probably a little dimmer than those with only one.

  Are you sure? yes | no

John Oliva wrote 12/13/2018 at 20:13 point

Cool.  Very nice project.

  Are you sure? yes | no

siddacious wrote 12/12/2018 at 18:21 point

Excellent work!

  Are you sure? yes | no

davedarko wrote 12/11/2018 at 16:48 point

very well documented and feature rich :) nice job!

  Are you sure? yes | no

Mike Szczys wrote 12/07/2018 at 22:02 point

This came out great! I think the touch sensors is a spectacular addition. Well done!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates