Final Blog(Marcela)

Echo Chi

Partner: Crystal Li

First, as my final project is so different from my original idea described in the final project essay before I started to make this project, so I am going to state the new project’s purpose at the very beginning.

A. Project Title

We named our project as “incredible chair” because it is really an amazing chair which can make sounds and everyone can draw something with it.

B. Inspirations

When my partner and I were brainstorming about the final project, we browsed many interactive arts and projects on the website for inspiration and a video about a colorful swing caught our eyes. This kind of colorful swings can change the color of lights when the players are swinging from high to low. Then my partner and I thought only the color changes was not enough because not only it would be bored for the users but also didn’t meet the project requirements(a little utilitarian but that’s the truth). So we decided to add some different kinds of music to this. Also, we thought it was a  little impossible to build a swing in the ima lab so we decided to use more convenient equipment—chairs in the ima lab to achieve this effect.

C. Context and Significance

As I mentioned in my former final project essay and preparatory research and analysis, I talked about the definition of interaction. It does not have a large difference from the midterm definition but I wrote that I thought there should be more methods of interaction. For example, forms of the incomes and outcomes can be more various. And we built more methods to interact with our final project. The player needs to use their whole body to rotate the chair in order to make some incomes and make this chair work. This project requires players more body interactions with the project itself and the users have to rotate their bodies and raise up and put down their arms without any other choices and alternatives. Also, the outcomes of this project has is a combination of voice and sight. Through the users’ rotation of their bodies and the potentiometers on the platform of this chair, users can see different sounds and images based on what they do. The project has achieved my definition of interaction. The forms of incomes and outcomes are more various and the incomes require users to use their whole bodies.

This is a picture which can illustrate my definition of interaction, especially this project. The person in the left of the picture is the user and the right one is the instrument. The user is moving her body and the instrument gives her feedback according to her movements.

D. Audience

Our project is aimed at the people who have interests in music but can’t or don’t want to buy an original instrument, especially the children and students. This project maybe can be put into some arts room such as the piano rooms. When someone wants to have personalized music for fun, he or she can go to sit on this chair and play and draw what they want. And also it can be put into some children’s rooms as their entertainment. Also, it can be used as a teaching tool, let a child sit on it and by rotating his or her body, he or she can learn the sound of the certain note.

E. Conception and design

First I am going to divide this project into four parts, the first one is the gears under the chair seat which need the users to sit on the chair and rotate themselves’ bodies and then the chair will take the gears to rotate and the potentiometer will be rotated so  that the pitch of the sounds can be changed. This is one of my design decision as I mentioned above, this design can make the user has no choice but sit on the chair and rotate themselves to change the pitches. The gears under the seat are made through laser cut. It took a long time for me to draw gears on Adobe Illustrator. At the preparation, we thought about many possibilities to connect the potentiometer with the chair’s rotation. The rotation of the potentiometer should be sustainable. After we asked the professors’ advice, based on our common sense that the gears used as machines units are sustainable and have been used for a long history, we decided to use the gears. We cut two same-size gears then stuck one to the brace of the chair and we cut a little hole on the other one then fixed the potentiometer into this small hole. Then we made a little platform to make sure these two gears stayed on the same level so that they could work.

If someone is going to doubt that the user may just stand near the chair and rotate the chair by hand, the platform attached to the chair handle will eliminate this doubt.

The handles are the second part of this project. There is a distance sensor on one of the handle and if the users want to add some drum beats into the sounds made out by the rotation, they can raise up and put down their arms to achieve it. This brings more body interaction. The coding of the distance sensor, at the very beginning, was going to be made like, if the distance from the arm to the sensor was farther, the voice would be smaller. However, we realized that the sounds the sensor need to make out were drum beats, so we don’t need it to exist all time so we changed our coding into if the distance achieved a certain number, the voice would come out.

Then the last part is the platform attached to the handles as I mentioned above. The platform makes sure that the user must sit on the chair and make the rotation because if the user doesn’t sit on the chair, he or she can not control the rotation and the drum and the potentiometers. The potentiometers are on the platforms. The middle three are designed for changing colors the user can draw on the computer screen or any walls with a projector. The other two are controlling the painting tracks. This is the variety of interaction outcomes.

F. Fabrication and production

The most significant steps in my process must be the production of the gears. The rotation is the most significant part of our project. First, I took a long time to draw the draft on the Adobe Illustrator.

And then how to fix the gear under the seat remained a tough problem. We must cut one gear into half and used the rubber gun to fix them on the brace of the chair and make these two pieces into one piece. Then how to make the gear attached to the potentiometer stay on the same level of the gear attached to the brace. We used strongly hard wires to connect the potentiometer with the Arduino but it didn’t work that well. So we used some cupboards to make a little platform specialized for this gear to make it fix on the same level.

Then during the user test, I received some suggestions about the music we picked from the library. It was not that attractive and we had also realized this. But we tried a lot to use a music file from the website and asked the professors, we failed and were told it could not achieve. This is a large shortage of our project. The lack of variety makes the project cannot make various music as original instruments do.

