Making Furniture Interactive

December 17, 2007

Robotic Branch

Filed under: Derk Wolmuth,Final Project,Uncategorized — derkbw @ 10:15 pm

A kinetic hat rack was conceived in conjunction with research into a mood reading/recording hat. Several servos, a geared motor, and a Querk microprocessor contort a branch in various degrees. Mental strain of everyday existence is suggested by the vagaries of deformation.

Robotic Branch

Advertisements

Final Project

Filed under: Alastair Firth,Final Project — afirth @ 8:27 pm

Final Projectaafront-copy.jpgaaback.jpg

Description: The final product is an array of 256 LEDs which could be used to display a multitude of information. It is also able to control, in a limited way, an iPod or other audio device. The design uses a clock module, temperature sensor, LED controllers, and a stereo volume control to provide the time, temperature, and audio entertainment which the user desires. Through the iPod, it is also possible to use it as an alarm clock.
(more…)

Kipum Lee Final Project

Filed under: Final Project,Kipum Lee — Kip @ 6:23 pm

Abstract:I am interested in how products communicate back to us in subtle ways. An exercise machine is something people invest in but many times, ends up not being used. If it has not been activated within a certain “grace period,” the machine sends the user an email asking for interaction.

Materials:Arduino microprocessorMacbook (for power)simple switchbreadboard22 gauge solid wires1 150 ohm resistorrubberbands or fishwire (to wrap around the exercise machine)1 mechanical exercise machine1 busy/lazy person who wants to work out but is in need of a reminder

Please watch the video to see the process and explanation:

For the full downloadable video file (55.9 mb): www.kipworks.com/mfi/kipumlee_mfi_finalproject.mov

For the downloadable poster that was used during the final presentation (1.1 mb): www.kipworks.com/mfi/kipumlee_Poster.pdf

Learnings:It was good to prototype on my own and take things outside of the conceptual world. Although it was difficult learning these new programs and how things actually work, I learned the basics of how to put things together and test out an idea. I hope to continue working with physical computing and study the subject more to get more proficient with the materials and coding.
(more…)

Something More Fashionable

Filed under: Final Project,Jenn Gooch — jenngooch @ 6:21 pm

My goal for this project was to circuit bend a CD player to be controlled by a sensor/micro-contoller. I found the hardest thing about this was to “zero out” the CD’s built-in functions so that I had complete control over its starting and stopping. This involved coding in some measures to make sure it stopped before the CD was told to play, so that it wouldn’t pause instead. This took some time to fully figure out, and I think there is a lot of undiscovered potential for this system that I hope to implement in some upcoming pieces.

While I’m pleased to have achieved my main goal of the CD player circuit bend, I wish I had more time to develop the content (audio) to better utilize the technical developments.

int cd1stop = 2;
int cd1play = 3;
int cd1forward = 4;
int sensorPin = 0;
int val = 0; // variable to store the value coming from the sensor

