Skip to content

Instantly share code, notes, and snippets.

@blueintegral
Created August 18, 2013 19:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save blueintegral/6263384 to your computer and use it in GitHub Desktop.
Save blueintegral/6263384 to your computer and use it in GitHub Desktop.
DIY CyberGlove Arduino code
float analog0;
float analog1;
float analog2;
float analog3;
float analog0_close;
float analog1_close;
float analog2_close;
float analog3_close;
float analog0_open;
float analog1_open;
float analog2_open;
float analog3_open;
// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
Serial.println("Calibrating...");
Serial.println("Open hand.");
delay(2000);
analog0 = analogRead(A0);
analog1 = analogRead(A1);
analog2 = analogRead(A2);
analog3 = analogRead(A3);
analog0_open = analog0;
analog1_open = analog1;
analog2_open = analog2;
analog3_open = analog3;
Serial.print("Acquired: ");
Serial.print(analog0_open);
Serial.print(" ");
Serial.print(analog1_open);
Serial.print(" ");
Serial.print(analog2_open);
Serial.print(" ");
Serial.println(analog3_open);
Serial.println("Close hand");
delay(2000);
analog0 = analogRead(A0);
analog1 = analogRead(A1);
analog2 = analogRead(A2);
analog3 = analogRead(A3);
analog0_close = analog0;
analog1_close = analog1;
analog2_close = analog2;
analog3_close = analog3;
Serial.print("Acquired: ");
Serial.print(analog0_close);
Serial.print(" ");
Serial.print(analog1_close);
Serial.print(" ");
Serial.print(analog2_close);
Serial.print(" ");
Serial.println(analog3_close);
Serial.println("Calibration complete.");
Serial.println("Running...");
delay(2000);
}
// the loop routine runs over and over again forever:
void loop() {
analog0 = analogRead(A0);
analog1 = analogRead(A1);
analog2 = analogRead(A2);
analog3 = analogRead(A3);
// print out the value you read:
// Serial.print("Thumb: ");
// Serial.print(analog0);
// Serial.print(" Point: ");
// Serial.print(analog1);
// Serial.print(" Middle: ");
// Serial.print(analog2);
// Serial.print(" Ring: ");
// Serial.println(analog3);
//Scale the values to a range of [0,1]
float scaled_thumb = (analog0 - analog0_open)/(analog0_close - analog0_open);
float scaled_point = (analog1 - analog1_open)/(analog1_close - analog1_open);
float scaled_middle = (analog2 - analog2_open)/(analog2_close - analog2_open);
float scaled_ring = (analog3 - analog3_open)/(analog3_close - analog3_open);
Serial.print("Thumb: ");
Serial.print(scaled_thumb);
Serial.print(" Point: ");
Serial.print(scaled_point);
Serial.print(" Middle: ");
Serial.print(scaled_middle);
Serial.print(" Ring: ");
Serial.println(scaled_ring);
delay(1); // delay in between reads for stability
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment