Making Things Interactive

May 11, 2008

Pouring Light Bowl

Filed under: Assignments,Christopher Bridgman,Final Project — cbridgma @ 9:22 pm

This is a project that explores the idea of light transfer. This shows the process of 2 attempts at creating the pouring light table. The first exploration shows my first stab at the project, and the second shows some of the improvements. The idea behind this is to allow the user to create a mood that he/she wants. I envisioned this going into, say a night club table. This would allow the people to use the table to set their mood lighting. The bowl allows the user to vary the amount of light that they want within the bowl. You use the light cup, which has an infinite source of light to pour the light into the bowl until the desired light level is reached. Once you are done, or if you want to drain the light, you use the draining mechanisms to drain the bowl.

Version 1 Process photos:

1)LEDs soldered in Parallel Series2)Bread Board and Light Cup

3)Infinite Light Cup4)Final Effect of Table and Cup

5)Final Set Up6)Final Look

 

Captions:

1) Process photo showing how the LEDs are soldered together in parallel series, which reduces power drop off when the LEDs are lit.

2) A photo showing the final bread board set ups for the power transistors and the light cup.

3) A close up of the bread board set up of the light cup with the “infinite light source.”

4) A photo of the final effect for this first stab at the project.

5) A photo of the final set up of the LEDs and how the bread board fits within the box.

6) A photo of the final product of the first version of this product.

A Video of how this version of the Final Project Works:

Code For this Version:

int statusPin = 13;                // LED connected to digital pin 13
int ledRing1 = 11;                      // Ring 1 connected to analog 5
int ledRing2 = 10;                     // Ring 2 connected to analog 4
int ledRing3 = 6;                     // Ring 3  Connected to analog 3
int ledRing4 = 5;                    // Ring 4 Connected to analog 2
int tiltPin = 3;                 // tilt switch connected to 7
int switchPin = 2;                   // push switch connected to 6
int tiltval;
int switchval;
int Ring1val = 0;
int Ring2val = 0;
int Ring3val = 0;
int Ring4val = 0;

void setup()                    // run once, when the sketch starts
{
  pinMode(statusPin, OUTPUT);      // sets the digital pin as output
  pinMode(ledRing1, OUTPUT);         // sets the digital pin as output
  pinMode(ledRing2, OUTPUT);      // sets the digital pin as output
  pinMode(ledRing3,OUTPUT);         // sets the digital pin as output
  pinMode(ledRing4,OUTPUT);        // sets the digital pin as output
  pinMode(tiltPin, INPUT);            // sets the pin as input
  pinMode(switchPin, INPUT);            // sets the pin as input
  Serial.begin(9600); 
}

void loop()                     // run over and over again
{
  tiltval = digitalRead(tiltPin);        // set tiltval egual to the tiltPin reading
  switchval = digitalRead(switchPin);        // set switchval equal to the switchPin reading

  Serial.print("Tilt Value: ");
  Serial.println(tiltval);    

  Serial.print("Switch Value: ");
  Serial.println(switchval);   

  digitalWrite(statusPin, HIGH);

  if ( tiltval == 0)
  {
    if ( Ring1val < 255)
    {
      analogWrite ( ledRing1, Ring1val++);    }
    if ( Ring1val == 255 && Ring2val < 255)
    {
      analogWrite (ledRing2, Ring2val++);    }
    if ( Ring1val == 255 && Ring2val == 255 && Ring3val < 255)
    {
      analogWrite (ledRing3, Ring3val++);    }
    if ( Ring1val == 255 && Ring2val == 255 && Ring3val == 255 && Ring4val < 255)
    {
      analogWrite (ledRing4, Ring4val++);    }
  }
 
  if ( switchval == 1)
  {
    if ( Ring4val > 0)
    {
      analogWrite ( ledRing4, Ring4val--);    }
    if ( Ring3val > 0 && Ring4val == 0)
    {
      analogWrite (ledRing3, Ring3val--);    }
    if ( Ring2val > 0 && Ring3val == 0 && Ring4val == 0)
    {
      analogWrite (ledRing2, Ring2val--);    }
    if ( Ring1val > 0 && Ring2val == 0 && Ring3val == 0 && Ring4val == 0)
    {
      analogWrite (ledRing1, Ring1val--);    }
  }

} 

 

