|
Intro to Physical Computing Syllabus Research & Learning Other Class pages
ITP Help Pages |
Introduction to Physical Computing - Summer 20117 July - 11 August 2011 Student BlogsIf you don't send your blog to me, everyone will know when they come to this page! Massive public shaming to follow! SuppliesUpdate July 7 : The kits arrived in the computer store this morning! Yay! See http://itp.nyu.edu/physcomp/Intro/Supplies for a description of what you're getting. Kits (supplied by adafruit) are for sale at the NYU computer store for ~$90. It will include pretty much everything you'll need to do the basic classwork. Some additional supplies are available in the shop, and feel free to use what is in there. However, dont go overboard (using an LED or 2 is fine, using 100 for your Glow-o-tron is not). ScheduleAs we have fewer (but longer!) course meetings, we will follow the regular course, but lose some time for the final project. The syllabus is broken down into:
Week 1 : Getting to know your Arduino. Hello Everything!Class 1CONCEPTS:
LABS: ASSIGNMENT:
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:
Take pictures or video as appropriate, of the most interesting ones.
LINKS
READING:
Class 2CONCEPTS: LABS:
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.
LINKS
Week 2 : Back to the PhysicalClass 3PRESENT THIS WEEK:
CONCEPTS: LABS:
READING:
Class 4CONCEPTS:
LABS: READING:
ASSIGNMENT: Stupid Pet Trick. Make a simple physically interactive device that uses the skills you've learned in the labs. It must respond to a physical action or series of actions a person takes, and it must be amusing, surprising, or otherwise engaging.It doesn't have to be practical, or complex, as long it shows that you understand the basics of digital and analog I/O and how to use them. If you're unfamiliar with the term "stupid pet trick," Googling the term may provide you inspiration for the tone of this project.
Examples:
Week 3 : Talk to me! Communication with other thingsClass 5DISCUSS PET TRICKS! CONCEPTS:
LAB:
READING:
LINKS
CODE FROM CLASS
/*
Serial RGB LED controller
by Tom Igoe
Controls an RGB LED whose R, G and B legs are
connected to pins 11, 9, and 10, respectively.
*/
// constants to hold the output pin numbers:
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
//because our LEDs are common anode, we invert the values in the map() function
brightness = map(inByte, '0', '9', 255, 0);
// set the current pin to the current brightness:
analogWrite(currentPin, brightness);
}
}
}
Class 6PRESENT THIS CLASS:
CONCEPTS:
READING:
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 4 : Controlling high current loads, making things moveClass 7CONCEPTS:
LABS:
LABS: 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 Scott.
FROM CLASS
Read through the Labs, but do these instead : Here's some code for controlling a motor attached to pin 9 with a pot, or other analog input :
int potPin = 0; // The pot or senor is on Analog input pin 0
int sensorValue = 0; // value read from the analog sensor
int motorPin = 9; // PWM pin that the transistor is on. n.b. PWM 0 is on digital pin 9
void setup() {
// initialize serial communications at 9600 bps:
Serial.begin(9600);
// declare the motor pin as an output:
pinMode(motorPin, OUTPUT);
}
void loop() {
sensorValue = analogRead(potPin); // read the sensor value
// map the sensor value from the 10-bit input range (0-1023)
// to the output range (0-255).
int motorSpeed = sensorVal/4;
analogWrite(motorPin, motorSpeed); // set the motor speed with the result
Serial.println(motorSpeed); // print the motorSpeed value back to the debugger pane (0-255)
delay(10); // wait 10 milliseconds before the next loop
}
Class 8CONCEPTS:
Week 5 : Additional concerns, wireless communicationClass 9
BLOG:
Class 10
BLOG:
Week 6 : Holy Mackerel, this is already over?Class 11
Class 12
BLOG:
|