Intro to Physical Computing Syllabus

Research & Learning

Other Class pages

Shop Admin

ITP Help Pages
Tom's pcomp site
DanO's pcomp site


Scott S 2012

Intro.ScottS2012 History

Hide minor edits - Show changes to markup

July 15, 2012, at 08:40 PM by shf220 -
Changed line 31 from:
  • Miriam Brafman
to:
  • Miriam Brafman
April 01, 2012, at 12:59 PM by shf220 -
Changed line 415 from:
  • present finals in progress. Critique concepts and interaction. Guest critique of physical interface
to:
  • present finals in progress. Critique concepts and interaction.
Changed line 420 from:
  • present progress, Critique concepts and interaction.
to:
  • present progress, Critique concepts and interaction. Guest critique of physical interface
March 31, 2012, at 10:36 AM by shf220 -
Changed line 398 from:
to:
March 31, 2012, at 10:35 AM by shf220 -
Changed line 398 from:
to:
March 21, 2012, at 08:05 PM by shf220 -
Added lines 364-367:
  • 555 timer from make
  • my 555 timer notes from when i was a student Warning! it's ancient!
  • TEAM ASSESSMENT email this to me, or bring it to the next class
March 07, 2012, at 06:01 PM by shf220 -
Added lines 320-359:

CODE IN CLASS

const int greenPin = 9;
const int bluePin = 10;
const int redPin = 11;
int currentPin = 0; // current pin to be faded
int brightness = 0; // current brightness level
void setup() {
  // initiate serial communication:
  Serial.begin(9600);
  // initialize the LED pins as outputs:
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
}
void loop() {
  // if there's any serial data in the buffer, read a byte:
  if (Serial.available() > 0) {
    int inByte = Serial.read();
    // respond to the values 'r', 'g', 'b', or '0' through '9'.
    // you don't care about any other value:
    if (inByte == 'r') {
      currentPin = redPin;
    }
    if (inByte == 'g') {
      currentPin = greenPin;
    }
    if (inByte == 'b') {
      currentPin = bluePin;
    }
    if (inByte >= '0' && inByte <= '9') {
      // map the incoming byte value to the range of the analogRead() command
      brightness = map(inByte, '0', '9', 0, 255);
      // set the current pin to the current brightness:
      analogWrite(currentPin, brightness);
    }
  }
}
February 23, 2012, at 11:26 AM by shf220 -
Deleted line 31:
  • Jack Holmes
February 23, 2012, at 10:56 AM by shf220 -
Deleted line 35:
  • Juan Arenas
February 22, 2012, at 04:21 PM by shf220 -
Changed lines 281-283 from:
  • Sound out
  • Transistor
to:
  • Servo
  • (possibly) Sound out
February 22, 2012, at 03:45 PM by shf220 -
Deleted line 36:
  • Jackson Bishop
February 21, 2012, at 12:34 PM by shf220 -
Changed lines 7-8 from:
to:
February 16, 2012, at 08:42 AM by shf220 -
Added lines 173-274:

From Class Simple analog In

int potVal=0; // this will hold the sensor value

void setup(){
  //open a serial connection
 Serial.begin(9600); 

}

void loop(){
  //read the analog voltage
 potVal=analogRead(A1); 

 //to find the voltage, uncomment the line below 
 //and change what is printed out
 //float voltage=(5.0/1023.0)*float(potVal);

 //send the value over the serial port
 Serial.println(potVal);

 delay(10);

}

Multiple Analog In


void setup(){
  //uncomment the line below if you need to use an external 
  //reference for the sensor you're using
//analogReference(EXTERNAL);
Serial.begin(9600);
}

void loop(){

 Serial.print("X Axis : "); 
 Serial.print(analogRead(A3)); 
 Serial.print("\t");

  delay(10);

 Serial.print("Y Axis : "); 
 Serial.print(analogRead(A2)); 
 Serial.print("\t");

  delay(10);

 Serial.print("Z Axis : "); 
 Serial.println(analogRead(A1));  

  delay(10);

}

Delay Blinker

int potVal=0; // this will hold the sensor value
const int ledPin=8; //this is the LED