Also, we received some advice about the handles. Someone suggest me making them more sustainable and beautiful. Then in that weekends, I decided to make a hard supporting board on the same level as the seat and then built the handles based on this board. And eventually, it worked. Then I used some black papers to decorate the handles to make them look better.

G. Conclusions

The goal of my project is to make an instrument which the beginners who are interested in music but don’t or can’t buy original instruments and especially the children and the students can use it. With it, children can be taught the voice of note by adopting themselves into this kind of sounds.

The connection of project and interaction has been mentioned and stated above. Also, how the users interact with the project has also been stated above. This project requires players more body interactions with the project itself and the users have to rotate their bodies and raise up and put down their arms without any other choices and alternatives. Also, the outcomes of this project has is a combination of voice and sight. Through the users’ rotation of their bodies and the potentiometers on the platform of this chair, users can see different sounds and images based on what they do. The project has achieved my definition of interaction. The forms of incomes and outcomes are more various and the incomes require users to use their whole bodies.

And the aspects need to be improved are so many. The first one and the most important one the sounds coming from during the rotation. The variety of sounds is lacking and if we have more time, we must add some buttons which can be stepped by the users’ feet. If the user pushed the button, the sounds will be changed so that the sounds can be various and users can make more personalized music.

The other one is a suggestion raised after the presentation, maybe we can also use the rotation of the chair to control the processing.

Also, the gear can be more sustainable and the wireless connection of Bluetooth should be tested for more times.

The values I learned from the process of the production and the whole class is a new definition of interaction and the combination of the voices and sights. After the production, I have learned that a good project should also make it clear for users to figure out what they should do without any instructions and has meaningful value to the user. The interaction should be used the users’ whole bodies and make the users adopt themselves to the whole project and the feedbacks(outcomes) from the project should be attractive enough to keep the users giving incomes.

Then I am going to state the significance of our project. First, it is personalized and characteristic. The sounds and images coming from the chair can be changed by the actions of users. Everyone can create their own sounds with it and it is so easy for everyone to have a good command of it. If a person who is interested in music but are not in good command of the original instrument. This chair is a good project for him or her. Only by sitting in it and rotating yourself, raising up or putting down your arms, can everyone make excellent sounds. Since many instruments are not convenient to carry to everywhere, but this chair, with wheels, is convenient to move one place to another. Also, original instruments are at the high price and not everyone can afford them. But this chair’s cost will never be that much. In addition, though there are many apps emerging nowadays, users can experience the process of playing music with this chair. The music will change by your movement. That should be so cool.

Arduino part1:

void setup() {

  Serial.begin(9600);

}

void loop() {

  int sensor1 = analogRead(A0);

  int sensor2 = analogRead(A1);

  int sensor3 = analogRead(A2);

  int sensor4 = analogRead(A3);

    int sensor5 = analogRead(A4);

  //int sensor3 = analogRead(A2);

  // keep this format

  Serial.println(sensor1);

Serial.print(sensor1);

Serial.print(“,”);  // put comma between sensor values

  Serial.print(sensor2);

Serial.print(“,”);

  Serial.print(sensor3);

  Serial.print(“,”);

  Serial.print(sensor4);

  Serial.print(“,”);

  Serial.print(sensor5);

  //Serial.print(“,”);

//  // Serial.print(“,”);

//  //Serial.print(sensor3);

Serial.println(); // add linefeed after sending the last sensor value

  // too fast communication might cause some latency in Processing

  // this delay resolves the issue.

  delay(0);

}

part 2:

int   prevSensor3 = 0;

void setup() {

  Serial.begin(9600);

}

void loop() {

  int sensor1 = analogRead(A0);

  int sensor2 = analogRead(A1);

  int sensor3 = analogRead(A2);

  // keep this format

  Serial.print(sensor1);

  Serial.print(“,”);  // put comma between sensor values

  Serial.print(sensor2);

  Serial.print(“,”);

  //  Serial.print(sensor3);

  //  Serial.println(); // add linefeed after sending the last sensor value

  //

  if (sensor3 > 270) {

    if (prevSensor3 == 0) {

      Serial.println(1);

      prevSensor3 = 1;

    } else {

      Serial.println(0);

    }

  } else {

    Serial.println(0);

    prevSensor3 = 0;

  }

  // too fast communication might cause some latency in Processing

  // this delay resolves the issue.

  delay(0);

}

Processing part1:

// IMA NYU Shanghai

// Interaction Lab

// For receiving multiple values from Arduino to Processing

/*

* Based on the readStringUntil() example by Tom Igoe

* https://processing.org/reference/libraries/serial/Serial_readStringUntil_.html

*/

import processing.serial.*;

String myString = null;

Serial myPort;

int NUM_OF_VALUES =5;   /** YOU MUST CHANGE THIS ACCORDING TO YOUR PROJECT **/

int[] sensorValues;      /** this array stores values from Arduino **/