Final Version Photos:

1)Light Bowl2)LED detail

3)Final Bread Board4)Final Soldering

5)Cup Bread Board6)Light Tap

 

Captions:

1) A Final photo of the bowl which shows how the bowl is shaped and connected as well as the LEDs.

2) A detail shot showing how the LEDs fit into holes cut within the plexi-glass bowl.

3) A photo of the final bread board set up; what a mess of wires!

4) A photo of the final hardware set up of the soldering showing how it is set up in parallel series. This is done so the LEDs do not get dimmer due to power drop off.

5) The final set up for the cup bread board with the infinite red light source and the gravity/tilt switch.

6) A photo of the light tap from which the light pours out of the bowl.

A circuit diagram for the final product: final-mti-project-schematic

Video of the Final Product:

Code for the Final Product:


int tiltPin = 15;                 // tilt switch connected to 7
int tiltval;
int ledRing1R = 12;                // LED ring connected to digital pin 12
int ledRing2R = 9;                 // LED ring connected to digital pin 9
int ledRing3R = 10;                 // LED ring connected to digital pin 10
int ledRing4R = 11;                 // LED ring connected to digital pin 11
int redTap = 13;                    //Red Light for the tap
int Rswitch = 8;                    //tap switch for drainging red light
int switchRval;
int Rsource = 14;                    //endless sourse of red light for cup
int ledRing1Rval = 0;                // starting the value of LEDs at zero
int ledRing2Rval = 0;                 // starting the value of LEDs at zero
int ledRing3Rval = 0;                 // starting the value of LEDs at zero
int ledRing4Rval = 0;                   // starting the value of LEDs at zero

void setup()                    // run once, when the sketch starts
{
  pinMode(Rsource, OUTPUT);      // sets the digital pin as output
  pinMode(ledRing1R, OUTPUT);         // sets the digital pin as output
  pinMode(ledRing2R, OUTPUT);      // sets the digital pin as output
  pinMode(ledRing3R,OUTPUT);         // sets the digital pin as output
  pinMode(ledRing4R,OUTPUT);        // sets the digital pin as output
  pinMode(redTap, OUTPUT);           // sets the digital pin as output
  pinMode(tiltPin, INPUT);            // sets the pin as input
  pinMode(Rswitch, INPUT);            // sets the pin as input
  Serial.begin(9600); 
}

void loop()                     // run over and over again
{
  tiltval = digitalRead(tiltPin);        // set tiltval egual to the tiltPin reading
  switchRval = digitalRead(Rswitch);        // set switchval equal to the switchPin reading

  Serial.print("Tilt Value: ");
  Serial.println(tiltval);    

  Serial.print("Switch Value: ");
  Serial.println(switchRval);   

  digitalWrite(Rsource, HIGH);

  if ( tiltval == 0)                           // logic for the actual lighting for the project
  {                                            // basically, this logic states that if the cup is tilted,
    if ( ledRing1Rval < 255)                   // then to light up the rings in a progression starting lowest to highest.
    {                                          // the arduino looks to see which ring needs be lit up and then will light up the correct LED.
      digitalWrite ( ledRing1R, HIGH);
      delay(5);
      ledRing1Rval = ledRing1Rval +5;   }
    if ( ledRing1Rval >= 255 && ledRing2Rval < 255)
    {
      analogWrite (ledRing2R, ledRing2Rval);
      delay(5);
      ledRing2Rval = ledRing2Rval +5;   }
    if ( ledRing1Rval == 255 && ledRing2Rval == 255 && ledRing3Rval < 255)
    {
      analogWrite (ledRing3R, ledRing3Rval);
      delay(5);
      ledRing3Rval = ledRing3Rval +5;   }
    if ( ledRing1Rval == 255 && ledRing2Rval == 255 && ledRing3Rval == 255 && ledRing4Rval < 255)
    {
      analogWrite (ledRing4R, ledRing4Rval);
      delay(5);
      ledRing4Rval = ledRing4Rval +5;    }
  }
 
  if ( switchRval == 1)               // this line of logic does the opposite of the the tilt switch logic.
  {                                    // It looks at Tap switch and will draing the bowl when the tap is down, draining the bowl of the light.
    digitalWrite(redTap,HIGH);
   
    if ( ledRing4Rval > 0)
    {
      analogWrite ( ledRing4R, ledRing4Rval--);
      delay(5);    }
    if ( ledRing3Rval > 0 && ledRing4Rval == 0)
    {
      analogWrite (ledRing3R, ledRing3Rval);
      delay(5);
      ledRing3Rval = ledRing3Rval -5;    }
    if ( ledRing2Rval > 0 && ledRing3Rval == 0 && ledRing4Rval == 0)
    {
      analogWrite (ledRing2R, ledRing2Rval);
      delay(5);
      ledRing2Rval = ledRing2Rval -5;    }
    if ( ledRing1Rval > 0 && ledRing2Rval == 0 && ledRing3Rval == 0 && ledRing4Rval == 0)
    {
      digitalWrite (ledRing1R, LOW);
      delay(5);
      ledRing1Rval = ledRing1Rval -5;    }
  }
 if (switchRval == 0)           // Tells the arduino to light up the light below the tap to simulate the light pouring out of the tap.
 {digitalWrite(redTap,LOW);
 }
}
Advertisements

