Making Furniture Interactive

October 29, 2007


Filed under: Sandbox,Tiago Rorke — Tiago Rorke @ 7:57 am

International Origami superstar Robert J Lang is giving a lecture today at 4:30 in McConomy.

“From Flapping Birds to Space Telescopes: The Modern Science of Origami”

edit:   Sorry, hadn’t noticed jenn had posted this already! my bad!

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



Servo car


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.

// 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() {
  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);
  digitalWrite(signalPin, HIGH);
  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;
        angle = 60;
  if (elapsedtime == med)
      angle = 90;

  if (abs(angle - last_angle) > 1) {
    last_angle = angle;

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

  // print value through Serial
  Serial.print("angle ");
  Serial.print("    ");
  Serial.println(elapsedtime, DEC);

October 25, 2007

Augmented Sculpture v1.0

Filed under: Examples,Imran Sobh — imranixd @ 11:03 pm

A wonderful sculpture that uses simple shapes and colors, watch the installation video.

Project Proposals

Filed under: Assignments — mdgross @ 10:19 am

5 minute presentation in class Oct 30, posted on Blog by Nov 2:

• Text “abstract” (50-100 words) succinctly describes project
• Diagram(s) to illustrate plan or scheme to build project
• Text Scenario describes “action”
• Bill of materials (what “stuff” you will need to acquire)
• Bill of knowledge (what you will need to learn)

Class Examples for 25 Oct 07

Filed under: Course Materials,Examples — jet @ 10:06 am

Raffaello D’Andrea — maker of the collapsing/reassembling chair and the table that interacts with people in the room.

Matt Heckert — artist creating large, noisy sculptures.

Tabby, an interactive lamp by Atsuro Ueki.

A walking table from a Dutch design fair.

October 24, 2007

For those all hot on folding paper now…

Filed under: Jenn Gooch — jenngooch @ 1:21 pm

MONDAY, 10/29

“From Flapping Birds to Space Telescopes: The Modern Science of Origami”

McConomy Auditorium
University Center
Reception immediately following the lecture in Rangos 3


A Sound-Responsive Face for your Furniture

Filed under: Course Materials,Examples — jet @ 7:53 am

Probably a few tricks you can learn from this audio-responsive LED bank.

October 23, 2007

23 Oct class notes

Filed under: Course Materials,Examples — jet @ 10:26 am

The ITP tutorial on high current loads.

How to connect a rotating shaft to a circuit using slip rings.

Driving a stepper motor with EasyDriver, which can be purchased from SparkFun.

Determining how far something has moved or turned using rotary encoders.

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()

pinMode(transistorPin, OUTPUT);

void loop()


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

« Previous PageNext Page »

Create a free website or blog at