void setup() {

  size(1400, 900);

  background(255);

  setupSerial();

  

// minim = new Minim(this);

  

  // use the getLineOut method of the Minim object to get an AudioOutput object

  //out = minim.getLineOut();

  

  // create a sine wave Oscil, set to 440 Hz, at 0.5 amplitude

  //wave = new Oscil( 440, 0.5f, Waves.SINE );

  // patch the Oscil to the output

  //ave.patch( out );

}

void draw() {

  updateSerial();

  //background(0);

  

  // draw the waveform of the output

  noStroke();

  fill(map(sensorValues[1],0,1023,0,255),map(sensorValues[2],0,1023,0,255),map(sensorValues[3],0,1023,0,255));

ellipse(map(sensorValues[0],0,1023,0,width),map(sensorValues[4],0,1023,0,height),50,50);

  //if (keyPressed)

//{

// switch( key )

  //{

   // case ‘1’:

     // wave.setWaveform( Waves.SINE );

      //break;

     

    //case ‘2’:

      //wave.setWaveform( Waves.TRIANGLE );

      //break;

     

   

     

    //default: break;

  //}

//}

  // draw the waveform we are using in the oscillator

  //stroke( 128, 0, 0 );

// strokeWeight(4);

  //for( int i = 0; i < width-1; ++i )

  //{

   // point( i, height/2 – (height*0.49) * wave.getWaveform().value( (float)i / width ) );

  printArray(sensorValues);

  // use the values like this!

  // sensorValues[0]

  //background(map(sensorValues[0],0,1023,0,255),map(sensorValues[1],0,1023,0,255),255);

  

  // add your code

  //

}

void setupSerial() {

  printArray(Serial.list());

  myPort = new Serial(this, Serial.list()[ 3], 9600);

  // WARNING!

  // You will definitely get an error here.

  // Change the PORT_INDEX to 0 and try running it again.

  // And then, check the list of the ports,

  // find the port “/dev/cu.usbmodem—-” or “/dev/tty.usbmodem—-“

  // and replace PORT_INDEX above with the index number of the port.

  myPort.clear();

  // Throw out the first reading,

  // in case we started reading in the middle of a string from the sender.

  myString = myPort.readStringUntil( 10 );  // 10 = ‘n’  Linefeed in ASCII

  myString = null;

  sensorValues = new int[5];

}

void updateSerial() {

  while (myPort.available() > 0) {

    myString = myPort.readStringUntil( 10 ); // 10 = ‘n’  Linefeed in ASCII

    if (myString != null) {

      String[] serialInArray = split(trim(myString), “,”);

      if (serialInArray.length == NUM_OF_VALUES) {

        for (int i=0; i<serialInArray.length; i++) {

          sensorValues[i] = int(serialInArray[i]);

        }

      }

    }

  }

}

part2:

// IMA NYU Shanghai

// Interaction Lab

// For receiving multiple values from Arduino to Processing

/*

* Based on the readStringUntil() example by Tom Igoe

* https://processing.org/reference/libraries/serial/Serial_readStringUntil_.html

*/

import processing.serial.*;

String myString = null;

Serial myPort;

int NUM_OF_VALUES = 3;   /** YOU MUST CHANGE THIS ACCORDING TO YOUR PROJECT **/

int sensorValues[];/** this array stores values from Arduino **/

//String sensorValues[];

import ddf.minim.*;

import ddf.minim.ugens.*;

Minim       minim1;

AudioOutput out;

Oscil       wave;

import ddf.minim.*;

Minim minim;

AudioSample kick;

AudioSample snare;

void setup() {

  size(500, 600);

  background(255);

  minim1 = new Minim(this);

  // use the getLineOut method of the Minim object to get an AudioOutput object

  out = minim1.getLineOut();

  // create a sine wave Oscil, set to 440 Hz, at 0.5 amplitude

  //wave = new Oscil( 440, 0.5f, Waves.SINE );

  // patch the Oscil to the output

  //wave.patch( out );

  setupSerial();

  minim = new Minim(this);

  // load BD.wav from the data folder

  kick = minim.loadSample( “BD.mp3”, // filename

    512      // buffer size

    );

  if ( kick == null ) println(“Didn’t get kick!”);

  // load SD.wav from the data folder

  snare = minim.loadSample(“SD.wav”, 512);

  if ( snare == null ) println(“Didn’t get snare!”);

}

void draw() {

  updateSerial();

  printArray(sensorValues);

  //for (int i = 0; i < out.bufferSize() – 1; i++)

  //{

  //  //line( i, 50  – out.left.get(i)*50,  i+1, 50  – out.left.get(i+1)*50 );

  //  //line( i, 150 – out.right.get(i)*50, i+1, 150 – out.right.get(i+1)*50 );

  //}

  // draw the waveform we are using in the oscillator

  //stroke( 128, 0, 0 );

  //strokeWeight(4);

  //for ( int i = 0; i < width-1; ++i )

  //{

  //}

  // use the values like this!

  // sensorValues[0]

  //background(map(sensorValues[0],0,1023,0,255),map(sensorValues[1],0,1023,0,255),255);

  //float amp = map( sensorValues[0], 0, 1023, 1, 0 );

  //wave.setAmplitude( amp );

  //float freq = map( sensorValues[1], 0, 1023, 110, 880 );

  //wave.setFrequency( freq );

  //  //   for (int i = 0; i < kick.bufferSize() – 1; i++)  {

  //  //}

  if (sensorValues[2]==1) {

   

   snare.trigger();

  } else {

  }

}