May 10, 2008

Digital Book Reader

Filed under: Final Project,Nadeem Haidary — nhaidary @ 6:05 pm
Tags:

This simulation of an electronic book reader promotes active reading by harnessing the computing and human power. It uses page-turning gestures to generate the power necessary to update an electronic paper screen. Using gestures provides cognitive, mechanical and digital feedback to the person using the device.

In these demonstrations, rotating the page generates power (as indicated by the LEDs) and displays a new page after a 180 degree rotation.

The second prototype provides an alternative method of turning pages.

And if anyone is interested:

Bibliofile – poster

Bibliofile – presentation

Arduino code:


/*
 *   Digital Book Reader
 *   Final Project
 *   Spring 2008
 *
 *   Nadeem Haidary
 */

//LIBRARIES

//GLOBAL VARIABLES
//pins
int motorPin = 0;                   // motor is connected to pin 0
int mDirectionPin = 1;              // motor is also connected to pin 1
int potPin = 2;                     // potentiometer is connected to pin 2
int rotatePin = 8;                  // the rotation reading switch is connected to pin 8
int LEDPin1 = 9;                    // LED is connected to pin 9
int LEDPin2 = 10;                   // LED is connected to pin 10
int LEDPin3 = 11;                   // LED is connected to pin 11

int potValue;                       // the value read from the potentiometer
int motorValue;                     // the value read from the motor
int tiltValue;                      // the value read from the tilt switch
int currentFlip;                    // the current tilt value
int previousFlip;                   // the state of the tilt switch
int motorDirection;                 // the direction of the motor read without a diode bridge

//---SETUP-------------------------------------------------------------->

void setup() {
  pinMode(motorPin, INPUT);         // Set the motor pin as an input
  pinMode(mDirectionPin, INPUT);    // Set the motor direction pin as an input
  pinMode(LEDPin1, OUTPUT);         // Set the LED pin as an output
  pinMode(LEDPin2, OUTPUT);         // Set the LED pin as an output
  pinMode(LEDPin3, OUTPUT);         // Set the LED pin as an output
  pinMode(rotatePin, INPUT);        // Set the rotate switch pin as an input

  previousFlip = HIGH;   // Read the original state of rotation

    Serial.begin(9600);             // Start serial communications
}

//---LOOP--------------------------------------------------------------->

