Making Furniture Interactive

December 17, 2007


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

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


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.

November 4, 2007

Kip & Jamin Final Proposal Presentation

Filed under: Final Project,Jamin Hegeman,Kipum Lee,Proposals — Kip @ 8:07 pm

The staff at the UPMC Neurosurgery Clinic have difficulty locating each other when they are in the room with a patient. Several tracking systems have been attempted, but all have failed because they require active engagement. We propose a more automated indicator of location using sensors to detect individuals and display location outside of the room using a display of information, most likely through ambient lights.

Kip & Jamin Final Proposal

October 15, 2007

Chicken or the Egg?

Filed under: Exercise 5: Mechanical Movement,Jamin Hegeman — Jamin Hegeman @ 11:57 am


Having never built anything mechanized, I felt it was important to start with something that would work, so I searched for paper automaton kits online. I found an automaton blog, which has a lot of great links. Ultimately, I settled on a design from Flying Pig.

I thought working with paper would be less difficult than other materials, but I’m not sure if that was correct. I spent a good six hours printing, cutting, and assembling my piece. It was amazing to see 2D paper become a 3D object.


What did I learn from this? Well, I now know what a cam and cam follower are (kind of), and it helped give me some ideas for the next project.

October 7, 2007

Naughty Automata

Filed under: Jamin Hegeman,Uncategorized — Jamin Hegeman @ 8:44 pm

Naughty Automata from World Upside Down.


October 3, 2007

Interactive LEDs

Filed under: Exercise 4: Four State Machines,Jamin Hegeman — Jamin Hegeman @ 5:57 pm

This project has two main states.

Sleep: By default, the program is asleep.

Awake: If the photocell gets dark, it awakens. The four LEDs fade in and out in series. After a few series without being interacted with, it goes back to sleep.

There are two other sub-states.

Attract: If it’s asleep and you don’t wake it up for a while, all the LEDs blink to attract your attention.

Reward: If it’s awake and you continue to play with it (cover the photocell) it rewards you with flashing LEDs.


LED Coffee Table

Filed under: Jamin Hegeman,Uncategorized — Jamin Hegeman @ 5:45 pm

Not sure if we talked about this, but I saw it on YouTube and it spoke to me on the power of LEDs and motion sensors.

September 19, 2007


Filed under: Exercise 3: Four States,Jamin Hegeman — Jamin Hegeman @ 12:25 am

I made three LEDs glow or blink given different light conditions. Not sure if it completes the assignment, but I was happy to get it working. Sleep is nothing happening. Attract is when the white light glows when it starts to sense darkness. Arousal occurs as you get closer: the green LED blinks. The reward is touching the photocell, which illuminates the red LED.

int potPin = 2;    // select the input pin for the potentiometer
int ledPin = 3;   // select the pin for the LED
int ledPin2 = 10;
int ledPin3 = 6;
int inPin = 7;   // choose the input pin (for a pushbutton)

int val = 0;
int buttonVal = 0;       // variable to store the value coming from the sensor
int value = 0;     // variable to keep the actual value
int state = 0;
int state2 = 0;
int sensitivity = 80;
int sensitivity2 = 12;
int sensitivity3 = 8;

void setup() {
pinMode(ledPin, OUTPUT);  // declare the ledPin as an OUTPUT
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);

void loop() {
val = analogRead(potPin);    // read the value from the sensor
if(val < sensitivity &amp;&amp; state == 0) {
state = 1;
else if(val >= sensitivity &amp;&amp; state == 1) {
state = 0;
if(val < sensitivity2 &amp;&amp; state2 == 0 &amp;&amp; state == 1) {
state2 = 1;
else if(val >= sensitivity2 &amp;&amp; state2 == 1 &amp;&amp; state == 0) {
state2 = 0;
if(val < sensitivity3 &amp;&amp; state == 0) {
else if(val >= sensitivity3 &amp;&amp; state == 1) {


void fadeIn(int pin) {
for(value = 0 ; value <= 255; value+=5) // fade in (from min to max)
analogWrite(pin, value);           // sets the value (range from 0 to 255)
delay(10);                            // waits for 30 milli seconds to see the dimming effect

void fadeOut(int pin) {
for(value = 255; value >=0; value-=5)   // fade out (from max to min)
analogWrite(pin, value);

September 11, 2007

Lampidy Lamp and Ruler Alert

Filed under: Exercise 2: Add a Switch,Jamin Hegeman — Jamin Hegeman @ 11:00 pm

Part 1

For part one—making my lamp respond—I used a photocell to detect light and had the light fade in if the threshold of light became too low. It would then fade in if the amount of light was higher than the threshold. Not rocket science, but I’m not a rocket scientist.

Lampidy Lamp Setup

I originally took code from the Arduino AnalogInput example, then added bits of the analog fading example, then wrote some of my own code to make sure the light stayed on.

Part 2

I went for simple on this one, and interrupted the current by connection on wire to a push tack and another wire to a second push tack. The connection is made when a metal ruler is place on the push tacks, which act as a holder. An LED lights up to indicate that the ruler is back in its place.

Ruler Switch

September 6, 2007

Interactive Tables

Filed under: Exercise 1: What Is?,Jamin Hegeman — Jamin Hegeman @ 12:09 am

Interesting collection of interactive tables, including a noise sensitive table: Using light patterns reacting from the noise level to provide a feed-back of the conversation dynamic.

Next Page »

Create a free website or blog at