void keyPressed() {

  // We use a boolean helper variable to determine whether one of the branches

  // of the switch-statement was activated or not

  switch( key )

  {

  case ‘1’:

    wave.setWaveform( Waves.SINE );

    break;

  case ‘2’:

    wave.setWaveform( Waves.TRIANGLE );

    break;

  default:

    break;

  }

}

// add your code

//

void setupSerial() {

  printArray(Serial.list());

  myPort = new Serial(this, Serial.list()[ 3], 9600);

  // WARNING!

  // You will definitely get an error here.

  // Change the PORT_INDEX to 0 and try running it again.

  // And then, check the list of the ports,

  // find the port “/dev/cu.usbmodem—-” or “/dev/tty.usbmodem—-“

  // and replace PORT_INDEX above with the index number of the port.

  myPort.clear();

  // Throw out the first reading,

  // in case we started reading in the middle of a string from the sender.

  myString = myPort.readStringUntil( 10 );  // 10 = ‘n’  Linefeed in ASCII

  myString = null;

  sensorValues = new int[NUM_OF_VALUES];

}

void updateSerial() {

  while (myPort.available() > 0) {

    myString = myPort.readStringUntil( 10 ); // 10 = ‘n’  Linefeed in ASCII

    if (myString != null) {

      String[] serialInArray = split(trim(myString), “,”);

      if (serialInArray.length == NUM_OF_VALUES) {

        for (int i=0; i<serialInArray.length; i++) {

          sensorValues[i] = int(serialInArray[i]);

        }

      }

    }

  }

}

Recitation 10: Making a Media Controller( Marcela)

Echo Chi

Marcela

I built a media controller which one person should move the mouse from one side of the screen to the other side and the other person must rotate two potentiometers, can the media on the screen changed. It will be changed into different kinds of light exposure by moving and rotation.

In the reading, Computer Vision for Artists and Designers: Pedagogic Tools and Techniques for Novice Programmers, the authors stated that “physical conditions can be modified to be more easily legible to vision algorithms”. These interactive projects not only use the “vision algorithms” but also use our understanding of interaction. With our own design, we create a new form of the media and images and voices based on the strong capture capacity of the computer.

These interactive projects are all the combination of computer and our ideas.

Recitation 4: Drawing Machines( Marcela)

Echo Chi

Marcela

Interaction lab

I am so sorry that I found I didn’t post this week’s documentation.

  • 1 * 42STH33-0404AC stepper motor
  • 1 * SN754410NE ic chip
  • 1 * power jack
  • 1 * 12 VDC power supply
  • 1 * Arduino kit and its contents
  • 2 * Laser-cut short arms
  • 2 * Laser-cut long arms
  • 1* Laser-cut motor holder
  • 2 * 3D printed motor coupling
  • 5 * Paper Fasteners
  • 1 * Pen that fits the laser-cut mechanisms
  • Paper

First, my partner and I built the circuit with wires and potentiometers. The first step was aimed at building two circuits which the potentiometer should control the motor.

It is not an easy circuit for us to build so we follow the instructions.

 

Then we put a 3D printing motor coupling on each motor. Then used fasteners to fix two short arms and long arms on to each motor and made the two motors connected. We met some troubles when we were trying to fix the motors into the laser-cut motor holder. We first tried to fix the motors into the extreme left and the extreme right but when we tried this, the drawing machine couldn’t work well. So we changed the positions of two motors. Then we fix a pen into the hole of the short arms.

Next we adjusted the pen’s position to make it draw well on a paper. Then we rotated each potentiometer to make the motors work and then the long and short arms were rotated. The pen moved because of the short arms rotation. The movement of the pen brought an excellent painting on the paper.

The drawing machine was a little hard to control so the patterns were almost random. But the patterns we painted, at last, were so cool.

Question 1:

What kind of machines would you be interested in building? Add a reflection about the use of actuators, the digital manipulation of art, and the creative process to your blog post.

I love drawing machine most. After the recitation, I thought the drawing machine was a little hard to control, but if we practice more, it will be so interesting to control the painting pen by rotating the potentiometer. When I was using drawing machine, I can stop if I don’t want my motor to work, and then only by my partner’s motor rotation, it will paint an extremely different pattern in this way.

Question 2:

Choose an art installation mentioned in the reading ART + Science NOW, Stephen Wilson (Kinetics chapter). Post your thoughts about it and make a comparison with the work you did during this recitation. How do you think that the artist selected those specific actuators for his project?

This artist designed more complex arts and interactive projects. The drawing machine we built in the recitation was not so complicated but it could perfectly show the definition of interaction, as same as the artist’s designs.

week 9

First time I saw the finished project on the instruction website, I thought it was so hard but when I browsed the example coding, I tried to recall the coding I learnt in lectures. I just used the mouse pressed and mouse moving coding to connect processing with Arduino.