void loop(){

  //READING THE MOTOR TO GENERATE POWER
  motorValue = analogRead(motorPin);      // Read the motor pin as an analog input
  //Serial.println(motorValue);           // Print motor value

  potValue = analogRead(potPin) / 6.71;   // Read the potentiometer pin and scale from 0-100
  //Serial.println(potValue);               // Print it

  motorDirection = analogRead(mDirectionPin);
  //Serial.println(motorDirection);

  if (motorDirection > 0) {
    if (motorDirection < 10) {                  // Three LED's turn on in sequence depending
      digitalWrite(LEDPin1, HIGH);           // on how much power is being delivered by the motor
      digitalWrite(LEDPin2, LOW);
      digitalWrite(LEDPin3, LOW);
    }
    else if (motorDirection < 50) {
      digitalWrite(LEDPin1, HIGH);
      digitalWrite(LEDPin2, HIGH);
      digitalWrite(LEDPin3, LOW);
    }
    else {
      digitalWrite(LEDPin1, HIGH);
      digitalWrite(LEDPin2, HIGH);
      digitalWrite(LEDPin3, HIGH);
    }
  }
  else {
    digitalWrite(LEDPin1, LOW);
    digitalWrite(LEDPin2, LOW);
    digitalWrite(LEDPin3, LOW);
  }

  flipper();

}

//---FUNCTIONS----------------------------------------------------------->

void flipper() {

  //USING A MOTOR AND SWITCH TO CHANGE PAGES
  currentFlip = digitalRead(rotatePin);   // Read the state of rotation
  //Serial.println(currentFlip);

  if (currentFlip != previousFlip) {
    if (currentFlip == HIGH) {
      if (potValue > 90) {
        Serial.print(2, BYTE);
      }
      else if (potValue <= 90 && potValue > 15) {
        Serial.print(3, BYTE);
      }
      else {
      //Serial.println("hello");
      Serial.print(1, BYTE);
      }
    }
  }

  previousFlip = currentFlip;
}

Processing code:

/*
* Digital Book Reader
* Final Project
* Spring 2008
*
* Nadeem Haidary
*/

//LIBRARIES
import processing.serial.*;

//GLOBAL VARIABLES
PFont title; // title font
PFont font; // text font
Serial port; // Create object from Serial class
int val; // Data received from the serial port
int x = 0; // stores nothing important right now
int page = 0; // page number
int spacer = 0; // tracks line number within loop
int lineStart = -46; // line that page starts at
int lineEnd = 0; // line that page ends at
int linesPerPage = 46; // the total amount of lines dispalyed up until a certain page
boolean saveImage = false; // for saving a frame

void setup() {
size (700, 800);
frameRate(10);

println(Serial.list()); // Set up the serial communication
port = new Serial(this, Serial.list()[1], 9600); // Open the port that the board is connected to (in this case COM4 = [1])
// and use the same speed (9600 bps)

font = loadFont(“BookAntiqua-10.vlw”);
title = loadFont(“BookAntiqua-BoldItalic-48.vlw”);
String lines[] = loadStrings(“ulysses_text only.txt”); // Loads the book from a text file and seperates each line into a String in an array
println(“there are ” + lines.length + ” lines”); // prints the number of lines
}

