Tapper prototype

Ari and I advanced our work from phase 1 to phase 2 of the Tapper gloves by conquering the aspect of the project that proved to be our most serious roadblock: actually integrating the technology into the apparel. No, it wasn’t the programming or the circuitry that threw us for a loop… it was dealing with unwieldy polyester and subpar sewing skills.

After consulting with our trusty sewing consultant Sara, we decided on completely avoiding any sewing whatsoever and instead opting for finger condoms, a.k.a. massacred rubber gloves. The flexibility of the rubber proved a perfect tactic for keeping the sensors closely affixed to the fingers and therefore giving us the most accurate readings.

In many respects, the tactile elements of the project are complete as the gloves work largely as advertised. With this part of the project near completion, Ari and I will be focusing on how to refine control over the interface so that the gloves work as expected.

The Processing component has come a long way in the last week. I programmed the integrated samples for the gloves using the minim sound library, giving us a foundation for eventual behavior of the gloves. However, we still have to calibrate the sensors in order to make sure the samples respond as desired.

Explanations are nice, but ultimately it is a live-working prototype that really speaks for itself. Check out the video below:


Our updated Processing code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import processing.serial.*;
import ddf.minim.*;
 
AudioPlayer samples[] = new AudioPlayer[6];
int val[] = new int[6];
int currVal = 0;
int barWidth = 150;
 
Serial port;
 
void setup() {
  size(900, 256);
  smooth();
  stroke(0);
  fill(#A72F2F);
 
  port = new Serial(this, Serial.list()[0], 9600);
  port.bufferUntil(’\n’);
 
  // start sound engine
  Minim.start(this);
 
  // load samples
  for (int i=0; i < 6; i++) {
    samples[i] = Minim.loadFile(”sample” + (i+1) + “.wav”);
  }
}
 
void draw() {
  background(255);
  for (int i=0; i < 6; i++) {
    rect(i*barWidth, 0, barWidth, val[i]);
    if (val[i] > 50) {
      samples[i].setVolume(val[i] / 255);
      samples[i].play(0);
    }
  }
}
 
void serialEvent(Serial port) {
  String inputString = port.readStringUntil(’\n’);
  if (inputString != null) {
    inputString = trim(inputString);
    //println(inputString);
    int[] values = int(split(inputString, “,”));
 
    // make sure we have the right data before assigning values
    if (values.length == 6) {
      for (int i=0; i < 6; i++) {
        val[i] = values[i];
      }
    }
  }
}
 
void stop() {
  for (int i=0; i < 6; i++) {
    samples[i].close();
  }
  Minim.stop();
  super.stop();
}

0 Responses to “Tapper prototype”


  • No Comments

Leave a Reply