The breathing column is a scale model of a hypothetical architectural installation. Aiming to evoke an emotional and interactive relationship between people and the built environment, the column uses camera-based motion tracking to respond to the motions of people in a space. When someone moves around the column at a certain distance away, the outer shell of the column twists gently to trace the person's motion. When a person approaches the column closely, it begins to expand in a breathing motion, bending gently and emitting light from an array of lighting on the innermost layer.
Because the light pattern is really important to my project, I experimented with cutting a bunch of different patterns for my look and feel prototypes. After last weeks' iteration, I decided that something linear would be more effective than the circular pattern I originally started with.
I've decided to move forward with a combination of these two: I like the smaller slits, but it's more effective to have the exterior slits be vertical, interacting with the interior diagonal slits.
One of my biggest struggles at the moment is how to get the base of the column to move vertically, so I've been experimenting with different attachments for the servo motor.
I was also playing around with look/feel/use prototypes in Processing, to test different patterns in the space, and the latest version can be played with HERE.
I have a couple videos of the motors working but I can't get them onto my computer, so I can demonstrate in class instead.
This project was again playing with the idea of blending very delicate, craft-based things with electronics, which are usually seen as hardy and modern.
The process started with a lot of precreasing to build the ball:
After a bunch of folding, the ball emerged:
Before the ball was sealed, the electronics were put inside:
2 button-sized 3V batteries were connected to 2 LEDs via 30-gauge wire (for maximum flexibility). The two sides of the circuit were connected to long strips of tin foil, which were fixed to the top and bottom of either side of the ball. When the ball is assembled, bringing the top and bottom together in a squeezing motion connects the two (or four) tin foil pieces and lights up each LED.
Getting up to date with documentation! Here's my first prototype for an LED bracelet from the Curious Light project:
The basic idea of this prototype is to have a soft-circuit bracelet, made with conductive thread, that contains LEDs which light up when the bracelet is clasped (connecting the circuit). I like the idea of mixing traditional hand crafts like crocheting with electronics, and tools like conductive thread are perfect for this combination.
I imagine that this bracelet could be used in anything from more functional things like motion tracking (especially if you used IR LEDs), to more fun things like light painting:
int servoPin = 2; // Control pin for servo motor int minPulse = 500; // Minimum servo position int maxPulse = 2000; // Maximum servo position int pulse = 0;
int analogValue = 0; // the value returned from the analog sensor int analogPin = 0; // the analog pin that the sensor's on
void setup() { pinMode(servoPin, OUTPUT); // Set servo pin as an output pin pulse = minPulse; // Set the motor position value to the minimum Serial.begin(9600); }
The first project I found is something that's been at the back of my mind since I came to Parsons: an Arduino-controlled CNC machine! I was disappointed that there was no CNC machine in the equipment shops here, since that used to be my go-to tool for prototyping, but (maybe) it would be possible for some students to build one themselves:
Another project on the opposite end of the motor-use spectrum is an installation by the artist Zimoun, who often uses basic motors attached to simple devices like wires and boxes to create really interesting effects. Here's one of his works - I can't embed the video but it's in the link:
I think this is really nice because it shows how you can do something very effective with very little wiring and materials, if you just consider the properties and values of the materials and shapes you choose.
And for a fun one, there's the ArtBot - supposedly it's for kids but I think it's great for everyone.
I went to the Maker Faire last week because I was scheduled to volunteer with one of the makers to demonstrate her interactive clothing. I'm actually glad I was scheduled to volunteer, because I wasn't feeling well and probably wouldn't have gone otherwise, and it really was an amazing (if overwhelming) event. Unfortunately, in my rush to get there early in the morning to start prep (and in the haze of medication), I forgot my camera! I still walked around and looked at things and took some sketches to explain a few projects.
1) I don't actually know the title of this project, but it was on the bottom floor in the center of the Hall of Science. It's a fairly simple but very well-running mechanical system in which ping-pong balls are bounced around on a rotating base, passing through precisely sized holes in a center disk. This was really mesmerizing to watch, and I just really like things that are well-constructed because precision and system sustaining is clearly key in a project like this.
2) Defensive dresses - Amisha Gadani
This is the project that I was involved with. I didn't know much about the dresses before the show, but I loved demonstrating them and found that people were really amazed by them. The dresses had various analog and electronic devices so that when the wearer makes a defensive motion, they exhibit behaviors like blowing up like a blowfish, popping out porcupine quills, etc. I got involved with this project because I really love working with textiles - not necessarily fashion design, but traditional crafts in general - and I'm even more excited about it after this experience.
Here's me in the blowfish dress!
3) 4MP - Michael Chladit
This is the much-talked-about project in which pulleys control a midi sound system, and the speed and velocity of pull control variables about the sound returned. This was an immensely popular project, and reinforced my love of physical things: if this project involved dragging things up and down on a computer screen, it would have been bland and not many people would have been engaged in it, but because it's huge and physically embodied and requires lots of energy, it's really enticing. I also liked the musical collaborations between strangers that came out of this project, since it's rare to see people collaborating so enthusiastically with people they don't know.
For my ambient lighting project, I created a slowly illuminating alarm clock. The purpose of this isn't to wake up the user, but rather to get them out of the house within a certain amount of time after waking up, which always seems to be a problem in the mornings.
The housing was constructed of lasercut acrylic triangles, which I backpainted with opaque paint so that the light could only come through the cut-out letters. The LEDs were mounted on the same level as the letters, and some very low-tech tissues were used as a diffuse layer between the LEDs and the letters. The whole thing was covered in paper so that the letters only show up when they glow through.
A short video demonstrating it is here:
CODE
//Caitlin Morris
//Ambient Lighting Project //Rev 1.0
// initialize the two LEDs and the photoresistor (called inPin) int ledPin = 9; int ledPin2 = 8; int inPin = 1;
// inputThreshold is the value at which light is clearly different from dark; can be changed based on room conditions int inputThreshold = 100; // determine whether or not there has been a change in state with a boolean boolean wasBright = false; // baseTime is the counter that starts when brightness is read unsigned long baseTime; // slowFadeTime is the amount of time for slow fade up unsigned long slowFadeTime = 30 * 1000; // pulseTime is the amount of time for the quick end pulse int pulseTime = 5 * 1000; // pulseSpeed is the modulus control for how quickly the LED pulses int pulseSpeed = 100; // This is the analog-write brightness of the lights int maxLedBrightness = 128;
// declare your lights and sensor as input / output void setup(){ pinMode(ledPin, OUTPUT); pinMode(ledPin2, OUTPUT); pinMode(inPin, INPUT); digitalWrite(inPin, HIGH); }
void loop(){ // starts a counter for time since the board is turned on unsigned long absoluteTime = millis();
//if the value of the sensory is greater than the bright threshold, the light turns on boolean isBright = analogRead(inPin) > inputThreshold; // if it was dark and becomes bright, the counter records the time if(isBright && !wasBright){ baseTime = absoluteTime; } // reset to current state wasBright = isBright;
// this value takes the different between the start time of running and the start time of being bright unsigned long relativeTime = absoluteTime - baseTime; if(isBright){ // if it's within the designated slow fade time, slowly fade up the LEDs to full value over that time if(relativeTime < slowFadeTime){ // remap the maximum time to the brightness of the LEDs int fadeVal = map(relativeTime, 0, slowFadeTime, 0, maxLedBrightness); ledSet(fadeVal); // if it's after the slow fade time but still within the pulse time, pulse the LEDs } else if(relativeTime < slowFadeTime + pulseTime) { int fadeVal = map((relativeTime - slowFadeTime) % pulseSpeed, 0, pulseSpeed, 0, maxLedBrightness); ledSet(fadeVal); //if it's after both time periods, turn off the LEDs } else { ledSet(0); } // if it's dark, keep the LEDs off } else { ledSet(0); } }
// this is the function that turns on the LEDs according to the int fadeVal, declared above void ledSet(int fadeVal) { analogWrite(ledPin, fadeVal); analogWrite(ledPin2, fadeVal); }
Recent Comments