Midterm Project: Individual Report

Shoot it!

Jack

Instrcutor:Rudi

From the experiences of researches,recitations and the group project,I had learned a lot about how to use Arduino and cardboard to design as well as creating interesting things.For example,the “Workout”recitation let me realize that arduino could be connected with other handmade items to make it more interactive;the group project provided me with the chance to fabricate with cardboard.Meanwhile,it also enriched my understanding of interaction.I still insisted my definition of interaction,namely,acting with each other ,whether it was the acting between people,computers or between people and computers.More importantly,this was a two-way acting,which meant both sides had to respond to the other’s reactions.However,I would like to add a few more explanations: Interaction should be something that is playable or subjected to change.Therefore,I put this idea into practice and created our artifact:A mini basketball shooting machine which could be played by two people(one to hold the box and one to use the device to shoot) and it was portable as long as there was a electric power.Besides,our project was suitable for everyone,so there was no restriction or limit of playing it and everyone could gain happiness in this project.

My understanding of interaction was also shown in the mechanics of the game.When a player successfully shooted the ball in the “hoop”,the distance infrared sensor would detect the subtle changes and passed the signal to the 8 segment LED to show scores.What’s more,since the score box and the shooting device was separated,the angle and direction of shooting was completed based on user’s choices.In other words,it provided users with freedom in their experiences.The whole project was made by cardboard because Melissa and I were familiar with using it and cardboard was convenient,versatile and user-friendly.This perfectly fit my criteria that the material should be handy and be subject to change according to our ideas so that we could make changes during the whole fabrication process.For shooting process, we used two motors(one spinned counter-clockwise and the other spinned clockwise) connected with two wheels to squeeze the ball out and this method ensured the shooting speed was fast enough.We also considered using fans but we gave up the idea because the shooting speed was slow and the subtle change of the wind’s direction made it hard to control the process of shooting. Here are our original ideas and a few sketches.

In the process of fabrication and production,I mainly in charge of coding,connecting the distance infrared sensor with the 8 segement LED and making the score box.At first,Melissa and I cut the cardboard into different sections:base,slope,side.In order to save space,we cut the rectangle in the middle and reconnected it to make the trapezoid shape of slope.

Later,we started to find appropriate motors and wheels.We found two motors that spinned at similar speeds.So I soldered the wires to the motors and used the hot melt glue gun to connect the center of the wheel to the motor.

However,after testing the speed of motors,we realized that it was nearly impossible to limit the whole project in a box and we decided to divide the project into two parts:the shooting device and the score box.Melissa would make the former and I would be in charge of the latter.

Next,I figured out how to test the distance infrared sensor with the help of Rudi and a learning assistant: the distance could be set by using a screwdriver and once the sensor detected something,the LED light would shine.Then I focused on how to connect the 8 segement LED.I viewed the website of DFRobot and follow the instructions.A few minutes later,it worked!

