For this piece, “An Extension of Us,” I created two braids where those using it can communicate with each other using a series of inputs and outputs. When one person brings their hand close to the braid, the light will turn on for both of them, when one person squeezes the braid, the other will feel a buzz, and when both people sing loudly enough a song will play for both of them.

An Extension of Us

made in collaboration with my sister Ivana

For a braid to hold, its strands must conform to a gradual taper, or else, without a rubber band or ribbon tightened to its end, it unravels.

In some cases, change must be abrupt. In others, we force it so, getting the pattern all wrong and having to start over.

And I know that there’s no way you would ever leave me stranded, even though I question whether this blood is sufficient reason to keep our lives intertwined. Even though I’m unsure of the difference between intertwined and bound. Even though I’m not sure if those differences even matter. 

A braid, woven tightly enough, becomes rigid, any unevenness obvious.

Think about the time spent crossing these strands, millions of them by now, and think of the banality. Think of the time spent in each other’s presence, chattering to distract, our bond strengthening over days as our fingers weakened over hours, this rite of passage now the basis of our livelihoods.

Question: How many times, in our lives, will we undo? Start over? 

Answer: Every time we notice the tangled mass of hair our lives have become. Hopefully.

I wonder how often you feel lonely when I’m around. I wonder if you ever look at me and think: You’ll never understand.

I am trying to hold the small things and remember that they make up the bulk of our time here and sit, ensconced in the loveliness of them and notice that they are there, innumerable, they’re fine strands intertwined, knotted, waiting to be brushed free.

I am trying not to relegate the good only to memories.

Initially I had wanted to create three braids for myself, my mother and my sister, but ended up creating two. While building this I kept forgetting how to set up the wires and also how to debug which led to an even longer process when getting to the end of it. In the beginning I had planned on having the two braids communicate with one another from a distance, unfortunately there was a problem with setting up the software correctly so then decided to wire the arduinos together so that they could communicate with each other. One of the hardest parts was actually braiding everything together, something that I thought would actually be the easiest. One of the first problems that I had was the placement of everything, which ended up being too long for the braid. This was mainly because the pressure sensor was at the end and since the braid tapered at the end it was not enough to cover it well enough. While I was braiding I kept getting frustrated because of how the hairs kept snagging onto the different pieces, after my like fifth attempt or so I decided to separate the hair and create three separate braids before braiding everything together. Doing this created a different, unique braid to what is usually done in hairstyles, and especially because of all the components that were in which is something that I liked. When I was connecting the braid to my roommate’s hair I expected it to be much heavier than it was but the braid did not feel heavy at all for neither of us, but the fact that we have both had hair extensions throughout most of our lives I’m sure helped with that. When it comes to the portion with the arduino I definitely learned a lot considering how this was my first time interacting with it all. Overall it was a taxing and eye opening project and I really enjoyed it despite all of the hurdles that I experienced.

Arduino Code:

//Big ting
#include “Arduino.h”
#include “SoftwareSerial.h”
#include “DFRobotDFPlayerMini.h”
SoftwareSerial speakerSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);

SoftwareSerial vals2(2, 3); // RX, TX

int RXPIN = 2;
int TXPIN = 3;
int distanceVal2;
int pressureVal2;
int svTotal2;

int soundDetector = A2;
int distanceSensor = A4;
int pressurePin = A5;
int ledPin = 5;
int motorPin = 7;

void setup() {
pinMode(distanceSensor, INPUT);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);

pinMode(pressurePin, INPUT);
pinMode(motorPin, OUTPUT);
digitalWrite(motorPin, LOW);

vals2.begin(9600);
speakerSerial.begin(9600);
Serial.begin(9600);

Serial.println();
Serial.println(F(“DFRobot DFPlayer Mini Demo”));
Serial.println(F(“Initializing DFPlayer … (May take 3~5 seconds)”));
if (!myDFPlayer.begin(speakerSerial)) { //Use softwareSerial to communicate with mp3.
Serial.println(F(“Unable to begin:”));
Serial.println(F(“1.Please recheck the connection!”));
Serial.println(F(“2.Please insert the SD card!”));
while(true);
}
Serial.println(F(“DFPlayer Mini online.”));
myDFPlayer.volume(20); //Set volume value. From 0 to 30*/
}

long svTotal=0;

void loop() {
vals2.listen();
int distanceVal = analogRead(distanceSensor);
int pressureVal = analogRead(pressurePin);
int soundVal = analogRead(soundDetector);
for (int i = 0; i <= 100; i++){
svTotal += soundVal;
delay(1);
}
svTotal=svTotal/100;
//Serial.println(“sound val total”);
//Serial.println(svTotal);

//vals2.println(“hm”);
vals2.println((String)distanceVal+”,”+pressureVal+”,”+svTotal);
if (vals2.available()){
Serial.println(“vals2 data”);
distanceVal2 = vals2.parseInt();
pressureVal2 = vals2.parseInt();
svTotal2 = vals2.parseInt();
}
Serial.print(“distance val: “);
Serial.println(distanceVal); /*
Serial.println(“pressure val”);
Serial.println(pressureVal);
Serial.println(“sound val”);
Serial.println(soundVal);*/

//distance -> light
if ((distanceVal > 10)||(distanceVal2 > 50)) {
digitalWrite(ledPin, HIGH);
delay(3000);
}
digitalWrite(ledPin, LOW);

//pressure -> buzz
if (pressureVal2 > 800){
digitalWrite(motorPin, HIGH);
delay(500);
}
digitalWrite(motorPin, LOW);

//sound -> music
if ((svTotal > 300) && (svTotal2 > 300)) {
myDFPlayer.play(1);
delay(10000);
myDFPlayer.next();
}
svTotal = 0;

}