Introduction: Lighten Your Step: LED Dance Shoes!

About: 17 year old who loves to build things in his free time!

So you've seen shoes with LED lights. But have you seen ones that change color? Maybe. How about ones that are fully programmable, packed with a micro sized Arduino Gemma, a rechargeable lithium battery, and on top of that, they have pressure sensors in the soles of the shoes. This instructable will show you how I turned a pair of canvas sneakers into dancing shoes!

Step 1: Supplies List


  • Shoes: Converse or Van style shoes work best
  • Neopixel Led strips
  • Velostat
  • Arduino Gemma
  • 2 3V batteries (lithium or cell style)
  • 30 AWG Silicone stranded wire
  • Conducive Thread
  • USB battery charger (if Lithium battery is used)

Other tools

  • Soldering Iron
  • Solder
  • Sewing Needles
  • 100% Silicone
  • Wire Strippers
  • Alligator Clip Jumpers

Step 2: Understand the Wiring

Before you begin, it's a good idea to understand what you'll be wiring on the shoe. To connect the sensors, I connected one side of the sensor to ground, and the other to the analog pin A1. The pins of the led strip: DIN GND +5V, connect to the Gemma pins: D0 GND Vout. The Vout pin directly powers the strip from the battery.

It's a good idea to test everything with alligator clips before modding the shoe.

Step 3: Make Shoe Inserts If Needed

I wanted the lights on the shoes to be activated when pressure is applied on the heal of the shoe. I was hoping to hide the sensor under the sole of the shoe. Unfortunately, the shoes that I bought didn't come with removable padding. Therefor, I bought some shoe inserts and sized them to fit the shoes

Step 4: Cutting the Sensors

Velostat is a fabric-like material you can use to make pressure sensors. I cut two heel-sized pieces.

Step 5: Wiring the Sensors

I cut a 2 foot piece of conductive thread and laid it in a zig-zag pattern on a piece of clear tape which I then used on top of the velostat heel sensor. I repeated this same step on the underside of the sensor, making sure to have the pattern perpendicular to the direction of the wire on the top. This way the thread will cross one another on several places along the velostat heel sensor.

Step 6: Sew Along the Sole

To get the conductive thread from the heel of the shoe to the tongue, I used a needle and sewed one conductive thread along the outside edge of the rubber sole of the shoe, and the other along the inside edge. Both ends stop after coming back toward the tongue of the shoe, where the gemma will be attached.

Step 7: Sewing the Gemma

I measured and marked the location where I wanted the Gemma. Then I sewed the end of one conductive threat to the A1 analog connection. I sewed the end of the other conductive thread to the GND connection.

Step 8: Cutting the LED Strip

I started by making a mark on the instep of each shoe. Then I wrapped the strip of LEDs, starting at that mark, around the sole of the shoe. I cut the LED strip at the approximate location of where the LED strip started to overlap.

Step 9: Solder Jumpers to the LED Strip

I went ahead and soldered three strands of 30 AWG wire to each LED strip. Be sure to solder the wires on the starting side of the strip. The arrows along the strip show the direction of signal.

Step 10: Glue the LED Strips

I used clear silicone to glue the LED strip to the sole of the shoe. On each shoe, the LED strip needs to start at the mark and go around the heel of the shoe first. I used rubber bands to hold the strip firmly in place while the silicone dried.

Step 11: Protecting the Wires

To keep the wires from snagging while the shoes are in use, I slipped two sections of black heat-shrink over the wires. Then I shrank the tubing using a heat gun.

Step 12: Mounting the Battery

I wanted the battery to be removable, while still staying hidden during use. I added a small piece of Velcro to each battery, and the tongue of each shoe. To keep the shoe secured, I decided to sew the Velcro on.

Step 13: Soldering All the Connections

Now that everything is mounted to the shoe, I soldered the pressure sensors and LED strips to each Gemma board. Refer to the first step for wiring. It's a good idea to place a bit of solder over each sewn connection to hold the thread in place too.

Step 14: Program the Shoes

Now that the shoes are finished, it's time to program them. I wrote this code using the neopixel library provided by Adafruit. The program I made simply sends a pulse of light running up both sides of the shoe as you activate the heel pressure sensor, changing hue every step taken. You can program these shoes to your liking. Here is the code I made:

(This program was designed for a 19-LED strand pair of shoes. I will soon upload code compatible for any pair of shoes.)

<p>#include <adafruit_neopixel.h><br>int analogInPin = 1;  // Analog input pin that the potentiometer is attached to
Adafruit_NeoPixel strip = Adafruit_NeoPixel(19, 0, NEO_GRB + NEO_KHZ800);
int sensorValue = 0;        // value read from the pot
int light = 0;
int aspeed = 25;
int pressed = 0;
int color = 1;
int inside = 3;
int ti = 3;
int tinside = 3;
void setup() {
pinMode(2, INPUT_PULLUP);
   strip.begin();; // Initialize all pixels to 'off'</adafruit_neopixel.h></p><p>}</p><p>void loop() {</p><p>  
inside = 3;
    for(int i=3;i<13+4;i++){
    // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
if (i >= 7){
  ti = i-4;
  strip.setPixelColor(ti, strip.Color(0,0,0));
  strip.setPixelColor(tinside, strip.Color(0,0,0));
  tinside = tinside -1;
  if (tinside == -1){
   tinside = 18;
if (i < 13){
    strip.setPixelColor(i, Wheel(map(i,0,strip.numPixels()-1,color,color)));
    strip.setPixelColor(inside, Wheel(map(inside,0,strip.numPixels()-1,color,color)));
}; // This sends the updated pixel color to the hardware.
inside = inside-1;
if (inside == -1){
inside = 18; 
    delay(aspeed); // Delay for a period of time (in milliseconds).
inside = 3;
tinside = 3;
inside = inside-1;
if (inside == -1){
inside = 18; 
    delay(aspeed); // Delay for a period of time (in milliseconds).
color = color + 45;
uint32_t Wheel(byte WheelPos) {
  WheelPos = 255 - WheelPos;
  if(WheelPos < 85) {
   return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  } else if(WheelPos < 170) {
    WheelPos -= 85;
   return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  } else {
   WheelPos -= 170;
   return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);

Step 15: Dance!

These shoes are a bit to small to fit my feet. Actually a lot smaller. These shoes are actually a present for my girlfriend's birthday on October 4th! We're headed to homecoming this here shortly, and I can't wait to see her in these shoes!

Conveniently, the Lamps and Lighting contest deadline happens to be on the same day! I'd appreciate a vote!

LED Contest

Runner Up in the
LED Contest

Lamps and Lighting Contest 2016

Participated in the
Lamps and Lighting Contest 2016