The second project was so amazing when I was moving the mouse and the colors were changing.

IMG_7474

IMG_7475

*The files are so large so they cannot be viewed in this window.*

Final Project Essay(Marcela)

Echo Chi

My idea of the final project is to build a smart alarm system which aims to alarm the user something is being moved. Its title is “where is my thing?”.

Since it is so common for me to lose or can’t find something and I am so worried that I spend a lot of time to look for them. Sometimes, these things are so important that I need to buy a new one. After asking and observing others, I found that almost everyone has been troubled in the same situation as me. So, when I was looking for my missing things, I always thought I can own a track system so that I can know where they are. Also, during my searching, the toughest problem is to memorize where it does disappear. So, when thinking about the final project, the first idea came into my mind is to build a smart system which can tell me when something is going farther and farther away from me, which means I drop it behind.

How to achieve this? My project may contain sensors. Users can set a distance and if the distance is larger than what the user’s setting, the result will be shown on the computer screen by processing. Also, it will connect to an alarm, if the distance is extending out of the standard, the alarm will make sounds. The farther distance the sensor senses something is far away from the sensor, the tone of the alarm will be higher. In addition, the computer screen will change colors or show the warning signals. In the coming weeks, I will spend almost all the time on coding but the next week, I am going to think about the progress and change to this system model because I know that the sensor cannot recognize a certain thing, so if something is in the front of the sensor, it may cause mistakes.

The preparatory research makes me think more about how to let the project tell me more, which means how to enlarge the outputs. So in this project, the sound and sights can both tell the users something. My research is talking about the project “Headlight”, which is a system let people change their surroundings to interactive dynamic images and sounds, which taught me I can turn the distance into the sound and sight. Also, my project, in my opinion, has achieved part of my definition of interaction since the images and sounds are changed by the people’s behavior and also these signals make people realize something and make something change. But the behavior people do to the project is so poor, and I am going to make some progress on it next week.

Preparatory Research And Analysis( Marcela)

Echo Chi

In this assignment you will create a blog post in preparation for your final project. You will bring this blog post to the recitation on November 9. During recitation, in groups, you will share your research and writing and gather feedback from your peers. Your blog post should include the following points:

A. Go back to your definition of interaction as you defined it during the group project. How has your work in this course involved that definition?

B. Based on the initial definition and your experience developing and executing your midterm project, how has your definition of interaction evolved? Be as specific as possible.

C. Research two other interactive projects, one that aligns with your definition of interaction and one that differs from it.

  • Discuss why the first project lines up with your definition and why the second one clashes with your definition of interaction. Be precise, as always.
  • In your research process, you are strongly encouraged to consider interactive projects and experiences drawn from and in a variety of sources, media, materials, formats, etc.

D. Write a “new” definition of interaction in your own words. Draw from your account above and try to evolve your definition beyond the current convention. It should be polished and professional: imagine it will be printed on IMA Interaction Lab’s next course syllabus!

  • This definition should reflect the evolution of your understanding of interaction through both the above research and analysis process as well and your semester engagement with course readings, discussions and work.
  • Your definition may not replicate something you have read. You are an original, you will arrive at this semester’s end with an understanding and practice of interaction of your own—not others’—making!
  • Again, as in every step, be specific, give details.

First, the following is my definition of interaction during the group project. In brief, interaction contains communication between person and person, also person and project. The interaction between objects and humans needs the object to “talk”, not only following the orders but also telling humans something.

In my midterm project, I built an interactive game with my partner which combines cooperation and competition. When the players cooperate to turn the buttons, a maze will rotate. The rotation of the buttons is the input, the rotation of the maze is the output. Also, different LEDs will turn on due to different reaction of speed of the players, which tell players different results of the competition. This is similar to telling humans something which is involved in my definition.

However, after building this project, my definition of interaction has evolved. First, interaction should be periodic, which not only means a person makes reaction and the project reacts to the behavior and then the person also reacts to the reaction made by the project and then in cycle, but also, the reaction should be effective to all the players, for example after two players play my object, another two players should also be able to play it. Secondly, the project should give the person more outputs than I thought in my initial definition. The outputs should be more complex, for example, the outputs can be shown as digital datas to the players and users, or the outputs can change rapidly due to different reactions and environments.

One of my favorite interactive project is “Headlight” which is “a system that allows humans to experience the perceptual world of nonhuman species through personal projection mapping”. So images the user can see will change according to different environments and projects in front of the user. It is different from only seeing some pictures after wearing this helmet, instead, the images the users can see are changing all the time and dynamic, which means when the user raise something in front of the helmet, the images will change according to the distance and the size. The video can be seen on this websitehttps://vimeo.com/263377583.

There is another interesting interactive project but I think it does not conform to my definition of interaction. The name of this project is “300000 km/s— visualising ping for interplanetary communication”. It highlights “the limit of the communication speed through a simplified visualisation of a permanent ping (round-trip) between the two planets”, which means the ping and a red ball on the ping rotates and moves according to the distance between the Earth and the Mars. I think there’s little interaction because the change of the ping cannot be controlled by users’ behavior and also the changes are simplex and similar. This project can be seen on this website: https://www.creativeapplications.net/objects/300000-km-s-visualising-ping-for-interplanetary-communication/.