After that,the code became one of the biggest problem.Hence,I turn to the learning assistant for help.We discussed and worked out the logic of the detecting process together.The process was divided into four parts:the ball was faraway and score maintained original status;the ball was near and score maintained original status;the ball was near and score added one;the ball was faraway and score made no change. After several testing,we successfully avoid the problem of counting score twice.But a new problem occurs:everytime the score reached 9,it would suddenly changed back to 0. I checked the code and found out the problem was that the maximum of count was 9 but it should be 10 to ensure the existance of 9.Therefore, I revised and if count was equal to 10 then it would change back to 10.Here is the code.(The original code came from https://mc.dfrobot.com.cn/thread-2537-1-1.html)

int sensor = 10;
int tiltVal;
int prevTiltVal;
int count=0;
int distance;
int goal=0;
int number[10][8] = {
  { 0, 0, 0, 1, 0, 0, 0, 1 },  
  { 0, 1, 1, 1, 1, 1, 0, 1 },  
  { 0, 0, 1, 0, 0, 0, 1, 1 },  
  { 0, 0, 1, 0, 1, 0, 0, 1 },  
  { 0, 1, 0, 0, 1, 1, 0, 1 },  
  { 1, 0, 0, 0, 1, 0, 0, 1 },  
  { 1, 0, 0, 0, 0, 0, 0, 1 }, 
  { 0, 0, 1, 1, 1, 1, 0, 1 },  
  { 0, 0, 0, 0, 0, 0, 0, 1 },  
  { 0, 0, 0, 0, 1, 1, 0, 1 }   
};
void numberShow(int i) {  
  for (int pin = 2; pin <= 9; pin++) {
    digitalWrite(pin, number[i][pin – 2]);
  }
}

void setup() {
pinMode(sensor, INPUT);

  Serial.begin(9600);  
  for (int pin = 2; pin <= 9; pin++) {  
    pinMode(pin, OUTPUT);

    digitalWrite(pin, HIGH);
  }
}
void loop() {
 
  distance=digitalRead(sensor);
if (count>=0&&count<=9){
  if(distance==1&&goal==0){
    count=count;
  }
  if(distance==0&&goal==0){
    goal=1;
    count=count+1;
  }
  if(distance==0&&goal==1){
    count=count;
  }
  if(distance==1&&goal==1){
    goal=0;
  }
}else if(count==10){
  count=0;
}

numberShow(count);

Serial.print(“count:”);
Serial.println(count);

Serial.print(“goal:”);

Serial.println(goal);
Serial.print(“distance:”);

Serial.println(distance);  
  delay(62);
  }

On the user testing recitation,we could only display our prototype.

To my surprise,there were people who loved our ideas and gave us many useful suggestions:

 

Based on the feedback,we made many changes to our prototype.For example,we added a small slope at the back before the ball touched the two motors,Melissa created a structure to make the shooting device more stable and easier for user to hold.(More information about the shooting device can be viewed on Melissa’s blog)

I started to build the score box.Since the slope didn’t work as our originial idea turned out to be unrealistic,I used the slope as the board on the back of the score box.I reused the cardboard with a rectangle to create a “hoop”.At first,I put the sensor on the back,but it seemed that the sensor couldn’t precisely detect the balls after several tests.

Hence,I used a tape to sticked it near the”hoop”,but beneath the upper board.

Then I designed a small box below to hold the circuits as well as balls.The one side of the box was open and I created a block the divide the circuits and balls.

Hooooooray!

Our final task was to paint the device.Since Halloween was around the corner,we chose black and orange.

In conclusion,the overall goal of my project was to enrich my knowledge of interaction,including the understanding and the methods to realize it.The specific goal was to design a interesting device that can bring people happiness through interaction.In my opinion,our project basically matched my understanding of interaction because the two-way action is shown on the LED number and the angle,set during the user’s shooting process.The shooting action completely depended on the users themselves and they could have another try based on the previous shots.According to my understanding of interaction,the computer side(the Arduino circuits side) should do more things rather than only showing scores.This was the point that didn’t align with my definiton.

Therefore,there were things that needed improvements.For example,more handles or other features could be added to the shooting device since the users had to hold the device with one hand.Also,a ball picker could be designed below the score box so that there was no need to pick the balls by ourselves. 

In all,it was a wonderful experience because I got a deeper understanding of interaction,enhanced my skills in cardboards and Arduino even though I faced many obstacles.Most importantly,I learned a lesson from it:Only through practice can we change idea into reality.We might fail many times during the process to success,but we should never give up and we should keep a good mindset and strive.Also,it’s fine to find help from others since no one is born a genius. 

I regard interaction as a crucial factor in our daily lives because now we are living in an advanced and modern society and everyone is connected in some way. I do believe interaction can and should make life better.

Annex:

Recitation 4: Actuators & Mechanisms

Recitation day!

This time, Melissa and I would use cardboard to create a mechanism.

In order to save time and improve efficiency, I built the circuit while Melissa was cutting the cardboard.To be honest,the circuit was so complex that I was irresolute the first time I saw it.However,I decided to challenge myself .I managed to built the circuit with the examples of the diagram even though I revised several times on the cables connected to the four ground ports.Then I asked the learning assistant to check my circuit and it was correct.She even gave me a thumbs up!I was glad that I faced what I wasn’t good at.Later, I typed the code in the arduino and the motor spinned as expected.

After I finished building the circuit,I helped Melissa with cutting the cardboard.

After that,we used tht hot melt glue gun to stick the different parts of the cardboard.

Minutes later, the basic structure emerged and we placed the motor on the back of the device.It worked!

For the last step,I decided to cut the shape of a train because the process of the motor’s rotating was similar to the spinning process of the wheels on the trains.Here was how it looked.

The train is coming!Toot toot~

Additional questions

1.Daniel Palacios Giménez also used motors in his artifact “Waves” in 2006.Motors rotate an elastie rope to create complicated sounds and visual wave oscillations. The artifact creates the illusion of solid shapes for the viewers since the exposure blurs multiple rope positions.Compared with my work,I think his design is more complex and brings greater visual impact because the rope keeps moving and the visions are diverse.Hence,I think the usage of motors in his design really contributes to the artifact’s success.

2.

As the note demonstrates,I will use the motors to squeeze the ping pong ball so that the shooter can shoot the ball(the inspiration comes from the tennis ball serving machine)and this is much more feasible and more interesting than using an animation on a digital screen.

Midterm Project: Individual Proposal

Mini Shot by Jack

Instructor:Rudi

The basketball shooting machine in the arcade was one of the most attractive device for me when I was a child and I recently learned how to use motors in the Arduino,so I decided to create a mini version.It’s a device with two players:one is the shooter whose goal is to use the motor and button to score and the other is the defender who moves the hoop to prevent the shooter from scoring.The hidden challenge is the shooting process but everyone can play since the game mechanics aren’t complex,and maybe the device can be placed at B1 for recreation.

Group Research Project: Make, Perform & Report

Group work this time!

Our team wanted to design an artifact that not only match the storyline but also go further from it.In order to be imaginative and feasible at the same time,we chose the second story”The Ones Who Walks Away From Omelas” by Ursula K.Le Guin as our creating background. In the story, a child had to be stuck in a broken room with limited survival supplies to ensure the whole town’s happiness.In other words,the key plot is the comparison or the transition between sadness and happiness.Inspired by this,we decided to make a helmet that can change a person’s negative feelings into positive ones while reading his or her brain waves.The artifact indicated our wishes that everyone could have a positive attitude towards life and find their own ways to face negative emotions.

Firstly,we decided to use cardboard as the main materials because Calvin and Blake were skilled in using cardboard and I attended the workshop for cardboard skills.Most importantly,cardboard was easy to learn.

My main task was to cut the cardboard into 2 big semicircles and help cutting other shapes such as trapezoids when necessary.I also cut several lines on the edge of the semicircle to stick it with the hot melt glue gun while arching.Another task of mine is to take photos.

The rudiment of the helmet had shown!

Then,I started to do some supporting work as well as taking pictures of the working process.

This was Calvin using the hot tube glue gun to strengthen the connection between the top and bottom parts.

The integral construction of the helmet was basically finished!

Meanwhile,Tina and Vicky had already made circles of different sizes for the external decoration.The circles that folded up were used as the buttons connected with different parameters.

Later,they sticked the circles to the helmet according to their design.(Did you notice that the helmet looks like a bird face if you look from the top?)

Afterwards,Blake and I tried to design an adjustable goggle to make the artifact more interactive.We actually managed to cut the cardboard into right shapes,but it was too hard to fix the goggle and it might fall off when changing the direction.In the end,we dismantled the goggle and changed the helmet into its original look. 

This was the final version!

From a objective view,our artifact was in tune with the original story and went further using our imagination so it was a creative design.On the other hand,I thought that the artifact needed to be more interactive because it lacked playability and variability.For example,could we connect it to the Arduino with sensors or put some light tubes linked with circuits on the helmet? In that way,the artifact was much more fun.


This was how we did the rehearsal and how we actually performed during the recitation.

Our script was divided into two parts.The first one was about the scene in the original story when the helmet freed the child from all miseries and sorrows and enabled him to reach happiness.The other one was about the days when the helmet was put into wider use and all the people over the globe could use it to turn their negative emotions into positive ones,which benefits mankind.

In our performance,everyone did his or her own job and participated wholeheartedly even if we were not professional performers.(Proud of our team!)

The most interesting part was when Tina touched the helmet and drew the brain waves,which demonstrated what was the functions of the helmet.

However,there were still something that needed to improve,for example,we could make more props to fill in the gaps between each scenes and to add more fun to the play.Besides, the scene of me and Blake building the NYU School gate might confuse the audience,so it needed to be explained more clearly.In addition,as Rudy suggested,Calvin should face towards the audience so that the audience could see his facial expressions.

In a word,it was a wonderful experience and I hope that everyone could be happy,brave and optimistic,no matter what happens.

Recitation 3: Workout

Recitation day!

First,I soldered the sensor to the two wires to make a switch.Next, I built the circuit with the switch,a 10k ohm resistor and a capacitor. Then I sticked the switch to my right arm and began to type the codes.

Step 4 was basically divided into 3 tasks.

For task1,I used a conditional that had the criteria so that the sensor only detected transitions LOW to HIGH, showing only when the user had raised their arm completely. Here is the code and its demonstration.

int SENSOR_PIN = 2;
int tiltVal;
int prevTiltVal;

void setup() {
  pinMode(SENSOR_PIN, INPUT); // Set sensor pin as an INPUT pin
  Serial.begin(9600);
}

void loop() {
  // read the state of the sensor
  tiltVal = digitalRead(SENSOR_PIN);
  // if the tilt sensor value changed, print the new value
  if (tiltVal != prevTiltVal) {
    if(tiltVal == 1){
     
    Serial.println(tiltVal);
     prevTiltVal = tiltVal;
    }
   
   
  }
  delay(10);
  }

For task 2, I needed to add a variable called”count” to count the curls.Here is how it works.

int SENSOR_PIN = 2;
int tiltVal;
int prevTiltVal;
int count=0;

void setup() {
  pinMode(SENSOR_PIN, INPUT); // Set sensor pin as an INPUT pin
  Serial.begin(9600);
}

void loop() {
  // read the state of the sensor
  tiltVal = digitalRead(SENSOR_PIN);
  // if the tilt sensor value changed, print the new value
  if (tiltVal != prevTiltVal) {
    if(tiltVal == 1){
      count=count+1;
    Serial.println(count);
   
    delay(1000);
 
    ;
    }
   
   
  }
  delay(10);
  }
  prevTiltVal = tiltVal;
}

