Dance Messenger




Dan Goldwater is a co-founder of Instructables. Currently he operates MonkeyLectric where he dev...

Intro: Dance Messenger

Fun persistence of vision toy. Attach it to your shoe and write messages or patterns while you walk, run or dance!

This article is brought to you by MonkeyLectric and the Monkey Light bike light

Step 1: The Circuit Board

I used a fairly generic circuit board I had lying around for this project. The circuit is really simple though, just an Atmel AVR microcontroller, 10 LED's, a programming header and a few resistors and capacitors. maybe a button if you want to be able to turn it off. The board I used is mostly surface mount components, but all the parts are available in thru-hole form so you could easily build this up on a proto-board.

I've attached below the Eagle CAD ( files for the circuit board, the C source code for the microcontroller, and the Gerber files of the circuit board to get it manufactured. Eagle CAD is free for small-size boards like this one.

Parts used:
Atmel mega8L microcontroller - digikey ATMEGA8L-8AC-ND
6-pin .1" spacing pid header - digikey WM6806-ND
1206-size surface mount LED's in color of your choice - digikey 160-1406-1-ND, 160-1404-1-ND, 160-1402-1-ND
150 ohm resistor array: digikey EXB-V8V150JV
10uF 0805 size capacitor: digikey 587-1299-1-ND
switch: digikey CKN4081CT-ND
lithium-ion battery: from (

Step 2: Programming the Microcontroller

to program the microcontroller you will need the Atmel AVR ISP mkII programming kit (digikey part ATAVRISP2-ND). this connects between your USB port and the programming header on the circuit board. You will need the gnu AVR tool chain ( to compile and download the code, or download with Atmel's free AVR Studio. the supplied code was written for the Imagecraft C compiler, but making it work with the gnu tool is simple.

The C code supplied does not include on/off button functionality, this should not be hard to add. you could also add a battery-voltage tester to sense when the battery is dead (this is important for lithium-ion, they are permanently damaged by discharging too much). to make a battery-voltage tester, you could (i think!) use a 3.0V zener diode and 220k resistor across the battery, and use the a-to-d converter on the mega8 to compare when the battery voltage falls below the zener reference voltage.

Step 3: Attach to Shoe

just tape or glue the board & battery to your shoe!

Step 4: Do Some Dancing!

my friend corwin shows us some moves!
how well does this device work? it is a bit hard to notice at walking speed, mostly because if you look straight at it the effect is reduced. if you look away at a fixed object it is much clearer. at running speed or dancing it works nicely.

Step 5: Buy a Kit

Adafruit industries has open-source build-it-yourself kits of a very similar persistence-of-vision toy. Their version uses all through-hole components so it is easier to build, and it programs directly from your computer parallel port. They also have very detailed instructions for novice electronics hackers, and instructions on how to use the gnu C compiler as well.



    • Optics Contest

      Optics Contest
    • Plastics Contest

      Plastics Contest
    • Electronics Tips & Tricks Challenge

      Electronics Tips & Tricks Challenge

    77 Discussions


    5 years ago on Introduction

    here's an idea: atach it to a glove and make it say "POW" so when you punch it makes comic-book effects.


    5 years ago on Introduction

    Built a similar project recently and was confronted with the same issue - how do you make sure the message is written only on the way forward. Meaning, the leg's movement is reciprocal, so at least half of the time the display should be off else it will write the message flipped (mirrored) horizontally.

    In my case the reciprocal POV display is supposed to be help by hand, so perhaps it might be a bit easier to control the location, but for a  shoe-located device you might also want to investigate using ball switch as a crude (but very cheap!) acceleration sensor which would trip an interrupt when the leg has reached the back position and is just about to move forward - that' when you'd show the message and it's guaranteed no to show mirrored. 

    Another good thing about ball switches (a.k.a. shake switches) is that they make it very easy to turn the MCU off (sleep) when there's no movement - good for battery life and for not disturbing the people around if you're just, say, sitting in a restaurant with your display on.  My POV display project also has Atmel code, so it should be easily adaptable, so check it out!


    8 years ago on Introduction

    what is the subsitute of this AVR ? I'am asking u about any through the hole chip.....this one is surface mount....I cant use it.... 

    1 reply

    Reply 7 years ago on Introduction

    this same AVR is present in a whole chip form buy it from here


    8 years ago on Introduction

    Think this would work on roller skates? Would I be going fast enough for people to see the effect?


    8 years ago on Introduction

    this one is the best but it seem that it's too hard for me lol

    negative zero

    8 years ago on Step 4

     For a really low budget and a camera if you take a picture every minute or so then string them together it should make a nice time lapse 


    Reply 8 years ago on Introduction

    i works because of a phenomion called persistence of vision,  anything that flashes more than 50 times a second appears to stay lit, make has a better description in the digital glow stick project, and wikipedia's article


    9 years ago on Introduction

    what i never understand: how does that thing know how fast it moves? because if i move faster, but the animation speed of the LEDs is the same, the text will be wider but have the same size, so itll look stupid.

    4 replies

    Reply 9 years ago on Introduction if you moved it really fast it would just be longer between the letters...i see


    Reply 9 years ago on Introduction

    and if it would be moved even faster, there would be letters at the ends of the area in which its moved, which suddenly end in the air. don't think thats a good solution.