Physical Therapy Stretch Assist

Assignment 2: Physical Therapy Metric Assist

Problem: As someone who has dealt with a series of joint issues throughout college, I have often found it difficult to track my progress in terms of strength and flexibility. It is pretty much impossible to measure your own flexibility, especially in terms of joints like the wrist, and can be difficult to tell when you are at the right level of stretch(especially since overstretching can result in reinjury).

Solution: A wearable system that uses a series of flex sensors to see how far a joint is able to be bent in different positions. Ideally, the Arduino This would allow the user to be able to use both hands to perform stretches and exercises, and warn against any overextensions through haptic feedback through a series of dime motors, letting the user know when they are in the optimal position, and when they are overstretching.



Device Requirements: Arduino Uno, 3.3v dime motor, flex resistor

Fritzing Sketch

Arduino Pseudocode

const int FLEX_PIN = A0; // Pin connected to voltage divider output

const int DIME_PIN = 7; // Pin connected to dime motor

// Measure the voltage at 5V and the actual resistance of your

// 47k resistor, and enter them below:

const float INPUT_VOLTAGE = 5;

const float RESISTANCE = 47500.0;


// Upload the code, then try to adjust these values to more

// accurately calculate bend degree.

const float STRAIGHT_RESISTANCE = 37300.0; // resistance when straight

const float BEND_RESISTANCE = 90000.0; // resistance at 90 deg


const float GOAL_ANGLE = 40.0; // ideal angle for bending

const float MAX_ANGLE = 55.0; // max angle for bending




void setup()






void loop()


// Read the ADC, and calculate voltage and resistance from it

int flexCURRENT = analogRead(FLEX_PIN);

float flexVOLTAGE = flexCURRENT * INPUT_VOLTAGE / 1023.0;



// Use the calculated resistance to estimate the sensor’s

// bend angle:


0, 90.0);

if(angle>MAX_ANGLE) {

digitalWrite(DIME_PIN, HIGH);



else if(angle>GOAL_ANGLE) {

digitalWrite(DIME_PIN, LOW);


Else {




Responses and First Thoughts


I agreed with many of his positions on overused trends and have personally seen many iterations of them in my time exploring the field of physical computing. I felt, however, that he threw blankets over some really cool potential ideas. Yes, single-input single-output networked devices such as the “Remote Hugs” project can definitely be considered to be overused, however I feel that throwing a blanket over “technologically enabled gloves” is a bit of a misdiagnosis, as there are dozens of possibilities of what the gloves can be tracking, whether they are monitoring or being used as inputs, and what types of devices they are controlling, whether the output is digital or mechanical.


I found the idea of an intelligent machine having personality and even lying to its user amusing and a little terrifying. A seemingly seamless conversational user interface, the suit walks a fine line between person and device. It has necessary functionalities that are conveniently accessible through speech, however, making a device too “human” seems to leave a lot of room for unintended consequences in execution, such as the suit being able to lie to its user (as insinuated by the user believing the suit to be lying about their chances of survival). In a seemingly “perfect” design, new problems seem to have arisen.



I am an Information Systems and Human Computer Interaction undergraduate. I focus my studies on full stack application design, and small device design and programming.

I have experience with Arduino, 3D printing, laser cutting, CAD, Rhino, Solidworks, Photoshop, InDesign, and various other softwares.

I have worked on a few physical computing projects before, including being a part of a team designing wearables and applications for alzheimers/dementia patients, built interactive displays, and helped design a temporary display at the Computer History Museum in Mountain View, CA.