void setup(){
  //led is on an output
  pinMode(ledPin, OUTPUT);
  //open a serial connection to the computer
 Serial.begin(9600); 

}

void loop(){
  //read the analog voltage
 potVal=analogRead(A1); 

 //turn the led on
 digitalWrite(ledPin, HIGH);
 //wait
 delay(potVal);
 //led off
 digitalWrite(ledPin, LOW);
 //wait
 delay(potVal);

 //send the value over the serial port
 Serial.println(potVal);

 //delay(10);

}

Places to go shopping!

  • Digikey : components/electronics
  • Jameco : components/electronics
  • Mouser Electronics : electronics
  • McMaster-Carr : materials and lots of cool things
  • Adafruit : Arduinos, shields, and kits
  • Sparkfun : Arduinos, shields, breakout boards, buy a final project for $60
February 15, 2012, at 12:16 PM by shf220 -
Changed lines 157-158 from:
  • Lab: Analog in
to:
  • Lab: Analog in
February 15, 2012, at 11:40 AM by shf220 -
Added lines 167-169:

READING:

  • Graham Pullin, Design Meets Disability
Deleted lines 187-189:

READING:

  • Graham Pullin, Design Meets Disability
February 13, 2012, at 10:13 AM by shf220 -
Added lines 97-151:

From Class

  • Hello Arduino
//This is my LEDPin as a constant
const int ledPin = 12;

//run this once
void setup(){
  pinMode(ledPin,OUTPUT);
}


/*This is going to loop FOREVER!!!!
FOREVERRRRRR!!!!! */
void loop(){
  digitalWrite(ledPin,HIGH);
  delay(1000);
  digitalWrite(ledPin,LOW);  
  delay(1000);
}
  • Hello Switches
//This is my Red LED as a constant
const int redLed = 12;
//This is my Green LED as a constant
const int greenLed = 11;
//This is my switchPin
const int switchPin =2;
//variable to hold the switch state
int switchState;

//run this once
void setup(){
  pinMode(greenLed,OUTPUT);
    pinMode(redLed,OUTPUT);
  pinMode(switchPin,INPUT);
}

/*This is going to loop FOREVER!!! */
void loop(){
  switchState = digitalRead(switchPin);

  if(switchState==HIGH){
  digitalWrite(greenLed,HIGH);
    digitalWrite(redLed,LOW);
  }else{
  digitalWrite(greenLed,LOW);
    digitalWrite(redLed,HIGH);
  }

}
February 08, 2012, at 11:10 PM by shf220 -
Changed lines 39-40 from:
to:
  • Sarah Schoemann
  • Aaron Coen
February 01, 2012, at 06:19 PM by shf220 -
Changed lines 36-40 from:
to:
  • Seok Bin Oh
  • Juan Arenas
  • Jackson Bishop
February 01, 2012, at 03:53 PM by shf220 -
Changed lines 35-36 from:
to:
  • Adrian Wenzel
February 01, 2012, at 03:32 PM by shf220 -
Changed lines 34-35 from:
to:
  • Oscar Tews
February 01, 2012, at 01:31 PM by shf220 -
Changed lines 33-34 from:
to:
  • Jack Holmes
February 01, 2012, at 12:30 PM by shf220 -
Changed line 46 from:

Week 1

to:

Week 1

Changed line 65 from:

Week 2

to:

Week 2

Changed line 78 from:

Week 3

to:

Week 3

Changed line 88 from:

Week 4

to:

Week 4

Changed lines 106-107 from:

Week 5

to:

Week 5

Changed line 133 from:

Week 6

to:

Week 6

Changed lines 144-145 from:

Week 7

to:

Week 7

Changed lines 158-159 from:

Week 8

to:

Week 8

Changed lines 180-181 from:

Week 9

to:

Week 9

Changed line 196 from:

Week 10

to:

Week 10

Changed line 208 from:

Week 11

to:

Week 11

Changed line 213 from:

Week 12

to:

Week 12

Changed line 219 from:

Week 13

to:

Week 13

Changed line 222 from:

Week 14

to:

Week 14

February 01, 2012, at 12:26 PM by shf220 -
Changed lines 76-77 from:
  • : Switches
to:
February 01, 2012, at 12:26 PM by shf220 -
Added line 74:
  • Lab: Setting up a breadboard