When it comes to task 3,I had to set a limit and reset the curls.Here is the code and its demonstration.

int SENSOR_PIN = 2;
int tiltVal;
int prevTiltVal;
int count=0;

void setup() {
  pinMode(SENSOR_PIN, INPUT); // Set sensor pin as an INPUT pin
  Serial.begin(9600);
}

void loop() {
  // read the state of the sensor
  tiltVal = digitalRead(SENSOR_PIN);
  // if the tilt sensor value changed, print the new value
  if (tiltVal != prevTiltVal) {
    if(tiltVal == 1){
      count=count+1;
    Serial.println(count);
    if(count>=8){
    Serial.println(“Yay, you have done one set of curls”);}
    if(count>=8){
    count=0;
    delay(1000);
 
    ;
    }
   
   
  }
  delay(10);
  }
  prevTiltVal = tiltVal;
}

For step 5,I set the time interval between two groups of training and added the words””It’s time to workout!Let’s go!” to remind the user that a new group of training was about to start.

int SENSOR_PIN = 2;
int tiltVal;
int prevTiltVal;
int count=0;

void setup() {
  pinMode(SENSOR_PIN, INPUT); // Set sensor pin as an INPUT pin
  Serial.begin(9600);
}

void loop() {
  // read the state of the sensor
  tiltVal = digitalRead(SENSOR_PIN);
  // if the tilt sensor value changed, print the new value
  if (tiltVal != prevTiltVal) {
    if(tiltVal == 1){
      count=count+1;
    Serial.println(count);
    if(count>=8){
    Serial.println(“Yay, you have done one set of curls”);}
    if(count>=8){
    count=0;
    delay(10000);
    Serial.println(“It’s time to workout!Let’s go!”);
    ;
    }
   
   
  }
  delay(10);
  }
  prevTiltVal = tiltVal;
}
 (Since there was something wrong with my sensor,the poor contact might affect the demonstration.)

And this was how the device worked:

Some reflections:

1.Be careful not to mistake the positive side with the negative side when building the circuit.

2.When typing the code, I can click the line of the brackets to check whether it has a start combined with an end.It’s also useful to use “blank space” and “TAB” to make the structure clearer.

3.The transition between high and low occurs when the angle reaches 50-60 degrees,which is not so precise and needs to be improved.

4.If I rotate the arm with the sensor, it will count as one curl as long as the sensor feels the transition from horizontal to vertical.But if I shake it,the result is uncertain.Therefore,we should design a bigger device so that it will keep the position of the arm stable and avoid the mentioned situations.

5.Thanks to the device’s simplicity and convenience , I think it can be used by any user,from the young to the old.

6.What’s more,it may indicate a new way to work out—-the”interactive gym” which allows everybody to work out with the device,no matter where they are.