void draw() {
background (250); // sets the background color
fill (0); // sets the text color
smooth(); // anti-aliasing
String lines[] = loadStrings(“ulysses_text only.txt”); // for some reason, the only way I can get this to work is by reloading the strings every frame

if (0 < port.available()) { // If data is available, val = port.read(); // read it and store it in val } println(val); if (val == 1) { delay(40); page ++; lineStart += linesPerPage; lineEnd += linesPerPage; } if (val == 2) { delay(40); page = page + 50; lineStart += (linesPerPage * 50); lineEnd += (linesPerPage * 50); } if (val == 3) { delay(40); page = page + 10; lineStart += (linesPerPage * 10); lineEnd += (linesPerPage * 10); } if (val == 1 || val == 2 || val == 3) { val = 0; } /* // NAVIGATION if (keyPressed == true){ if (key == '.') { // press the > key to advance a page
delay(40);
page ++;
lineStart += linesPerPage;
lineEnd += linesPerPage;
}
if (key == ‘,’ && page > 0) { // press the < key to go back a page delay(40); page--; lineStart -= linesPerPage; lineEnd -= linesPerPage; } if (key == 's') { // press the s key to save a frame saveImage = true; } //println(lineStart + " " + lineEnd); } */ if (page == 0) { // display title page textFont(title, 48); // sets the type to be used text("Ulysses", 250, 522); textFont(title, 18); text("James Joyce", 255, 480); } else { // display text pages textFont(font, 10); spacer = 0; for (int i=lineStart; i < lineEnd; i++) { // display all the lines for this page text(lines[i], 20, 30 + (spacer*12)); // starting corner and spaces between lines spacer++; // count the lines } textFont(title, 24); text(page, 400, 20); // display page number } if (saveImage == true) { // save a frame save("page.tif"); } } [/sourcecode]

May 9, 2008

Interactive Hovercraft

Filed under: Will Not Count Towards Your Grade — lingshui @ 9:33 pm

This hovercraft project is a hovercraft made of balsa wood and garbage bags, powered by a single computer fan. The hovercraft works by building up air pressure underneath the frame and then forcing the air out from the sides, thus creating a cushion of air for the hovercraft to sit on. This hovercraft is also interactive in that it activates the hover ability when it senses human presence (through the use of an ultrasonic rangefinder). Additionally, since the hovercraft is meant to be eventually developed into a hovering interactive pet of some kind, I have integrated the beginnings of a “personality” for the pet in that the hovercraft gets “mad” and lets out an annoying noise when it is bumped too hard against any surface laterally.

Pictures:

#1

#2

#3

Schematic:

Here

Code:

int RF = 5; //set rangefinder to analog 5
int bumpSwitch = 2; //switch for “bump” reaction to digital 2
int trans = 6; //transistor for fan activation to digital 6
int buzzer = 8; //buzzer for “bump” reaction to digital 8
const int sWait = 0; //setting state machine ints
const int sHover = 1;
int currentState = sWait;
int nextState = sHover;
int timeDelay = 0; //set amount for idle turnoff of fan
int led1 = 3; //set output status lights on hovercraft
int led2 = 4;
int ledCount = 0;

void setup()
{
pinMode (RF, INPUT); //setting inputs and outputs
pinMode (bumpSwitch, INPUT);
pinMode (trans, OUTPUT);
pinMode (buzzer, OUTPUT);
pinMode (led1, OUTPUT);
pinMode (led2, OUTPUT);
Serial.begin (9600);
currentState = sWait;
}

void loop()
{
switch (currentState) //state machine for hovercraft states
{
case sWait: //state “waiting for interaction”
digitalWrite (trans, LOW);
timeDelay = 0;
digitalWrite (led1, LOW);
digitalWrite (led2, LOW);
Serial.println (“Wait”);
if (analogRead(RF) <= 15) //if rangefinder detects human proximity... { currentState = sHover; //turn hover on } break; case sHover: //state "hovering" digitalWrite (trans, HIGH); //turn on fan digitalRead (bumpSwitch); if (ledCount < 25) //begin script for led flash pattern to cut out delay lag { digitalWrite (led1, HIGH); digitalWrite (led2, LOW); } if (ledCount == 25) { digitalWrite (led1, LOW); digitalWrite (led2, HIGH); } if (ledCount == 50) { ledCount = 0; } //end script for led flash pattern Serial.println ("Hover"); if (digitalRead(bumpSwitch) == HIGH) //if the hovercraft is bumped... { digitalWrite (buzzer, HIGH); //initiate buzzer and angry led pattern digitalWrite (led1, HIGH); digitalWrite (led2, HIGH); delay(100); digitalWrite (led1, LOW); digitalWrite (led2, LOW); delay(100); digitalWrite (led1, HIGH); digitalWrite (led2, HIGH); delay(100); digitalWrite (led1, LOW); digitalWrite (led2, LOW); delay(100); digitalWrite (led1, HIGH); digitalWrite (led2, HIGH); delay(100); digitalWrite (led1, LOW); digitalWrite (led2, LOW); delay(100); digitalWrite (led1, HIGH); digitalWrite (led2, HIGH); delay(100); digitalWrite (led1, LOW); digitalWrite (led2, LOW); delay(100); digitalWrite (led1, HIGH); digitalWrite (led2, HIGH); delay(100); digitalWrite (led1, LOW); digitalWrite (led2, LOW); delay(100); digitalWrite (led1, HIGH); digitalWrite (led2, HIGH); delay(100); digitalWrite (led1, LOW); digitalWrite (led2, LOW); delay(100); digitalWrite (led1, HIGH); digitalWrite (led2, HIGH); delay(100); digitalWrite (led1, LOW); digitalWrite (led2, LOW); delay(100); digitalWrite (led1, HIGH); digitalWrite (led2, HIGH); delay(100); digitalWrite (led1, LOW); digitalWrite (led2, LOW); delay(100); digitalWrite (led1, HIGH); digitalWrite (led2, HIGH); delay(100); digitalWrite (led1, LOW); digitalWrite (led2, LOW); delay(100); digitalWrite (led1, HIGH); digitalWrite (led2, HIGH); delay(100); digitalWrite (led1, LOW); digitalWrite (led2, LOW); delay(100); digitalWrite (buzzer, LOW); } timeDelay ++; //increment idle count ledCount ++; //increment led flash pattern count delay (10); if (timeDelay == 1700) //if idle count reaches 17 seconds... { currentState = sWait; //go back to waiting for interaction state } break; default: //default state, error, go back to waiting state Serial.println ("default state, ERROR"); currentState = sWait; break; } } [/sourcecode] The code for the hovercraft is a simple state machine with two states: waiting and hover. Hover state includes all script for flashing LEDs and "angry response" behavior. There was a problem with flashing the LEDs during the hover state while still reading the "bump switch" (because of delay command in led flash script it would stop reading bump switch during the delay). Thus I created a simple counting increment script for the bumpswitch which is outlined in the comments inside the "hover" state.

May 6, 2008

PIR trouble

Filed under: Cat Adams,Will Not Count Towards Your Grade — catadams @ 6:42 pm

I have been trying for a long time now to get the PIR sensor from Spark fun (found here) to work, but to no avail. Does anyone have experience with this sensor, or a similar one, and knows a sure-fire way of getting it to work? I’m trying to do a simple digital read and the numbers keep coming out all wonky.

May 5, 2008

Boomboxes: Update

Filed under: Final Project,Jesse Chorng,Paul Castellana — Jesse @ 4:36 am

Paul and I have been working around the clock to get our project ready for both Meeting of the Minds and MTI’s final show. For everyone who has been asking about the project, we wanted to post an update to show the class our progress. Here are some pictures of the construction process thats lasted the past few weeks.

More pics can be found on the project’s website here. The site itself is a work in progress- none of the buttons on the left actually work. But check out the blog. And although there are no pics of it, we’ve been working hard on the electronics side of it all as well. If you’re interested stay tuned to the Boomboxes blog/site as we’ll be posting up tutorials, diagrams, schematics, and pics throughout this week. Besides the XBee Radios, everything else is wired up and ready for the final show.

May 1, 2008

Course Review

Filed under: Assignments,Final Writing Assignment,Thomas Hendrickson — tphendrickson @ 10:53 pm

Mostly everything in the course was incredibly new to me and constantly challenged me. At times it could be very frustrating, mostly the hardware aspects, but also a design process that was different than what I have been taught. Still, I took a lot from this course and felt a lot of satisfaction from what I was able to produce.

My main criticisms of how the course was taught were what I expressed in class today. The Lady Ada tutorials in the beginning of class were extremely helpful. Once things progressed from there, I found it very hard to follow other tutorials and trying to remember class examples concerning hardware. I think if there were proven, helpful sources that were readily available when homework was assigned. This could have saved me countless hours of searching for concrete examples and help.

Other than that, I felt like it was a very enjoyable course, and hope that I can apply what I learned in the future. Hopefully there will be opportunities to employ creative design in construction management.

How I think this might be useful in my future work?

Filed under: Assignments,Final Writing Assignment — tyang1 @ 5:04 pm

As a product designer/mechanical engineer, this class is extremely useful.   I am no longer limited in my designs to just mechanical.  Now I am capable of integrating electrical components in my designs where I see appropriate.  Before this class, anything with electronic component especially one with a microprocessor made it seem like a difficult project that I could not do.  I’ve learned that it just made things look a lot more complicated than it actually is.  Now when I see a product with electronics, I have a basis to judge how simple or complicated it was to build.  I also did not realize how small some of the sensors really are and learned the many different types of sensors out there, which was very interesting and helpful.  Now when I design a product, I know the types of sensors out there and can make recommendations on which ones to use.  Before, I would just say I want a sensor that does this and this….is there one?  In other words, Making Things Interactive taught me the foundation of electronics in which now I have the capability to build upon when I need to.  This showed me how I can integrate electronics into products to increase interactivity.  And since embedded technology is the future, it is most likely as a product designer that it would give me an edge over others who do not have this knowledge.  Also, when I work with electrical engineers I will understand their lingo and their problems. 

Things to do after the semester is over

Filed under: Course Materials,References — jet @ 2:59 pm

The ITP Student Show is May 12, 13 in New York.

Get one of Tom Igoe’s books (Physical Computing, Making Things Talk) and work through some of the projects.

Class Review

Filed under: Final Writing Assignment,Joshua Smith — jssmith44 @ 12:48 pm

 This is hands down one of my top two favorite course taken in college (the other, another course taught by Mark).  I dream of working in an industry where I can apply the skills I have gained in this course, and I look forward to applying interactive techniques in every project I do going forward.

That said, I have a few suggestions for how I might tweak the course for upcoming semesters. First off, I would consider assigning more specific projects at the beginning of the semester, and then working up to more open ended at projects at the end. I believe sometimes students get lost in the creative aspect of the early projects, and don’t necessarily grasp the specific technical processes that are supposed to be emphasized each week. This ensures that by the time the creative projects come around, all skills are in place.

Additionally, I would spend a number of classes demonstrating how to implement some advanced tasks, without going into to much detail on how and why they work. Such advanced topics include wireless communication, serial communication, graphically displaying data, camera recognition, etc. The reason for this is that these skills all have the power to greatly increase the scope of a students project, yet are not all that difficult to implement in different ways, once a student is shown how. 

Beyond that, I think the structure of the course is extremely conducive to the students’ success and I believe this will be demonstrated at our final show. Thank you Mark and Jet for a great semester!

Class Review

Filed under: Assignments,Final Writing Assignment,Jesse Chorng — Jesse @ 12:47 pm

Coming into the class, I definitely didn’t know what to expect. As a third year Tepper/H&SS student, I have only taken a small number of classes that didn’t compose of 200 students, numerous teaching assistants, and weekly recitations. The closeness of this particular group was refreshing and it was great getting to know everyone and their interests. It’s been especially helpful to have students actually remember my project and give feedback as well. Besides the skills and general knowledge I gained, I think that the group aspect of the course was the most meaningful.

Making Things Interactive was the first time that I experienced a course full of students from different backgrounds ready to help one another. That combined with the expertise of both Mark and Jet created an environment that I think has great potential to produce interesting and innovative work. If I could make a suggestion, it’d be that there were more small group projects or workshops. Even with Mark and Jet taking time outside of class, promoting students to help one another even more would have a lot of benefits. Many of us had very rudimentary questions that I think sometimes may actually be better solved by another student who was on a similar level and communicated in a shared vocabulary. The one or two times that I was able to speak face-to-face with another student about my project in class really gave me fresh perspectives about how to solve some issues or improve the project overall.

That being said, missing the final demo is one of my biggest regrets this semester. I wanted to take this opportunity to apologize to everyone for missing out.  I should’ve known better and understood that, like us, everyone spent countless hours working on their final projects. I, and I think I can speak for Paul too, greatly appreciate everyone who’s asked us about The Boomboxes anyway and continue to help us solve things out. It took missing that demo to really understand how great it is to be a part of a group like this. 

In the end, I think that for me the class experience outweighed the content. Obviously interactive technology will become ubiquitous if it hasn’t already in a matter of years, so working with the actual tools will only help all of us in our career paths. But again, I basically expected as much when I chose to take the course. What I didn’t expect and what I would like to pass on to other students outside of CFA is that MTI has a unique make up of technical knowledge, logic, artistic expression, etc to really challenge students to think outside the box and work collaboratively.

 

« Previous PageNext Page »

Create a free website or blog at WordPress.com.