Last but not least, I am going to give a new definition of interaction. First, interaction must contains communication, between person and person or person and project, the communication should be containing rallies and turns such as a person raise a behavior and the other person or project should react to this. Secondly, the reactions from both sides should not be interrupted unless one game is over or cutting down the power. Also, The reactions should be in cycle which doesn’t mean they can be the same as they used to be, instead, it should be different. The outputs and inputs should both be changing according to factors and what the other side reacts, which the factors can contain such as environments, temperature and so on. In brief, it should be complex and also, the inputs and outputs should be clear to be observed especially the outputs coming from the projects.

 

Works cited:

https://www.sonycsl.co.jp/tokyo/4759/

300000 km/s – Visualising ping for interplanetary communication

Mid-term interactive project (Marcela)

Echo Chi

1. PROJECT NAME:

Our interactive project is called “ 3C Game”, which means the combination of cooperation and competition. It is a project containing two games which one of them needs two players cooperate with each other to solve the maze and the other is a competing speed game.

2. PROJECT STATEMENT OF PURPOSE:

This project is designed for people who are alone and have little access to have contact with others in this current society. Our chief purpose is to shrink the distant and strangeness between people and help people build relationship and friendship with the strangers in the real life instead of on the Internet. The maze we designed as the first game requires one player to turn only one certain direction of the maze so their cooperation is not reacting in the same way as any animal can do any longer. We mean to design a more modern way to cooperate and compete. In the test of our projects, by playing it, it can and do become easier for players to get closer to each other because if they are going to make the ball fall out of the maze, they must tell the other player when and how to rotate the potentiometer and also, the second speed game is not so hard to play and can bring laughter to both the winner and loser.

3. LITERATURE AND ART, PERSPECTIVES AND CONTEXTS:

One of our inspiration is coming from “Ad of the Day: Coke Designs a Friendly Bottle That Can Only Be Opened by Another Bottle”, written by Kristina Monllos, published in May 28, 2014. Also, these coca cola’s designers who designed the friendly bottles and Chris Hoffman are the artists influencing our project most. The idea of “Friendly Bottle” made us decide to make people closer by designing a cooperative game. However, in my own opinion, people are hardly get closer through only one game so we decided to add a new game requiring player’s extreme attention and concentration, and also a little tenseness. Then we saw Chris Hoffman’s design of a LED speed game, which is absolutely a perfect form to hold a competition between persons.

We had lots of hesitations about our framework of our project. One of them is according to the drawing machine we have built in recitation lesson. We were influenced to plan to make our cooperative game similar drawing machine. In our imagination, we can use drawing machine to control one basket to catch a falling ball. However, we recalled the process of drawing by the drawing machine later, it is neither easy to control the direction nor attractive to the public to play it. Also, “How to make Arduino based Video game”, published by Mr Innovative, on March 2, 2018, made us set aside our idea because we both thought the competitive game playing on the screen is more modern and convenient but it also gave us suggestion to build our competitive game with another Arduino instead of having the competitive one in the same maze.

4. PROJECT DESCRIPTION:

Our project has 3 parts : a platform, a maze and a speed game. At the beginning, two player must both put their hands on the platform to let the box open to get the ball. Then the player can put the ball into the maze. The maze can be controlled by two potentiometers and each one can only make maze rotate in one direction. So they can play maze together. That’s how we make people cooperate with each other. When the ball successfully get out of the maze, it will fall onto two wires connecting to next game’s circuit through a paper funnel. Since this ball was made of wire we twisted, it is a conductor to connect between two games. And then the cooperation between players become competition. It is a speed game and there are 2 buttons. As soon as the ball fall down to the ground the yellow LED will flash and then it will turn on in a random time. If it is on for a second time, two players should press the button as soon as possible. The first one will win the game and his or her LED will turn on.

 

5. PROJECT SIGNIFICANCE:

First, we plan to put our project in some public spheres such as bus stops, underground stations, colleges and airports where many strangers gather. As mentioned above, we try to design this project to make people get closer to each other and with playing this, people can keep more contact with others in real life and pay their more attention to the real society, learn how to cooperate with each other by having different behavior instead of doing the same, how to compete with others with fun. We hope people can be more open-minded and gain sincere friendship through this game. At last, we planned to add prizes for winners and normal prizes for participators to attract more people to take part in.

6. PROJECT DESIGN & PRODUCTION:

