Making Furniture Interactive

December 17, 2007

Laser Cut Paper Iris

An attempt was made at cutting out a mechanical iris on the laser cutter. It did not work so well and was later abandoned without making it motorized.

A separate mechanical device, a power window motor was modified through sheet metal work and welding. This was used to hang a tree upon and thereby spin it. This is seen in action in a short clip of the Robotic Branch Video below during Rossum’s recent Uncanny Valley robotic art show at the Brewhouse.

Paper IrisPaper Iris and HandPaper Iris OpenPaper Iris Failures

tree-spinner-mech.jpgtree-spinner-mech-closeup.jpg

Motor Fan

Filed under: Exercise 6: Motorized Mechanical Movement,Jamin Hegeman — Jamin Hegeman @ 3:18 pm

For this exercise I used a light sensor to control a DC motor, which rotated a circular paper with some dots on it. You also had to hold down a button to ensure the motor wouldn’t start running on its own in response to environmental light changes.

December 16, 2007

Purpose Based Interaction

Filed under: Exercise 6: Motorized Mechanical Movement — mjlevy @ 11:39 pm

pdia.jpg I’ll preface this by saying that what I built is not what I intended to build when I started.  I had discussed in class build a lamp that moved east and west through a room to mimic the movement of the sun.  While the idea of celestial-mimicry still intrigues me, I realized that was it was missing was any kind of real interaction.   What I’ve attempted to do here is wholly based on interaction and the meanings thereof.  I kept thinking about the idea of a lamp, and one of the original problems I had had with my earlier plans: how to turn it on and off.  The idea of turning something on and off kept me thinking for a while.  What is at the essence of on-ness and off-ness for our objects?  When it comes to a lamp, the usual interaction for light (the up/down switch) is actually a rather good interpretation of the on/off state in terms of light creation.  Up is the sky, where the light comes from; down is the ground, where it doesn’t.  Desk lamps, however, are far worse off in terms of their interactions, with everything from rotary switches to double pull double throw switches.  What I wanted to do was to build in some kind of interaction that better represents on-ness and off-ness for a lamp.    As you can see, when the lamp is upright, facing the sky, it is illuminated; when it is down, on the ground, it is not.  It’s very simple, but it gets closer to the mental model of on/off that we actually have, shortening the mental distance between understanding and interaction.  onoff.jpg

October 30, 2007

vector fan

Filed under: Exercise 6: Motorized Mechanical Movement,Marc Manzke — marcmanzke @ 11:44 pm

I built this “jet” from a couple 12 volt, 0.5 amp case fans that can move alot of air. I built a simple cardboard enclosure to regulate the outflow / thrust of the fans.

October 27, 2007

Exercise 6: Kipum Lee, “Spin It!”

Filed under: Exercise 6: Motorized Mechanical Movement,Kipum Lee — Kip @ 11:49 pm

I started from scratch for Exercise 6. I built custom gears out of aluminum rods, nails, and aluminum wires. Also, the structure for the “toy” was built from foamcore and thumbtaks. I first tried to use a 3V DC motor, but it spinned too fast and lacked power. With the new geared motor, it definitely has more power to get the job done.

Instead of using a diode, I used an LED instead because functions the same way as a diode (hence the term, light-emitting diode). This was realized after a trip up to the code lab and through Mark’s advice.

It was a challenge trying to put together the motor with the rotational gears. Since the rotating axis/plastic has a unique shape, I had to figure out a way to fit the shape into my rotating aluminum apparatus. This was quite a challenge and involved a combination of wood, plastic and nails to get the right part made.

As of right now, a photosensor at the top of the toy is the switch that turns on and off the motor. I learned to constantly reiterate the parts and taking the right measurement for the parts was key to getting a smoothly working toy.

Aluminum Small Gears Gear Attachment LED as diode Battery PoweredPhotosensor

Code:

(more…)

Servo car

princess.jpgprincess_top.jpg

For the motorized portion of the assignment, I decided, heck with creativity, I just want to build a self-controlled car. I used a battery to power the arduino, a Parallax Ping Ultrasonic Range Finder, a servo (HS311), and a battery+motor little plastic car without steering that I had lying around. My final product was held together with:

  • Masking tape
  • 3M tabs
  • a bent wire hanger
  • cable ties
  • electrical tape
  • gravity

