Categories
CourseDescriptions PhysicalComputing

Introduction to Physical Computing (2007 Spring)

Instructor: Greg Shakar

This course expands the students’ palette for physical interaction design with computational media. We look away from the limitations of the mouse, keyboard and monitor interface of today’s computers, and start instead with the expressive capabilities of the human body. We consider uses of the computer for more than just information retrieval and processing, and at locations other than the home or the office. The platform for the class is a microcontroller, a single-chip computer that can fit in your hand. The core technical concepts include digital, analog and serial input and output. Core interaction design concepts include user observation, affordances, and converting physical action into digital information. Students have weekly lab exercises to build skills with the microcontroller and related tools, and longer assignments in which they apply the principles from weekly labs in creative applications. Both individual work and group work is required.

Categories
PhysicalComputing

final project – so i’ve added some..

documentation to the last two entries, including pictures and videos. i suppose there is a lot more detail i could go into about the process of the project, but the heart of what happened is that we started with one concept. then, we continued to develop it over time based on problems we encountered and solutions that made the most sense. in the end, we got a big bird that moved in a way we’re quite satisfied with, and we know how it would be used and how we could make improvements. the box could be covered w a type of insulation to mask the sound, since the mechanism of the wire and pulleys is pretty silent already. we could place the structure in a public space for it to be self contained and the silhoutte could be really really nice. we had difficulty when presentation time came around, as the motion sensing, light emitting unit ceased functioning at go time. we believe the unit was short circuited (most likely when i was soddering extension wires). we were still fotunately able to see what might happen with a silhouette due to some improvising in class time. charley and i worked well together. i’m thinking of making a smaller model in the future for myself, and i think i’m going to continue with the idea of flight/freedom/birds/motion/dreaminess in future projects. documentation will probably become more methodological and good looking. we’ll see. for now, we’ve learned and have a lil something to show for it.

Categories
PhysicalComputing

final project – surprise surprise surprise

what is up. charley and i broke through tonight. phwew!


light flight from ben yee on Vimeo.


light flight from ben yee on Vimeo.


light flight guts from ben yee on Vimeo.

and here’s the working code we implemented

/* code modified by Ben and Charley
from James and Christian’s Balloon Tree
*/

int photoSwitch = 2;
int motorPin0 = 3; // pin in hbridge to arduino for motor
int motorPin1 = 4; // pin in hbridge to arduino for motor

int switchPin1 = 7; // pin for switch 1 to arduino
int switchPin2 = 8; // pin for switch 2 to arduino

int state1 = 0; // initial state of switch 1 is open
int state2 = 0; // initial state of switch 2 is open
int motorPinSwap = 0; //variable used to switch direction of motor
int motorPin0value = HIGH; // variable for motor direction
int motorPin1value = LOW; // variable for motor direction

boolean previouslyPressed1 = false; //BOOLEAN STATEMENT USED TO UNDERSTAND THE PREVIOUS STATE OF SWITCH1
boolean previouslyPressed2 = false; //BOOLEAN STATEMENT USED TO UNDERSTAND THE PREVIOUS STATE OF SWITCH2

void setup() {
Serial.begin(9600);
pinMode(motorPin0, OUTPUT);
pinMode(motorPin1, OUTPUT);
//the switch is an input
pinMode(photoSwitch, INPUT);
pinMode(switchPin1, INPUT);
pinMode(switchPin2, INPUT);
}

void loop() {

if (digitalRead(photoSwitch) == HIGH) {
digitalWrite(motorPin0,motorPin0value); //starts motor in one direction using variable motorPin0value
digitalWrite(motorPin1,motorPin1value); //starts motor in one direction using variable motorPin1value

//
state1 = digitalRead(switchPin1); //READING THE STATE SWITCH1
Serial.print(motorPin0value,DEC); //PRINT LINE
Serial.println(motorPin1value,DEC); //PRINT LINE
//********************************* IF STATEMENT FOR SWITCH1 ******************************
if(state1 == 1 && previouslyPressed1 == false) //IF STATEMENT IN ORDER TO CHANGE THE MOTORS DIRECTION
{ //IF SWITCH1 IS TURNED ON, AND IT WAS NOT PREVIOUSLY PRESSED
motorPinSwap = motorPin0value; //THEN SWITCH THE PIN AND REVERSE THE DIRECTION OF THE MOTOR
motorPin0value = motorPin1value; //WHICH IN RETURN MEANS THE SWITCH AS BEEN PREVIOUSLY PRESSED
motorPin1value = motorPinSwap; //WHICH IS WHY IT IS NOW “TRUE”

previouslyPressed1 = true;
}
else if(state1 == 0) //ELSE IF THE SWITCH IS NOT TURNED ON THAN IT HAS ALSO NOT
previouslyPressed1 = false; //BEEN PREVIOUSLY PRESSED

//
state2 = digitalRead(switchPin2); //READING A SECOND STATE USING SWITCH2
Serial.print(motorPin0value,DEC);
Serial.println (motorPin1value,DEC);
//******************************************* IF STATEMENT FOR SWITCH2 **************************************
if(state2 == 1 && previouslyPressed2 == false) //IF STATEMENT IN ORDER TO CHANGE THE MOTORS DIRECTION
{
motorPinSwap = motorPin0value;
motorPin0value = motorPin1value;
motorPin1value = motorPinSwap;

previouslyPressed2 = true;
}
else if(state2 == 0)
previouslyPressed2 = false;

}
else {
digitalWrite(motorPin0, HIGH); // set leg 1 of the H-bridge high
digitalWrite(motorPin1, HIGH); // set leg 2 of the H-bridge
}

}