First of all, our project’s framework has changed a lot from the very beginning to this current project. As I mentioned above, we planed to make the Arduino control a basket to catch the falling ball but for many reasons, we gave it up. Then we browsed a 3D model of maze on Tinkercad website by accident and with reading the idea of Coca Cola’s “Friendly Bottle” so we decided to change our cooperative game to rotate the maze. We then made a model of the maze on Tinkercad website, but the first one is too small for a ball to go through or for the player to see clearly. Then I changed the model and the printing size and the next one was successful. Then we met a tough problem that as we were both poor in coding, we didn’t know how to code the Arduino to let one potentiometer control one direction. So we turned to Professor. Marcela for help. So we must thank to Prof. Marcela and Mr. Ni. Next, we began to build the second game, which was much easier because we referred to Chris Hoffman’s coding and Arduino work. We changed some data of the coding such as the delay and the random time. Also, we soldered some big buttons connecting in the circuit so that it was more convenient for the players to press. The second game was comparatively well-off but the connection of the wires and the circuit was not firm all the time so we used tapes to stick these wires to the breadboard and finally the connection was fine. Then there came a tough problem that how to make the first game connect to the second one. In our imagine, only if the player pass the first game, they can access to the next one. So at first, we use a pipe to make the ball go through it and fall onto the start-button of the second game, but even we used the wires to roll into a mental ball, its weight was still too light to push the button. Then we asked prof. Marcela what we could do. She told us we can use the connection ink to make two wires link together. Then we tried to make a funnel by paper to let the mental ball fall onto a certain place with two separating wires of the second circuit at the bottom of the maze. When the mental ball is rotated out from the maze, it will go through the paper funnel and fall onto two separating wires so that the second circuit can work. Then we thought people should put their mobile phones on a platform so that the whole game could begin, which aimed that people should get away from their phones and pay more attention to the real life and feel the relationship in the society, but in the user testing session, we received a suggestion that not everyone go out with their phones, and it might be inconvenient for someone to take their phone out. Thus, we designed to let users put their hands on a platform to start the whole game. Then there existed another problem. How? The core of the first game is the ball, without the ball, the maze is nothing at all. So we tried to make a box to place the box as long as the two people put their hands on the platform, the box will open and the players can get the ball out. Servo was the first material turned into our mind and exactly it worked. But how to make a circuit that only when two buttons are pushed and the circuit works. It seemed very easy for me because series circuit uses the same principle. But it didn’t work. After I asked the professor, I knew that the circuits on Arduino are so different from the normal ones. So I gave up two buttons and changed to one button and then I code it by myself and finally it worked after my three-hour hard working.

7. CONCLUSIONS

Finally, the circuit works. The players put their hands on the platform and the box containing the ball open. Then they put the ball into the maze and rotate it by potentiometers. The ball falls down to the wires and successfully start the second game. Then the yellow light is on, the second game begins. After two players press the buttons, the outcome will be shown on the computer screen, which is the outcome of our project. It teaches us from the idea to the reality is a distant process, when brainstorming the idea, we should concern about how to build it to a real project. This project’s most attractive aspect in my opinion is the pink maze, which many classmates told me they had attracted by it. And the prizes can let people take more participation in the game.

Reference:

speed game: This sketch was written by Chris Hoffman,
* with help from Ben Peters.
* This work by Ardusat is licensed under a Creative Commons
* Attribution-NonCommercial-ShareAlike 4.0 International
* License based on a work at ardusat.com.
* Visit http://www.ardusat.com to learn about Ardusat.
* Visit http://www.arduino.cc to learn about the Arduino.

maze coding: written by Kevin Ni.

 

/******************************************************************
* Astronaut Pilot Training 2: Reflex Competition (V1)
*
* Use pushbuttons to play a game which compares the reflexes
* of both players.
*
* This sketch was written by Chris Hoffman,
* with help from Ben Peters.
* This work by Ardusat is licensed under a Creative Commons
* Attribution-NonCommercial-ShareAlike 4.0 International
* License based on a work at ardusat.com.
* Visit http://www.ardusat.com to learn about Ardusat.
* Visit http://www.arduino.cc to learn about the Arduino.
*
* Version 1.0 11/6/2015 Chris ‘CHoffman’ Hoffman
/*****************************************************************/

const int switchPin1 = 10; //Player 1 button
const int switchPin2 = 8; //Player 2 button
int switchStart = 12; //Start button
int ledPin = 11 ; //Game start LED
int ledPinP1 = 9 ; //Player 1 win indicator
int ledPinP2 = 7 ; //Player 2 win indicator
int buttonStateP1 = 0; //Player 1 button tracking
int buttonStateP2 = 0; //Player 2 button tracking
int lastButtonStateP1 = 0; // Player 1 last button state (used to detect a button press)
int lastButtonStateP2 = 0; // Player 2 last button state (used to detect a button press)
int scoreP1 = 0; // Player 1 score tracking
int scoreP2 = 0; // Player 2 score tracking

boolean bothDone = false; // Used to see if both players have pressed their buttons
boolean gameOn = false; // Keep track if the game is going on or not
boolean startButtonState = LOW; // Start button initalization
boolean p1Done = false; // Keep track of Player 1’s button press
boolean p2Done = false; // Keep track of Player 1’s button press
boolean welcomeMsg = false; // Keep track if the welcome message has already been displayed

long randomTime; // Hold the random time between the start of the game and the indicator light coming back on
long startTime; // When did the game start
long endTimeP1; // When did Player 1 press their button
long endTimeP2; // When did Player 2 press their button

