My project is to make a High Heel Massage(shoe) that senses when your foot is tired and then eases the pain. I will have a force sensor measure how much pressure is on your foot for 3 minutes. If the pressure is at a certain measure for 3 minutes, then a vibrator will go off and massage your foot for two sets of vibration massages. I am creating this because many women suffer the price of beauty and looking good. Women deserve some slack and shoes that sense when their feet hurt and provide a quick message is a perfect solution. My idea is different from other comfort shoes because the shoe adapts to the individual. The LED flower pattern that will be on the top of the shoe lights up in different patterns during the massage and gives the shoe a feminine look while embracing technology.
Materials:
high heel massage shoe (Payless Shoe Store)
14 LEDs (available in class)
force(pressure) sensor (available in class)
vibration motor (http://www.sparkfun.com/products/8449)
wires (available in class)
Arduino Mini Pro 3.3V (http://www.amazon.com/Arduino-Pro-Mini-328-3-3V/dp/B004G53J6M)
9V battery pack (available in class)
FTDI TTL-232R-3V3 USB – TTL Level Serial Converter Cable (available in class)
solder (available in class)
Step 1: Code for Force Sensor and LED

int sensePin = 2; // the pin the FSR is attached to
int pressureLevel = 4;
int timeCount = 0;
int pressureCount = 0;
int lengthOfTime = 5;
void setup() { Serial.begin(9600);
pinMode(2, OUTPUT); //declare the ledPin as an OUTPUT need for all pins
}
void loop() { int pressure = analogRead(sensePin) ;
if (millis() % 1000 == 0) { //60000 for one minute,
timeCount ++;
if (pressure > 500) {
pressureCount ++;}
if ((timeCount > lengthOfTime) && (pressureCount > pressureLevel)) { //activate when 4 out of 5 times
digitalWrite(2, HIGH);
timeCount=0;
}
Serial.println(pressure);
}
}
Step 2: Combining the LED, Force Sensor and Vibration Motor
int pressureLevel = 4;
int timeCount = 0;
int pressureCount = 0;
int lengthOfTime = 5;
int motorpin = 9;
void setup() { Serial.begin(9600);
pinMode(2, OUTPUT); //declare the ledPin as an OUTPUT need for all pins pinMode(motorpin, OUTPUT);
}
void loop() { int pressure = analogRead(sensePin) ;
if (millis() % 1000 == 0) { //60000 for one minute,
timeCount ++;
if (pressure > 500) {
pressureCount ++;}
if ((timeCount > lengthOfTime) && (pressureCount > pressureLevel)) { //activate when 4 out of 5 times
digitalWrite(motorpin, HIGH);
delay(500);
digitalWrite(motorpin, LOW);
delay(500);
digitalWrite(2, HIGH);
timeCount=0;
}
Serial.println(pressure);
}
}
Step 3: Making the Flowers


Step 4: Testing 2 Flower LEDs With Force Sensor and Vibration Motor

int sensePin = 2; // the pin the FSR is attached to
int pressureLevel = 4;
int timeCount = 0;
int pressureCount = 0;
int lengthOfTime = 5;
int motorpin = 9;
void setup() { Serial.begin(9600);
pinMode(2, OUTPUT); //declare the ledPin as an OUTPUT need for all pins
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(motorpin, OUTPUT);}
void loop() { int pressure = analogRead(sensePin) ;
if (millis() % 1000 == 0) { //60000 for one minute,
timeCount ++;
if (pressure > 800) {
pressureCount ++;}
if ((timeCount > lengthOfTime) && (pressureCount > pressureLevel)) { //activate when 4 out of 5 times
digitalWrite(motorpin, HIGH); //vibration motor
delay(3000);
digitalWrite(motorpin, LOW);
digitalWrite(6, HIGH);
delay(500);
digitalWrite(7, HIGH);
delay(500);
digitalWrite(8, HIGH);
delay(500);
digitalWrite(5, HIGH);
delay(2000);
digitalWrite(motorpin, HIGH); //vibration motor
delay(3000);
digitalWrite(motorpin, LOW);
digitalWrite(6, LOW);
delay(500);
digitalWrite(7, LOW);
delay(500);
digitalWrite(8, LOW);
delay(500);
digitalWrite(5, LOW);
timeCount=0;
}
Serial.println(pressure);
}
}
Step 5: Saudering to the Mini Pro Arduino 3.3V


Links to pictures of a FTDI TTL-232R-3V3 USB – TTL Level Serial Converter Cable:
http://arduino.cc/en/uploads/Guide/ArduinoProMiniFTDIBreakout2.jpg
http://arduino.cc/en/uploads/Guide/ArduinoProMiniFTDICable.jpg
Step 6: Attachment

Step 7: Upload

Code for Final Project
int sensePin = 2; // the pin the FSR is attached toint pressureLevel = 2;
int timeCount = 0;int pressureCount = 0;
int lengthOfTime = 3;int motorpin = 9;
void setup() { Serial.begin(9600);
pinMode(2, OUTPUT); //declare the ledPin as an OUTPUT need for all pins pinMode(3, OUTPUT);
pinMode(4, OUTPUT); pinMode(5, OUTPUT); //middle of flower
pinMode(10, OUTPUT); //middle of flower pinMode(11, OUTPUT);
pinMode(12, OUTPUT); pinMode(13, OUTPUT);
pinMode(motorpin, OUTPUT);}
void loop() { int pressure = analogRead(sensePin) ;
if (millis() % 60000 == 0) { //60000 for one minute,
timeCount ++;
if (pressure > 800) {
pressureCount ++;}
if ((timeCount > lengthOfTime) && (pressureCount > pressureLevel)) { //activate when 2 out of 3 times
digitalWrite(4, HIGH);
delay(500);
digitalWrite(3, HIGH);
delay(500);
digitalWrite(2, HIGH);
delay(500);
digitalWrite(13, HIGH);
delay(500);
digitalWrite(12, HIGH);
delay(500);
digitalWrite(11, HIGH);
delay(500);
digitalWrite(10, HIGH);
digitalWrite(5, HIGH);
digitalWrite(motorpin, HIGH); //vibration motor
delay(3000);
digitalWrite(11, LOW);
delay(300);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
delay(300);
digitalWrite(12, HIGH);
digitalWrite(13, LOW);
delay(300);
digitalWrite(13, HIGH);
digitalWrite(2, LOW);
delay(300);
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
delay(300);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
delay(300);
digitalWrite(4, HIGH);
digitalWrite(10, LOW);
digitalWrite(5, LOW);
delay(300);
digitalWrite(10, HIGH);
digitalWrite(5, HIGH);
digitalWrite(11, LOW);
delay(300);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
delay(300);
digitalWrite(12, HIGH);
digitalWrite(13, LOW);
delay(300);
digitalWrite(13, HIGH);
digitalWrite(2, LOW);
delay(300);
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
delay(300);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
delay(300);
digitalWrite(4, HIGH);
digitalWrite(10, LOW);
digitalWrite(5, LOW);
delay(300);
digitalWrite(10, HIGH);
digitalWrite(5, HIGH);
digitalWrite(motorpin, LOW);
delay(1000);
digitalWrite(13, LOW);
digitalWrite(12, LOW);
digitalWrite(11, LOW);
digitalWrite(10, LOW);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
digitalWrite(3, LOW);
digitalWrite(2, LOW);
delay(1000);
digitalWrite(13, HIGH);
digitalWrite(12, HIGH);
digitalWrite(11, HIGH);
digitalWrite(10, HIGH);
digitalWrite(5, HIGH);
digitalWrite(4, HIGH);
digitalWrite(3, HIGH);
digitalWrite(2, HIGH);
digitalWrite(motorpin, HIGH); //vibration motor
delay(3000);
digitalWrite(4, LOW);
delay(500);
digitalWrite(13, LOW);
delay(500);
digitalWrite(3, LOW);
delay(500);
digitalWrite(12, LOW);
delay(500);
digitalWrite(2, LOW);
delay(500);
digitalWrite(11, LOW);
delay(500);
digitalWrite(10, LOW);
digitalWrite(5, LOW);
digitalWrite(13, HIGH);
delay(300);
digitalWrite(12, HIGH);
delay(300);
digitalWrite(11, HIGH);
delay(300);
digitalWrite(10, HIGH);
delay(300);
digitalWrite(5, HIGH);
delay(300);
digitalWrite(4, HIGH);
delay(300);
digitalWrite(3, HIGH);
delay(300);
digitalWrite(2, HIGH);
delay(300);
digitalWrite(13, LOW);
delay(500);
digitalWrite(4, LOW);
delay(500);
digitalWrite(12, LOW);
delay(500);
digitalWrite(3, LOW);
delay(500);
digitalWrite(11, LOW);
delay(500);
digitalWrite(2, LOW);
delay(500);
digitalWrite(5, LOW);
digitalWrite(10, LOW);
digitalWrite(motorpin, LOW);
timeCount = 0;
}
Serial.println(pressure);
}
}
Step 8: Video of How It Works
Step 9: Another Video of How It Works
Source: High Heel Massage