Categories
PhysicalComputing

final project – progression

charley and i made lots of moves yesterday.

here’s a bunch of images taken over the course of the progress dating in the future even. smile.










our solar-powered-motion-sensor-triggered-super -bright-led unit arrived today. we were happy to find that it includes an auto/off switch and toggles for darkness, sensitivity, and time. also today charley further strengethened the mounting of the motor and added an antenna for the photocell.

though we took a late start to the project, our rapid action and hourly contributions have this “birds the word / light flight / qua quaalh qua quaaal” project near completion.

Categories
PhysicalComputing

final project – and… we’re changing our method again

yay, this should work for real this time. (greg likes the look of our) bigger dc motor. we’re shooting for the windshieldwiper mechanism concept. if only this were my only project in life… it’s so nice outside. arg to time constraints. yay to may and june and more.

Categories
PhysicalComputing

final project – wind issue, change in direction

so we’re moving away from using the fan because we cannot get enough wind with our little radioshack motor. boo. so much for the h-bridge circuit and analog coding success and fan hacking i did yesterday. double boo.

howeeeever, charley found great material for the bird (no need to sew umbrellas together anymore), and we brainstormed more and more and have a new grand concept that should work like butter. no dc motor and fan, but instead a servo, pulleys, and levers. the bird will still be fairly free flowing, but more reliable under our control. we’ll be drilling holes and using the woodshop more too. fun stuff.

we also discussed ideas for presention:
lights off yes.
stillness then triggered by flapping motion.
video shoot on blue screen? sky video behind perhaps.
setup before or during break.

*new* video of the wings phase 2

Categories
PhysicalComputing

final project – working light sensor and motor

working the code out on our own was pretty darn satisfying today. h-bridge. analog. yes. we’ll need to tweak the speeds/values once we get the actual fan and bird setup, but this is functional. see the lil video here.


int sensorPin = 0; // analog input photocell
int potValue = 0; //value read from photocell
int motor1Pin = 3; // H-bridge leg 1
int motor2Pin = 4; // H-bridge leg 2
int speedPin = 9; // H-bridge enable pin

void setup() {
// set the PWM as an input:
pinMode(sensorPin, INPUT);
Serial.begin(9600);
// set other pins as outputs:
pinMode(motor1Pin, OUTPUT);
pinMode(motor2Pin, OUTPUT);
pinMode(speedPin, OUTPUT);
}

void loop() {
potValue = analogRead(sensorPin); // read the pot value
analogWrite(speedPin, potValue); // PWM the sensor value with the pot value
Serial.println(potValue); // print pot value back to the debugger pane

if (potValue >= 800) {
analogWrite(motor2Pin, potValue*4); // set leg 2 of the H-bridge “high”
}
else if (potValue >= 400 && potValue

Categories
PhysicalComputing

final project – more forward and such

charley’s plan is to work more with the bird prototype tonight. i worked on the code that would control our motor/fan by use of a photo cell. the motor i had was broken somehow since i left it, so it was difficult to test, but this is pretty much the same as the h-bridge lab, so i just recreated that guy, and im hoping our stuff will work when we get together tomorrow. the solar powered/motioned sensing/light shining component is to arrive on monday. come together project, c’mon.

Categories
PhysicalComputing

final project – light flight? the bird’s the word?

charley and i met sunday and made some good progress on our project. our plan is mapped. we ordered parts, and we tinkered with a prototype of a wing. see a little video

some email exchange action too:
part one:
one giant bird made of lightweight material with a wingspan in the 4 to 5 foot range. the wings would have a reflective quality. this bird would hang from the ceiling and otherwise be independent. underneath the bird would be a fan whose motor would be hooked to a power supply and an arduino. the arduino would have a light sensor attached.

part two:
a solar panel would collect energy and store it in a 6v battery that runs to a series of led lights and a motion detector (this comes as an assembled product). the led lights would glow at the underbelly of the bird where the reflective qualities would light (thinking there is some sort of spray that glows or reflects?) but also trigger the light sensor to ignite the motor of the fan. the fan would then blow air creating lift in the wings of the bird.

subject to small refinements and alterations. we’re ordering parts and researching materials currently, not in that order.

all good in the hood for now. we should be in nice shape for next week….hopefully.

Categories
PhysicalComputing

lab 8 (midi)

so tim stutts and i worked on this lab together. we had it all hooked up seemingly correct, but for some reason it didn’t work. thus we didn’t get to the creative application portion of the assignment. after class though, greg spotted out problem, which was just that the connector pins we soddered were “reversed.” good stuff.

class itself was super informative as well. we’re approaching the end now…