float finalTimeP1; // Time elapsed between start of the game and Player 1 pressing their button
float finalTimeP2; // Time elapsed between start of the game and Player 2 pressing their button
float winningTime; // Time between the winning and losing player’s time

void setup()
{
pinMode(switchPin1, INPUT);
pinMode(switchPin2, INPUT);
pinMode(ledPin, OUTPUT); // Game start LED
pinMode(ledPinP1, OUTPUT); // Player 1 win LED
pinMode(ledPinP2, OUTPUT); // Player 1 win LED
Serial.begin(9600);
}

void loop(){
// Print a welcome message, the current player’s score, and set that the welcome message has been displayed
if (welcomeMsg == false){
Serial.println(” “);
Serial.println(“Press the start button to begin”);
Serial.println(“Scoreboard:”);
Serial.print(“Player 1 – “);
Serial.println(scoreP1);
Serial.print(“Player 2 – “);
Serial.println(scoreP2);
welcomeMsg = true;
}
startButtonState = digitalRead(switchStart); // Listen for the start button to be pressed

// if the start button has been pressed and there is no game already running, begin the game
if (startButtonState == HIGH && gameOn == false){
Random();
}
}

// Generate a random ammount of time to delay between the begining of the game intil the LED comes back on
void Random(){
Serial.println(” “);
Serial.println(“Get ready!”);
randomTime = random(4,10);
randomTime = randomTime*1000;
digitalWrite(ledPin, HIGH); // Turn the game LED on and off to indicate a game is about to start
delay(1000);
digitalWrite(ledPin, LOW);
delay(randomTime);
startGame();
}

// Listen for the Player 1 and Player 2 buttons to be pressed
void startGame(){
gameOn = true; // Declare a game currently running
startTime = millis();
digitalWrite(ledPin, HIGH); // Turn on game LED indicating players should press their buttons as quickly as possible
while(p1Done == false || p2Done == false){
buttonStateP1 = digitalRead(switchPin1);
buttonStateP2 = digitalRead(switchPin2);
// Listen for Player 1 button to be pressed and set Player 1 as done.
if (buttonStateP1 == HIGH && p1Done == false) {
endTimeP1 = millis();
p1Done = true;
}
// Listen for Player 2 button to be pressed and set Player 2 as done.
if (buttonStateP2 == HIGH && p2Done == false) {
endTimeP2 = millis();
p2Done = true;
}
}
endGame();
}

void endGame(){
digitalWrite(ledPin, LOW); // Turn off the game LED
finalTimeP1 = (endTimeP1 – startTime); //Calculate how long it took Player to push their button
finalTimeP2 = (endTimeP2 – startTime); //Calculate how long it took Player to push their button
Serial.print(“P1 time:”);
Serial.println(finalTimeP1/1000); // Display Player 1’s final time in seconds
Serial.print(“P2 time:”);
Serial.println(finalTimeP2/1000); // Display Player 2’s final time in seconds

if (endTimeP1 < endTimeP2){ // Run if Player 1 won the round
digitalWrite(ledPinP1, HIGH);
winningTime = (endTimeP2 – startTime) – (endTimeP1 – startTime);
scoreP1 = scoreP1 + 1;
Serial.print(“P1 won by:”);
Serial.println(winningTime/1000);
}
else{
Serial.print(“P2 won by:”); // Run if Player 2 won te round
winningTime = (endTimeP1 – startTime) – (endTimeP2 – startTime);
scoreP2 = scoreP2 + 1;
Serial.println(winningTime/1000);
digitalWrite(ledPinP2, HIGH);
}
delay(5000);
digitalWrite(ledPinP1, LOW); // Turn of Player 1’s LED
digitalWrite(ledPinP2, LOW); // Turn of Player 2’s LED

// Reset all variables to restart the game
buttonStateP1 = 0;
buttonStateP2 = 0;
lastButtonStateP1 = 0;
lastButtonStateP2 = 0;
bothDone = false;
gameOn = false;
startButtonState = LOW;
p1Done = false;
p2Done = false;
randomTime = 0;
startTime = 0;
endTimeP1 = 0;
endTimeP2 = 0;
finalTimeP1 = 0;
finalTimeP2 = 0;
winningTime = 0;
welcomeMsg = false;

}

Week 6: Processing Basics (Marcela)

Echo Chi

Interaction  lab

First, I browsed all the websites on the recitation, this picture attracted me at my first sight because of its bright colors. It seems that these colors are too bright to put together but in this picture, the wall painted by these colors is powerful, vivid and turns me happier. Also, these lines make space seemed larger, so I decided to draw a similar image with Processing.

During my drawing, I found that it was not as easy as I thought because I need to calculate all the vertexes.

The lines in the image I drew were similar to the picture I chose but I added some background colors to make the image softer and gentler. I can achieve stretching the space and make the image not so dazzling.

Exactly, drawing in Processing was a good means of realizing one’s design because it is not so hard to code it and the graphs can be various, also the images can be more accurate.