void setup()
{
pinMode(cd1stop, OUTPUT);
pinMode(cd1play, OUTPUT);
pinMode(cd1forward, OUTPUT);
pinMode(sensorPin, INPUT); // }

void loop()
{
val = analogRead(sensorPin); // read the value from the sensor
delay(1000);
if (val < 850) // zero out CD player (automatically plays) and stop it {digitalWrite(cd1play, HIGH); delay(100); digitalWrite(cd1stop, LOW); delay(1000); digitalWrite(cd1stop, HIGH); delay(1000); } else // play {digitalWrite(cd1play, LOW); } }[/sourcecode]

[Dan D.W. Kang] Final Project- Interactive Coffee Table

Filed under: Dong Woo Kang,Final Project — dwkang @ 5:07 pm

dscn1305.jpgdscn1303.jpgdscn1300.jpgdscn1292.jpgdscn1287.jpgdscn1286.jpgdscn1285.jpgdscn1284.jpgdscn1280.jpgdscn1278.jpg

* Description

This interactive coffee table responds to the users and objects (coffee cups) by giving out different shades of light.

Two I/R sensors are attached on each side of the table to detect how many people there are. Two photocells are attached on the top of the table at both ends to detect how many coffee cups are being used. Depending on how many people or coffee cups there are, the table will respond differently with different shades and intensity of color. The table reaches its happiest state when the table is being fully utilized; two people sitting at the table, both of them drinking coffee. The table will entertain the users by flashing colorful lights and spinning.

* Code

int lightVal = 0;
int lightValB = 0;
int distanceVal = 0;
int distanceValB = 0;
int lightsensor = 0;
int lightsensorB = 2;
int distancesensor = 3;
int distancesensorB = 1;
int green = 11;
int red = 9;
int blue = 10;
int greenB = 3;
int redB = 5;
int motor = 7;
int value = 0;
int state = 1;
void setup() {
  pinMode(lightsensor, INPUT);
  pinMode(lightsensorB, INPUT);
  pinMode(distancesensor, INPUT);
  pinMode(distancesensorB, INPUT);
  pinMode(motor,OUTPUT);
  pinMode(red,OUTPUT);
  pinMode(green,OUTPUT);
  pinMode(blue,OUTPUT);
  pinMode(redB,OUTPUT);
  pinMode(greenB,OUTPUT);
  Serial.begin(9600); // Set up the serial communication.
}
void loop()
{
  lightVal = analogRead(lightsensor);
  lightValB = analogRead(lightsensorB);
  distanceVal = analogRead(distancesensor);
  distanceValB = analogRead(distancesensorB);
  Serial.println(“—–“);
  Serial.print(“lightvallue “);
  Serial.println(lightVal);
  Serial.print(“lightvalueB “);
  Serial.println(lightValB);
  Serial.print(“distancevalue “);
  Serial.println(distanceVal);
  Serial.print(“distancevalueB “);
  Serial.println(distanceValB);
 Serial.print(“state “);
 Serial.println(state);
 if (state == 0) {noPnoC ();}
 else if (state == 1) {noPoneC ();}
 else if (state == 2) {noPoneC_B ();}
 else if (state == 3) {noPtwoC ();}
 else if (state == 4) {onePnoC ();}
 else if (state == 5) {onePnoC_B ();}
 else if (state == 6) {onePoneC ();}
 else if (state == 7) {onePoneC_B ();}
 else if (state == 8) {onePtwoC ();}
 else if (state == 9) {onePtwoC_B ();}
 else if (state == 10) {twoPnoC ();}
 else if (state == 11) {twoPoneC ();}
 else if (state == 12) {twoPoneC_B ();}
 else if (state == 13) {twoPtwoC ();}
}
void noPnoC()    
{
  alloff();
  for(value = 0; value <=75; value+=5)   {analogWrite(red, value);   delay(100);}     for(value = 75; value >=0; value-=5)
  {analogWrite(red, value);
  delay(100);}
condition();
}   
void noPoneC()   
{
  alloff();
  for(value = 0; value <=50; value+=2)   {analogWrite(red, value);   delay(200);}     for(value = 50; value >=0; value-=2)
  {analogWrite(red, value);
  delay(200);}
 
condition();
}
void noPoneC_B()       
{
  alloff();
  for(value = 0; value <=50; value+=2)   {analogWrite(red, value);   delay(200);}     for(value = 50; value >=0; value-=2)
  {analogWrite(red, value);
  delay(200);}
 
 condition();
}
void noPtwoC()      
{
  alloff();
  for(value = 0; value <=50; value+=2)   {analogWrite(red, value);   delay(200);}     for(value = 50; value >=0; value-=2)
  {analogWrite(red, value);
  delay(200);}
 
 condition();
}
void onePnoC()
{
  alloff();
  for(value = 0 ; value <=180; value+=5)   {analogWrite(blue, value);   delay(30); }   for(value = 180 ; value >=0; value-=5)
  {analogWrite(blue, value);
  delay(30);}
 
condition();
}
void onePnoC_B()
{
  alloff();
  for(value = 0 ; value <=180; value+=5)   {analogWrite(red, value);   delay(30); }   for(value = 180 ; value >=0; value-=5)
  {analogWrite(red, value);
  delay(30);}
 
condition();
}

void onePoneC()
{  alloff();
  for(value =0; value <=180; value+=5)   {analogWrite(blue, value);   delay(30);}   for(value = 0; value <=255; value+=10)   {analogWrite(greenB, value);   delay(30);}     for(value = 255; value >=0; value-=10)
  {analogWrite(greenB, value);
  delay(30);}
 
  for(value = 180; value >=0; value-=5)
  {analogWrite(blue, value);
  delay(30);}
 
condition();
}
void onePoneC_B()
{  alloff();
  for(value =0; value <=180; value+=5)   {analogWrite(red, value);   delay(30);}   for(value = 0; value <=255; value+=10)   {analogWrite(greenB, value);   delay(30);}     for(value = 255; value >=0; value-=10)
  {analogWrite(greenB, value);
  delay(30);}
 
  for(value = 180; value >=0; value-=5)
  {analogWrite(red, value);
  delay(30);}
 
condition();
}
void onePtwoC()
{  alloff();
  for(value =0; value <=180; value+=5)   {analogWrite(blue, value);   delay(30);}   for(value = 0; value <=255; value+=10)   {analogWrite(greenB, value);   delay(30);}     for(value = 0; value <=255; value+=10)   {analogWrite(green, value);   delay(30);}     for(value = 255; value >=0; value-=10)
  {analogWrite(greenB, value);
  delay(30);}
    
  for(value = 255; value >=0; value-=10)
  {analogWrite(green, value);
  delay(30);}
 
  for(value = 180; value >=0; value-=5)
  {analogWrite(blue, value);
  delay(30);}
 
 condition();
}
void onePtwoC_B()
{  alloff();
  for(value =0; value <=180; value+=5)   {analogWrite(red, value);   delay(30);}   for(value = 0; value <=255; value+=10)   {analogWrite(greenB, value);   delay(30);}     for(value = 0; value <=255; value+=10)   {analogWrite(green, value);   delay(30);}     for(value = 255; value >=0; value-=10)
  {analogWrite(greenB, value);
  delay(30);}
    
  for(value = 255; value >=0; value-=10)
  {analogWrite(green, value);
  delay(30);}
 
  for(value = 180; value >=0; value-=5)
  {analogWrite(red, value);
  delay(30);}
condition();
}

void twoPnoC()
{  alloff();
  for(value =0; value <=200; value+=5)   {analogWrite(blue, value);   delay(30);}     for(value =0; value <=200; value+=5)   {analogWrite(redB, value);   delay(30);}       for(value = 200; value >=0; value-=5)
  {analogWrite(blue, value);
  delay(30);}
 
  for(value = 200; value >=0; value-=5)
  {analogWrite(redB, value);
  delay(30);}
 
condition();
}
void twoPoneC()
{  alloff();
  for(value = 0; value <=180; value+=5)   {analogWrite(blue, value);   delay(30);}     for(value =0; value <=180; value+=5)   {analogWrite(redB, value);   delay(30);}     for(value = 0; value <=255; value+=10)   {analogWrite(green, value);   delay(30);}     for(value = 255; value >=0; value-=10)
  {analogWrite(green, value);
  delay(30);}
   
  for(value = 180; value >=0; value-=5)
  {analogWrite(blue, value);
  delay(30);}
 
  for(value = 180; value >=0; value-=5)
  {analogWrite(redB, value);
  delay(30);}
 
condition();
}
void twoPoneC_B()
{  alloff();
  for(value = 0; value <=180; value+=5)   {analogWrite(blue, value);   delay(30);}     for(value =0; value <=180; value+=5)   {analogWrite(redB, value);   delay(30);}     for(value = 0; value <=255; value+=10)   {analogWrite(green, value);   delay(30);}     for(value = 255; value >=0; value-=10)
  {analogWrite(green, value);
  delay(30);}
   
  for(value = 180; value >=0; value-=5)
  {analogWrite(blue, value);
  delay(30);}
 
  for(value = 180; value >=0; value-=5)
  {analogWrite(redB, value);
  delay(30);}
 
condition();
}
void twoPtwoC()
{  alloff();
  digitalWrite(motor,HIGH);
  digitalWrite(red, HIGH);
  delay(50);
  digitalWrite(red,LOW);
  digitalWrite(red, HIGH);
  delay(50);
  digitalWrite(red,LOW);
  digitalWrite(green,HIGH);
  delay(50);
  digitalWrite(green,LOW);
  digitalWrite(blue,HIGH);
  delay(50);
  digitalWrite(blue,LOW);
  digitalWrite(greenB,HIGH);
  delay(50);
  digitalWrite(greenB,LOW); 
condition();
}

void alloff()
{
  digitalWrite(red,LOW);
  digitalWrite(green,LOW);
  digitalWrite(blue,LOW);
  digitalWrite(redB,LOW);
  digitalWrite(greenB,LOW);
  digitalWrite(motor,LOW);
}
void condition()
{
  if (distanceVal < 150 && lightVal > 80 && distanceValB < 150 && lightValB > 220) {state = 0;}
  if (distanceVal < 150 && lightVal < 80 && distanceValB < 150 && lightValB > 220) {state = 1;}
  if (distanceVal < 150 && lightVal > 80 && distanceValB < 150 && lightValB < 220) {state = 2;}   if (distanceVal < 150 && lightVal < 80 && distanceValB < 150 && lightValB < 220) {state = 3;}   if (distanceVal > 150 && lightVal > 80 && distanceValB < 150 && lightValB > 220) {state = 4;}
  if (distanceVal < 150 && lightVal > 80 && distanceValB > 150 && lightValB > 220) {state = 5;}
  if (distanceVal > 150 && lightVal < 80 && distanceValB < 150 && lightValB > 220) {state = 6;}
  if (distanceVal < 150 && lightVal > 80 && distanceValB > 150 && lightValB < 220) {state = 7;}   if (distanceVal > 150 && lightVal < 80 && distanceValB < 150 && lightValB < 220) {state = 8;}   if (distanceVal < 150 && lightVal < 80 && distanceValB > 150 && lightValB < 220) {state = 9;}   if (distanceVal > 150 && lightVal > 80 && distanceValB > 150 && lightValB > 220) {state = 10;}
  if (distanceVal > 150 && lightVal < 80 && distanceValB > 150 && lightValB > 220) {state = 11;}
  if (distanceVal > 150 && lightVal > 80 && distanceValB > 150 && lightValB < 220) {state = 12;}   if (distanceVal > 150 && lightVal < 80 && distanceValB > 150 && lightValB < 220) {state = 13;}   }[/sourcecode]

Final Project: Pinwheels

Filed under: Final Project,Joe Iloreta — jilore @ 4:38 pm

Abstract:

A kinetic object responds to movement both across its face as well as towards and away from it. Like a simple mechanical pet or a sunflower, it reacts to a body along a path, following one longingly as it passes; it may even show excitement when approached.

With this project I sought to build on skills learned over the semester, and elaborate on the four-state machine practiced earlier in the year, engaging the possibilities of passive, casual movement as interaction with an artifact.

Each pinwheel possesses two ultrasonic rangefinders in order to determine the presence of an object in its field of vision calculating distance of passing objects through each rangefinder, thus allowing it to calculate the angle at which the pinwheel pivots towards the movement.

Poster here

(more…)

Lampie

Filed under: Final Project,Jamin Hegeman — Jamin Hegeman @ 3:25 pm

The abstract, materials, video, process, and photos can be found on my blog.

Final Project: rfidge

Filed under: Final Project,Matt Thompson — Mattt Thompson @ 7:05 am
Tags: , , , ,

rfidge Title
Full documentation available here.   (more…)

Final Project: Suono Sonic Bookshelf

Filed under: Beste Nazilli,Final Project,Imran Sobh — imranixd @ 4:26 am

Project write-up can be found here.

December 14, 2007

Thermal Chair write up

Filed under: Final Project,Marc Manzke — marcmanzke @ 4:29 pm
Tags: , , , ,

 This chair is intended to provide thermal comfort for commuters.  Overall I feel the project was a success, the chair is very effective at cooling the occupant at its 160CFM capacity.  Please see poster PDF for full destription.Thermal Chair Concept PosterFiberglassing 1fiberglassing 2fiberglassing 3fan housingfan test modulefan test module 2fan test module 3 Final ChairComplete Chaircomplete Chair 2 

Next Page »

Create a free website or blog at WordPress.com.