Changed lines 76-77 from:
  • Lab: Setting up a breadboard
to:
  • : Switches
February 01, 2012, at 12:02 PM by shf220 -
Changed lines 32-33 from:
to:
  • Miriam Brafman
February 01, 2012, at 09:36 AM by shf220 -
Changed lines 84-85 from:
  • Lab: first Arduino program. Download the latest version of Arduino for this lab.
to:
  • Lab: first Arduino program. Download the latest version of the Arduino software for this lab.
February 01, 2012, at 12:02 AM by shf220 -
Changed lines 5-6 from:
  • Office Hours : TBD, most likely Mondays.
to:
  • Office Hours : Mondays! In the afternoon. from like ... 4-5 Sign up here
January 31, 2012, at 11:04 PM by shf220 -
Changed lines 31-32 from:
to:
  • Josue Berra
January 31, 2012, at 07:53 AM by shf220 -
Changed lines 30-31 from:
to:
  • Alex Attar
January 30, 2012, at 09:30 PM by shf220 -
Changed lines 29-30 from:
to:
  • Kai Zhang
January 30, 2012, at 03:03 PM by shf220 -
Changed lines 28-29 from:
to:
  • Joseph Lim
January 30, 2012, at 02:43 PM by shf220 -
Changed lines 27-28 from:
to:
  • Dhruv Mehrotra
January 29, 2012, at 09:59 AM by shf220 -
Changed lines 26-28 from:
to:
  • Cheryl Wu
January 27, 2012, at 10:46 AM by shf220 -
Deleted lines 14-15:

Some time in weeks 1 - 3: Attend a tool safety session in the shop

Added lines 24-26:

Class Blogs:

  • Lauren Fritz
January 26, 2012, at 03:22 PM by shf220 -
Added lines 58-59:
  • Class field trip to the shop. Starring John Duane.
January 25, 2012, at 08:28 PM by shf220 -
Added line 48:
  • Set up your blog.
January 25, 2012, at 08:27 PM by shf220 -
Changed lines 48-50 from:
  • Put a link to your blog on the blog list page.
  • Arrange a shop safety seminar with John Duane.
to:
  • Email me a link to your blog.
January 25, 2012, at 04:27 PM by shf220 -
Added line 41:
  • Senses, us v computers
January 25, 2012, at 04:14 PM by shf220 -
Added lines 4-6:
Added lines 26-37:

Additional links of interest

  • main Arduino site
  • Tom Igoe's pcomp blog
  • Tom's old pcomp site
  • Jody Culkin's Intro to Arduino Comic
  • Tom's taxonomy of Pcomp projects
  • Jim Campbell's formula for computer art

Supplies

See http://itp.nyu.edu/physcomp/Intro/Supplies

Added line 59:
  • Breadboards
Deleted line 70:
  • Breadboards
Changed lines 116-120 from:
to:

ASSIGNMENT:

Media controller project. Make a physical device that controls a medium. It should control the medium in real-time, so that the user can change her actions and see changes as they affect the medium. There are lots of media: digital video, digital audio, electronic or acoustic sound, physical media like paint or ink, and others. Think about paint brushes, video mixers, musical instruments, water faucets, sewing machines -- anything that can control a medium and let you see the changes as you vary your control is fair game.'
This is a group assignment. Groups will be arranged in class this week.
Deleted lines 131-135:

ASSIGNMENT:

Media controller project. Make a physical device that controls a medium. It should control the medium in real-time, so that the user can change her actions and see changes as they affect the medium. There are lots of media: digital video, digital audio, electronic or acoustic sound, physical media like paint or ink, and others. Think about paint brushes, video mixers, musical instruments, water faucets, sewing machines -- anything that can control a medium and let you see the changes as you vary your control is fair game.'
This is a group assignment. Groups will be arranged in class this week.
Deleted line 192:
Deleted line 195:
Changed line 197 from:
  • present finals in progress. Critique concepts and interaction
to:
  • present finals in progress. Critique concepts and interaction. Guest critique of physical interface
Changed line 202 from:
  • present progress, Critique concepts and interaction. Guest critique of physical interface
to:
  • present progress, Critique concepts and interaction.
