My interests for this project lay mostly with integrating electronics into weaving. I wanted to create circuits within the weaving that could be interacted with in interesting ways, and did not take away from the visual appeal of the weaving.
My original plan centered on using weft floats to hide different components in the yarn. I don't think this ended up working very well, because the warp floats also showed up and were messy-olooking, and the weave felt structurally comprimised in this way. I don't think I succeeded at making the electronics really hidden or useful. This path could have potentially worked, but I think simply making double layer pockets would have worked better, and been more controlled and neater.
Encouraged by class feedback after I shared my swatches, I wanted to explore how I could make light shine through monofilament.
I became curious about the posibilities of hiding monofilament in a weaving so that light could be shone through in a surprising way. I tried cut pieces with inlay against a tabby weave, and then I tried creating loops of monofilament with inlay against a tabby weave of thicker yarn. The cut pieces against the black tabby showed up really well, but the loops did not, likely because the light shines best at the ends of the monofilament.
The monofilament against black tabby would have been surprising with light showing through had the cut ends not stuck out, but they actually showed dots of llight at the ends, making it like a fiber optic cable.
This next swatch incorporated both loops and cut pieces in greater density. However, I found that the lighter yarn I used showed the light more strongly and therefore overpowered the monofilament light. The loops did show up a little, and had a glow to them when shown in front of colored light.
Finally, I tried loop piles, which didn't have enough access to the light underneath so they didn't light up very well.
While this path was interesting, I really wanted to incorporate some kind of electronic system into my final project, so I moved on to a new path.
I was inspired by a student making electrodes to create several electrodes that work as buttons to control an online game.
I created a ~12 inch textile with 5 electrodes. The electrodes are made of stripped silicone wire and are divided into an upper section (4 electrodes) and a lower section (1 electrode). The wire is floated over the main tabby weave, and each electrode in the upper section begins as soon as the previous one stops. Both ends of the wire for each electrode is twisted together and attached to an alligator clip. There is a ~4 inch section of tabby between the sections. On the back, I added a single weft float behind each electrode. The idea with this was to create finger loops so that a person could hold the controller more easily.
I attached the four upper electrodes to different pins on a Teensy 4.0, and attached the single lower electrode to ground. Using pullup resisitors, this setup made it so that touching any of the upper electrodes to the grounding electrode would compelte a circuit and read as a button. I coded the teensy to press a different keyboard button depending on which upper electrode was being connected to. Multiple electrodes can be connected to at once. This allows me to play any online game that uses 4 or fewer keyboard controls. I tried a driving game called Loom Valley (on theme with weaving) which uses left arrow, x, and right arrow.
After my first test, I was really happy that the controller worked. However, I wanted to improve the wearability of it, as well as the visual appeal and potentially the technique for integrating the silicone wire. I did a small test first, creating two electrodes with two different techniques. One was looping, the other was simple floats. I also wove with two separate colors, separating them completely so as to create fingerlike sections in the weaving. I learned that looping does not work very well, because the wire is stiff and doesn't create loops in a stable way. The loops end up being uneven and I think using this technique for all the electrodes might cause the loops to miss each other, not ensuring a good connection.
My plan for this final piece was to use a different color for each upper electrode to keep them separated both physically and visually. The physical separation allowed the sections to be close together without the wires touching accidentally. I used floats that only wrapped around at the last warp ends of each finger section, because this gave the cleanest and largest area of conductivity. Each of these sections was made up of 8 warp ends. The lower section is made with black yarn, and only uses 12 warp ends, centered in the middle of the weaving. The lower and upper sections are disconnected so that the grounding end can be held more easily.
The most interesting part of this swatch is that I accidentally created a structure with a lot of alternative configurations as an alternative controller. Instead of just being used on the fingers, the finger section could be bent into a circle and the thumb can be placed inside the circle, making a strange kind of joystick. Or, the circle of electrodes could be placed around a thumb while the thumb section is held like a remote. the fingers could also be detached from one another and be placed anywhere on a body or in an environment, making soft but secure conductive connections with the grounding pad.
I changed my plans several times in the span of this project, because I wasn't sure what would interest me most. I was influenced a lot by the share-outs in class, both from me and other students, and the feedback from my peers.
Ultimately, I don't think that my final swatch was that much of an improvement from my second-to-last. I think there is a lot of potential for making this on a different loom that can make complex patterns more easily. I think it would have been interesting to integrate pressure into the sensors, so that when a finger is pressed, electrodes inside a pocket make contact and send out the signal, instead of having the ground on the thumb. Or, to use woven pockets to create an arm sleeve with the 4 main electrodes and a single finger sleeve with the grounding electrode. This general concept has a lot of potential with alternative controllers, and I could see something like this being used by someone with low hand and/or finger mobility who can't easiy hold a standard game controller or type on a keyboard.
My key takeaways from this project were that tabby can go a long way and be very restricting, that silicone wire takes a very long time to strip, and that any project needs many iteration to turn out well. I also learned ways of finishing a swatch that I hadn't thought of before, like gluing the ends to the back of the swatch. The project took far longer than I was expecting, because the preparation fo teh wire was slow, and weaving with four different colors at once, then adding inlay to each with the wire, is a lot mroe complex than just doing tabby.
If I did this project again, I would make the fingers longer and add more tabby to the bottom that connects the fingers, to make more of a glove. Or, as a more complex version, I would make pockets for each of the fingers. I would also add more loops for the fingers so that a person can hold on to the swatch more easily. Finally, I would find a cleaner way of integrating the ends of the wires into the swatch so that they don't just hang off the sides. I think the wire management was one of the lowest quality aspects of my design.
const int bluePin = 2;
int blueVal = 0;
const int greenPin = 3;
int greenVal = 0;
const int yellowPin = 4;
int yellowVal = 0;
const int orangePin = 5;
int orangeVal = 0;
int game = 2;
//2 = loom valley
//1 = cat's cradle
void setup() {
// put your setup code here, to run once:
pinMode(bluePin, INPUT_PULLUP);
pinMode(greenPin, INPUT_PULLUP);
pinMode(yellowPin, INPUT_PULLUP);
pinMode(orangePin, INPUT_PULLUP);
}
void loop() {
// put your main code here, to run repeatedly:
blueVal = digitalRead(bluePin);
greenVal = digitalRead(greenPin);
yellowVal = digitalRead(yellowPin);
orangeVal = digitalRead(orangePin);
if (blueVal == LOW)
{
if (game == 1)
{
Keyboard.press(KEY_W);
delay(50);
Keyboard.release(KEY_W);
}
if (game == 2)
{
Keyboard.press(KEY_LEFT);
delay(50);
Keyboard.release(KEY_LEFT);
}
}
if (greenVal == LOW)
{
//Keyboard.print("a");
//Keyboard.print("x");
Keyboard.press(KEY_X);
delay(50);
Keyboard.release(KEY_X);
}
if (yellowVal == LOW)
{
//Keyboard.print("s");
//Keyboard.print(KEY_RIGHT);
Keyboard.press(KEY_RIGHT);
delay(50);
Keyboard.release(KEY_RIGHT);
}
if (orangeVal == LOW)
{
//Keyboard.print("d");
}
//delay(100);
}