Good times. The wiring was straightforward – it turns out that neither the servo nor the range finder need external powering (I did the TIP120 thing with my cabinet project, though), and are run off the arduino output pins. After significant coding distress I looked for and obtained a servo library (I posted a link to it) to separate the servo timing from the range finder timing.

With this project I gained a new appreciation for stereo vision. With one stationary servo, the most I could do was wall-following for walls with gradual changes. The code keeps the car attempting to maintain a fixed distance from the wall.

#include
// debug
int ledPin = 3;

// ultrasonic range finder
int signalPin = 4;                // sensor signal pin connected to wiring pin 0
int elapsedtime = 0;
int last_elapsedtime = 0;

// servo
int servoPin = 9;     // Control pin for servo motor
int minPulse = 800;   // Minimum servo position (microseconds)
int maxPulse = 1800;  // Maximum servo position (microseconds)
int angle = 90;        // Amount to pulse the servo
int last_angle = 90;
ServoTimer1 st;

void setup() {
  Serial.begin(9600);
  st.attach(9);
  st.setMinimumPulse(minPulse);
  st.setMaximumPulse(maxPulse);
  st.write(angle);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  elapsedtime = 0;
  pinMode(signalPin, OUTPUT);     // set signalPin as OUTPUT

  // Send 0-1-0 pulse to activate the sensor
  digitalWrite(signalPin, LOW);
  delayMicroseconds(2);
  digitalWrite(signalPin, HIGH);
  delayMicroseconds(5);
  digitalWrite(signalPin, LOW);  

  // Listen to pulse
  pinMode(signalPin, INPUT);      // set signalPin as INPUT
  elapsedtime = pulseIn(signalPin, HIGH);  // get the length of the pusle while it is HIGH

  // the goal here will be to keep it at a steady 800
  // map 400 to 2000     to     170 to 10
  int med = 2000;
  if (elapsedtime < med)
      if (elapsedtime  med)
      if (elapsedtime > 2 * med)
        angle = 20;
      else
        angle = 60;
  if (elapsedtime == med)
      angle = 90;

  if (abs(angle - last_angle) > 1) {
    last_angle = angle;
    st.write(angle);
  }

  // debug led
  if (elapsedtime == med)
    digitalWrite(ledPin, HIGH);
  else
    digitalWrite(ledPin, LOW);

  // print value through Serial
  Serial.print("angle ");
  Serial.print(last_angle);
  Serial.print("    ");
  Serial.println(elapsedtime, DEC);
  delay(100);
}

October 23, 2007

Imran’s Exercise 6 – Autonomous Fishy Game

Filed under: Exercise 6: Motorized Mechanical Movement,Imran Sobh — imranixd @ 2:19 am

My plan was to take my previous project and convert it into a game that could run on its own without the third person needed to crank it continuously. Once I got a battery pack to power the motor instead of Arduino, I was happy, but also disturbed at how fast it was rotating:

The first problem I was having was simply using the old gear setup to turn the gears. When I cranked it by hand, I could easily adjust for any problems the fish had in getting caught on the fins underneath. So the gears were just not catching, especially at the speed it was running. If I slowed the speed down, there simply wasn’t enough power to get it to move the gear. Buying a much larger motor did not help, and I couldn’t find the motors that were shown in class.

I cut off the old gear teeth and then cut new ones:

I constructed the patented motor stand, as seen in Milo’s head, for the much larger 9-18V dc motor hoping that I could run it at a slower speed but still get the energy to push the gear. No such luck. I ended up having to run it a ridiculously high speed, making it nearly impossible to play the game, and instead rendering it as an artistic motion piece. Cutting the gears in this new way did in fact make it easier for the small gear to catch the large one, but also slowly tears away at the weak foam core, meaning that it can only be run a handful of times before the teeth grind away. Not only is it a physical motion art piece, but it is one that expresses the ephemeral nature of prototyping material.

In all seriousness, I think I have reached the limit of foam cores usefulness with motion. It doesn’t slide well (I ended up adding some cloth material underneath to try to alleviate some of this), it doesn’t rotate well, and is generally frustrating. I’m sure there are people who can do wonders with foam core, and I’d really like to meet them. But I think for the future I will either use wood or try to re-appropriate another device.

For completions sake, here’s the code:

int transistorPin = 11;
int motorCount = 0;

void setup()
{
Serial.begin(9600);

pinMode(transistorPin, OUTPUT);
}

void loop()
{

motorCount++;

if(motorCount < 2000) { analogWrite(transistorPin, 200); } } [/sourcecode]

Blog at WordPress.com.