Changed line 219 from:

(:include Intro.GroupHeader:)

to:

(:include Intro.GroupHeader:)

January 25, 2012, at 03:35 PM by shf220 -
Deleted line 11:
Deleted line 15:
Changed line 27 from:
  • Observation (In class)
to:
  • Observation (In class during the break)
Added lines 35-37:

READING:

  • Crawford, The Art of Interactive Design, chapters 1 and 2 (note: you will need to sign into NYUHome to view this. From your NYUHome home page, click "Research" then "books24x7.com" then search for "The Art of Interactive Design" by Chris Crawford. Alternately, try this link. )
Deleted lines 40-43:

READING:

  • Crawford, The Art of Interactive Design, chapters 1 and 2 (note: you will need to sign into NYUHome to view this. From your NYUHome home page, click "Research" then "books24x7.com" then search for "The Art of Interactive Design" by Chris Crawford. Alternately, try this link. )
Deleted line 49:
Deleted line 60:
January 24, 2012, at 01:15 PM by shf220 -
Changed lines 29-30 from:
  • Observation
to:
  • Observation (In class)

Pick a piece of interactive technology in public, used by multiple people. Describe the context in which it's being used. Watch people use it, preferably without them knowing they're being observed. Take notes on how they use it, what they do differently, what appear to be the difficulties, what appear to be the easiest parts. Record what takes the longest, what takes the least amount of time, and how long the whole transaction takes.

Changed lines 38-39 from:
to:
  • After reading Chris Crawford's definition, how would you define physical interaction? What makes for good physical interaction? Can you name some examples of digital technology that are not interactive?
Added lines 86-88:

PRESENT THIS WEEK:

  • Present Fantasy device
Deleted lines 101-104:

PRESENT THIS WEEK:

  • Present Fantasy device
January 23, 2012, at 03:43 PM by shf220 -
Added line 28:
  • Examples
Changed lines 34-35 from:
to:
  • Arrange a shop safety seminar with John Duane.
Deleted lines 64-65:
Deleted line 79:
Changed lines 81-83 from:
Fantasy Device. Think of a fantasy device you've always wanted. Doesn't have to be physically possible, but it has to have a physical interface. Design what the physical interface was. Document your design on your blog, and bring it in for the class. Your mock-up doesn't have to work, and it can be made out of any materials you're comfortable with. Make this a quick sketch, just enough so that your classmates have a sense of what they would do to use your device.
to:
Fantasy Device. Think of a fantasy device you've always wanted. Doesn't have to be physically possible, but it has to have a physical interface. Design the physical interface. Document your design on your blog, and bring it in for the class. Your mock-up doesn't have to work, and it can be made out of any materials you're comfortable with. Make this a quick sketch, just enough so that your classmates have a sense of what they would do to use your device.

Week 5

Deleted line 98:

Week 5

Changed lines 100-106 from:
  • Stupid Pet Trick

ASSIGNMENT:

Media controller project. Make a physical device that controls a medium. It should control the medium in real-time, so that the user can change her actions and see changes as they affect the medium. There are lots of media: digital video, digital audio, electronic or acoustic sound, physical media like paint or ink, and others. Think about paint brushes, video mixers, musical instruments, water faucets, sewing machines -- anything that can control a medium and let you see the changes as you vary your control is fair game.'
This is a group assignment. Groups will be arranged in class this week.
to:
  • Present Fantasy device
Deleted line 106:
Changed lines 118-122 from:
to:

ASSIGNMENT:

Media controller project. Make a physical device that controls a medium. It should control the medium in real-time, so that the user can change her actions and see changes as they affect the medium. There are lots of media: digital video, digital audio, electronic or acoustic sound, physical media like paint or ink, and others. Think about paint brushes, video mixers, musical instruments, water faucets, sewing machines -- anything that can control a medium and let you see the changes as you vary your control is fair game.'
This is a group assignment. Groups will be arranged in class this week.
Changed lines 138-153 from:

CONCEPTS:

  • high current loads and motors
    • controlling DC Motors
    • stepper motors
  • Dustyn's writing on:
    • Motors
    • Materials: what to choose and where to get
    • Making Things

LABS:

Week 9

