Sarah B's profile

Interactive LilyShoe

Lilyshoe is a ballet shoe that reacts to the dancer’s feet position  by simulating interactive visual movement via LED lights attached to the shoe that takes the dancer’s feet movement as an input (using an accelerometer sensor), which will engage the audience more and illustrate/emphasize the various feet movements the ballet dancer performs on stage. The use of beautiful LED lights synchronized with the movement of a dancer will further engage the audience in the performance.
 
There are LEDs attached all along the outer part of the ballet shoe. A lilypad is placed inside the front part of the shoe and the accelerometer is sawn on top of it. The power source is sewed at the back of the shoe. When the dancer tilts her feet and stands on her toes, the LEDs around the shoe will light up and loop in a circular motion (this is based on the accelerometer sensor’s value). When the dancer’s feet are on the ground, all the LEDs will light up without looping.

 
______________________________________________________________________________________________
 
 
At first I started with distributing the LEDs around the outer perimeter of the shoe and made sure that the threads didn’t intersect. The best place to sew the lilypad was the inside the front of the shoe. And because the lack of space the accelerometer cannot be hidden, thus its sawn on top of the front part.
As for the code, I’m controlling all the LEDs based on the Z axis value coming from the accelerometer.  The dancer’s feet movement is the input and the lights are the output. The looping of the LEDs happens only if the dancer’s feet are tilted downward or upward.
                           __________________________________________________________________
 
 
int pinArray1[] = {2, 3, 4, 5, 8, 9 , 10, 11, 12 , 13};
int count = 1;
int timer = 30;

void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
  for (count = 1; count < 14; count++) {
    pinMode(pinArray1[count], OUTPUT);
  }
}
// the loop routine runs over and over again forever:
void loop() {
  // read the input on analog pin 0:
  int xValue = analogRead(A0);
  int yValue = analogRead(A2);
  int zValue = analogRead(A4);
  // print out the value you read:
  Serial.print("X value is: ");
  Serial.println(xValue);
  Serial.print("Y value is: ");
  Serial.println(yValue);
  Serial.print("Z value is: ");
  Serial.println(zValue);
  Serial.println(" "); // Makes a space between the readings
  delay(1000);  // delay of 1000 ms (1 second) - Gives us time to better read the Serial Monitor
  // LEDs loops based on the Zvalue
  if (zValue < 540 || (zValue < 580 && zValue > 550)  ) {
    for (count = 1; count < 14; count++) {
      digitalWrite(pinArray1[count], HIGH);
      delay(timer);
      digitalWrite(pinArray1[count + 1], HIGH);
      delay(timer);
      digitalWrite(pinArray1[count], LOW);
      delay(timer * 2);
    }
    for (count = 14; count > 0; count--) {
      digitalWrite(pinArray1[count], HIGH);
      delay(timer);
      digitalWrite(pinArray1[count - 1], HIGH);
      delay(timer);
      digitalWrite(pinArray1[count], LOW);
      delay(timer * 2);
    }
  }
  // if the foot flat on the ground turn the LEDs on without looping
  else if (zValue > 581) {
    for (count = 1; count < 14; count++) {
      digitalWrite(pinArray1[count], HIGH);
    }
  }
}
                             __________________________________________________________________
 
Video:
Interactive LilyShoe
Published:

Interactive LilyShoe

Interactive Ballet Shoe

Published:

Creative Fields