to:
Changed lines 159-160 from:

Week 10

to:

Week 9

Added lines 162-176:
  • high current loads and motors
    • controlling DC Motors
    • stepper motors
  • Dustyn's writing on:
    • Motors
    • Materials: what to choose and where to get
    • Making Things

LABS:

Week 10

CONCEPTS:

Changed line 195 from:
  • present in progress, Critique concepts and interaction
to:
  • present progress, Critique concepts and interaction. Guest critique of physical interface
December 21, 2011, at 06:29 PM by shf220 -
Added lines 1-214:

Introduction to Physical Computing

Spring 2012

Link to printable syllabus

Physical Computing is an approach to learning how humans communicate through computers that starts by considering how humans express themselves physically. In this course, we take the human body as a given, and attempt to design computing applications within the limits of its expression.

To realize this goal, you'll learn how a computer converts the changes in energy given off by our bodies (in the form of sound, light, motion, and other forms) into changing electronic signals that it can read interpret. You'll learn about the sensors that do this, and about very simple computers called microcontrollers that read sensors and convert their output into data. Finally, you'll learn how microcontrollers communicate with other computers.

Physical computing takes a hands-on approach, which means that you spend a lot of time building circuits, soldering, writing programs, building structures to hold sensors and controls, and figuring out how best to make all of these things relate to a person's expression.

Some time in weeks 1 - 3: Attend a tool safety session in the shop

For each week, you'll find:

  • Concepts we'll discuss in class. Course notes are linked so you can read them before class, to know what we're talking about.
  • Lab exercises that illustrate the concepts. You're not required to show your lab work in class, but do them each week to learn, and come in with questions if you have any. If you did something you're proud of, feel free to bring it in, though this is optional.
  • Production assignments larger assignments which have scheduled times you'll be expected to show them in class.
  • Reading to be read in the week they're assigned. Will come up in discussion the week after, usually.
  • Blog assignments Writing the week when it's assigned. Will come up in class from time to time. Read each other's stuff too.
  • Due dates for production assignments

Week 1

CONCEPTS:

  • What is Physical Computing?
  • Observation

ASSIGNMENT:

BLOG:

READING:

  • Crawford, The Art of Interactive Design, chapters 1 and 2 (note: you will need to sign into NYUHome to view this. From your NYUHome home page, click "Research" then "books24x7.com" then search for "The Art of Interactive Design" by Chris Crawford. Alternately, try this link. )

Week 2

CONCEPTS:

  • Understanding Electricity
  • A short video in a light-hearted vein on some electrical characteristics.

LABS:

  • Lab: Electronics
  • Lab: Setting up a breadboard

Week 3

  • What is a Microcontroller?
    • Microcontrollers and sensors in the everyday environment
  • Analog vs. Digital
  • Digital Input and Output
  • Breadboards
  • Intro to Arduino and first program.

LABS:

  • Lab: first Arduino program. Download the latest version of Arduino for this lab.

Week 4

CONCEPTS:

  • analog input

LABS:

  • Lab: Analog in

BLOG:

Sensor walk. Take a walk around your neighborhood, or a different one. Take a count of every interaction with a sensor you see. These might include:
  • Pushbuttons on an ATM
  • motion sensors on doors, faucets, etc.
  • Floor mats
  • Cameras
Take pictures or video as appropriate, of the most interesting ones.

ASSIGNMENT:

Fantasy Device. Think of a fantasy device you've always wanted. Doesn't have to be physically possible, but it has to have a physical interface. Design what the physical interface was. Document your design on your blog, and bring it in for the class. Your mock-up doesn't have to work, and it can be made out of any materials you're comfortable with. Make this a quick sketch, just enough so that your classmates have a sense of what they would do to use your device.

CONCEPTS:

  • analog output
    • pulsewidth modulation
  • Sound out
  • Transistor

LABS:

  • Lab: servo/analog out
  • Lab: Tone output

READING:

  • Graham Pullin, Design Meets Disability

Week 5

PRESENT THIS WEEK:

  • Stupid Pet Trick

ASSIGNMENT:

Media controller project. Make a physical device that controls a medium. It should control the medium in real-time, so that the user can change her actions and see changes as they affect the medium. There are lots of media: digital video, digital audio, electronic or acoustic sound, physical media like paint or ink, and others. Think about paint brushes, video mixers, musical instruments, water faucets, sewing machines -- anything that can control a medium and let you see the changes as you vary your control is fair game.'
This is a group assignment. Groups will be arranged in class this week.

READING:

  • Norman, Design of Everyday Things, ch. 1
  • Norman, Emotional Design, Chapter 1, "Attractive Things Work Better".

Week 6

CONCEPTS:

  • serial communication week 1
    • graphing a sensor

LAB:

  • Lab: Serial Output

BLOG:

Observation. Pick a piece of interactive technology in public, used by multiple people. Write down your assumptions as to how it's used, and describe the context in which it's being used. Watch people use it, preferably without them knowing they're being observed. Take notes on how they use it, what they do differently, what appear to be the difficulties, what appear to be the easiest parts. Record what takes the longest, what takes the least amount of time, and how long the whole transaction takes. Consider how the readings from Norman and Crawford reflect on what you see.

Week 7

CONCEPTS:

  • serial communication week 2
    • multiple sensors
    • Interpreting bytes: ASCII vs. binary
    • handshaking/call-and-response

LABS:

  • Lab: Multiple Serial Output

READING:

  • Hoffman, Visual Intelligence

Week 8

CONCEPTS:

  • high current loads and motors
    • controlling DC Motors
    • stepper motors
  • Dustyn's writing on:
    • Motors
    • Materials: what to choose and where to get
    • Making Things

LABS:

Week 9

PRESENT THIS WEEK: media controller.

ASSIGNMENT:

Final project. Create a physically interactive system of your choice. Your focus in this assignment should be on careful and timely sensing of the relevant actions of the person or people that you're designing this for, and on clear, prompt, and effective response. Any interactive system is going to involve systems of listening, thinking, and speaking from both parties. Whether it involves one cycle or many, the exchange should be engaging.
Document your work thoroughly online as you go. Include details of all phases of the project. Include a project summary as well, explaining what the system you built is, what it does, and what purpose it's intended to serve. Your summary should introduce the project.
A few examples:
Musical Instruments. Performing music involves a sustained engagement between the performer and the instrument. The feedback fro mthe instrument has to be immediate and clear in order for the performer to continue playing. The interface has to be flexible so that the musician can exercise her creativity in playing, but has to have some boundaries so that she knows what the instrument can do and what it can't do.
Game interfaces. Like musical instruments, they involve constant back-and-forth interaction and immediate response. They are often simpler than musical instruments. In fact, the standard game controller has gotten so standard that the action of many games is artificially adapted to the needs of the controller, not the physical expressiveness of the player. Pick a specific game and see if you can change that.
Assistive devices. Whether it's something as simple as a reaching device (think of pickle pickers) or something more complex, these devices are very demanding of clear, reliable response.
Remote control systems. They require not only a clear interface, but must also return enough information on the remote system's action to let you know that you're doing the right thing. Whether it's a remote controller for your home electrical devices or a Mars rover controller, the need for clarity and good feedback are equally essential to the person who it's made for.
There are many other good applications for this project. Discuss the specifics of yours with your instructor.

Week 10

CONCEPTS:

  • complex data communications
    • configuration vs. communication (command move vs. data mode)
    • addressing
    • Bluetooth serial as example
    • protocols discussion
    • Optional Bluetooth Lab

BLOG:

  • Final Project concept. Explain the concept of your final project online. Write it and/or illustrate it so that readers who are not in this class can get a clear and concise idea of what you plan to make for the final.

Week 11

  • present finals in progress. Critique concepts and interaction

READING:

  • Rory Hamilton's notes on preparing presentations and giving presentations

Week 12

  • present in progress, Critique concepts and interaction

BLOG:

  • describe the technical system for your final project.

Week 13

  • final project workshop. Discuss any remaining technical issues

Week 14

PRESENT THIS WEEK:

  • Final Project

BLOG:

  • finish the documentation for your final project.

(:include Intro/Grading:)

(:include Intro.GroupHeader:)

  Edit | View | History | Print | Recent Changes | Search Page last modified on July 15, 2012, at 08:40 PM