• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

Sissy's Documentation Blog

  • Nature Of Code
  • Smart City
  • Desert Media Art
  • Immersive art
  • Creative Coding
  • Interactions Lab
    • Recitations
    • Projects
  • Communications Lab

Inter Lab

November 10, 2021 by Shiyuan Tian Leave a Comment

Reci 7

part 1:

https://wp.nyu.edu/sissytian/wp-content/uploads/sites/19379/2021/11/sketch_11_5reci-2021-11-05-15-14-47.mp4

part 2:

https://wp.nyu.edu/sissytian/wp-content/uploads/sites/19379/2021/11/sketch_11_5recipart2-2021-11-10-20-57-45.mp4
  • Q1: In the reading “Art, Interaction and Engagement” by Ernest Edmonds, he identifies four situations in an interactive artwork: ‘Static’, ‘Dynamic-Passive’, ‘Dynamic-Interactive’ and ‘Dynamic-Interactive(Varying)’. From the exercise you did today which situations you identify in every part you executed? Explain.

      I think the things I made today are both static artworks. Because the patterns move by themselves and are not influenced by the context and the user’s action.

  • Q2: What is the benefit of using arrays? How might you use arrays in a potential project?

      I think the benefit of using arrays is that it can efficiently represent several data of the same type using one object. The data inside the array can be really easy to create by using the for loop, which is really convenient. And it is also really convenient to use data from the array by calling its index.

code:

part 1

int[] colorB = new int[40];



void setup(){
  size(800, 800);
  background(#c7e3ff);
  for (int i = 0; i < colorB.length; i++){
    colorB[i] = i*10;
  }
}

void draw(){
    background(#c7e3ff);
 int i =0;
  for (int column = 0; column < 1000; column += 150){
    for (int row = 0; row < 1000; row += 200){
      cloud(row,column, 40*abs(1 + sin(millis()/300.0)/4.0), 10, 100, colorB[i]);
      i += 1;
      }
    }
  }



void cloud(int x, int y, float size, int r, int g, float b){
  noStroke();
  fill(r, g, b);
  circle(x+size, y, size);
  circle(x+size/2, y-size/1.8, size);
  circle(x, y - size/1.2, size);
  circle(x-size/2, y-size/1.8, size);
  circle(x-size, y, size);
  circle(x-size/3, y+size/4, size);
  circle(x+size/3, y+size/4, size);
  circle(x, y, size);
}

part2:

int[] colorB = new int[8];
int[] posX = new int[8];
int[] posY = new int[8];
float[] speed = new float[8];

void setup() {
  size(800, 800);
  background(#c7e3ff);
  for (int i = 0; i < colorB.length; i++) {
    colorB[i] = i*36;
  }
  for (int i = 0; i < posX.length; i++) {
    posX[i] = i *-300;
  }
  for (int i = 0; i < posY.length; i++) {
    posY[i] = i*120;
  }
  for (int i = 0; i < posY.length; i++) {
    speed[i] = i* 0.3;
  }
}

void draw() {
  background(#c7e3ff);
  //println(sin(millis()/300.0)/4.0);
  for (int i = 0; i < colorB.length; i++) {
    for (int j = 0; j < colorB.length; j++) {
      cloud(posX[i], posY[j]+sin(millis()/60.0)*20.0, 30, 10, 100, colorB[i]);
      float s = speed[j];
      posX[i] += s;
    }
  }
}

void cloud(int x, float y, float size, int r, int g, float b) {
  noStroke();
  fill(r, g, b);
  circle(x+size, y, size);
  circle(x+size/2, y-size/1.8, size);
  circle(x, y - size/1.2, size);
  circle(x-size/2, y-size/1.8, size);
  circle(x-size, y, size);
  circle(x-size/3, y+size/4, size);
  circle(x+size/3, y+size/4, size);
  circle(x, y, size);
}

Filed Under: Inter Lab, Reci_for_Interlab

October 29, 2021 by Shiyuan Tian Leave a Comment

Step 1: Preparatory Research and Analysis

Two interactive projects:

 

The first interactive project that I chose is The Treachery of Sanctuary from Chris Milk. It is a digital screen that captures and shows the shadow of the user and presents it lively with birds or wings. I think it creates a successful interactive experience, and the reasons are as follows. It is a good example of using the ambient approach to achieve interaction. Because it uses non-invasive devices, which is really convenient for the users to try it out. And I think it has the engagement of Sustaining, because it may retain the attention of the user for a while, and give them a short experience of enjoying their interaction with the artwork. According to Ernest Edmonds, the “happening” of interaction means that the “direct and physical audience participation became, at times, an integral part of the art work” (1 Edmond), which means that the user’s body itself or the user’s action should also be considered as a part of the artwork. In this example, the shadow of the user became a part of the artwork, and the graphic on the digital screen is making a creation on the user’s shadow. It is not simply action and response where the user does one thing and the installation gives another as a response, but it simultaneously makes real-time creations and displays them to the user. 

Inspirations it gives me:

  1. What it means by integrating the user into artwork
  2. The idea of how to break the frame of “action and response” interaction.

The second artifact that I chose is the Waterfall swing by n Mike O’Toole, Andrew Ratcliff, Ian Charnas, and Andrew Witte. It was basically a thin waterfall on the path of the swing, and it can count the time when the player will get to the waterfall and create a narrow escape so that the rider won’t be wet with water. I think this idea is really nice because it uses an existing thing as a foundation and makes creations upon it by using technologies and adding interactions. This also gives me a new idea of interaction. Different from the “action and response” model, this installation creates interaction without users’ subjective intention. It combines interaction with the other experiences of playing with swing and did not highlight it as its main part. Moreover, it creates a lot of fun and stimulates emotions. This joy and emotion that it creates make it considered as a ‘relating’ engagement. It also creates a kind of thrill because of the fast speed of the swing and the waterfall that may cause wetness. It also stimulates the emotion of nostalgia, because older people may want to try on this new swing, which is similar to the swing in their childhood but quite different. 

Inspirations it gives me:

  1. To make creations on something that already exists, add something creative and interactive to it. 
  2. Fuse interaction with the user’s experience with the installation, let the interaction be a part of the experience, but not the main purpose of the experience.
  3. Stimuli emotions and create emotional connections with the user.

My definition of interaction used to be as follows. “Interaction is a mutual and reciprocal communication that involves two or more than two sides of participants. When one side makes some actions, the other side can detect that action and give back a response, which lets the first know that he is being understood and given feedback”. I think in this definition I made before, I empathize with the frame of “action and response”. So in our midterm project, I did the interactive design based on this definition. We made a robot that gives a response to the users based on the user’s action of what they give to the robot. Which is obviously in an “action and response” frame. However, I think I would like to edit it further from the perspective of whether to be an “action and response” work. First of all, the interaction is not just simply a one-round “action and response” conversation, but it should be more complex where each turn of the “action and response” builds on each other and creates a deeper conversation by having more interaction between the two sides. According to Edmonds, “ Each action leads to a response that, in turn, encourages or enables another action” (7). This kind of interaction can provide a longer engagement and have a longer-time influence. It was like in the communication, each turn is built on one another, and the conversation may get better and deeper.  Additionally, the interaction can occur simultaneously. It doesn’t necessarily have the chronological order of the action part and response part. The two lines can be displayed at the same time. The two projects that I analyzed before all proved this point. In The Treachery of Sanctuary, the creation of the user’s shadow and the user happened at the same time; and in the Waterfall swing, the swinging swing and the waterfall also happened simultaneously without an order.

Filed Under: Research_for_interlab

October 29, 2021 by Shiyuan Tian Leave a Comment

Recitation 6

Water Ripple

that occurs where the mouse clicked

https://wp.nyu.edu/sissytian/wp-content/uploads/sites/19379/2021/10/sketch_1029reci-2021-10-29-15-31-50.mp4

additional homework

https://wp.nyu.edu/sissytian/wp-content/uploads/sites/19379/2021/10/homework11_1-2021-11-01-20-13-59.mp4

Struggles that I encountered and corresponding solutions:

1.

Problem: It was challenging for me to draw a set of moving circles, and I was thinking about using a nested loop to achieve that effect.

Solution: However, the actual code to do that is much easier.  Because I just need to draw a set of circles with a loop and make their radius as a changing variable.

2.

Problem: I want to achieve that when there is a click, then there will be a diffusing ripple. However, the code that I wrote originally was 

Solution: define a function named anime to simplify the draw block

               use mouse click and boolean variables to control the play of the anime function

               use millis and conduct it to boolean to control the play of the anime function

3.

Problem: the ripple was moving with the mouse, but did not stay at where the mouse was clicked. (original code was circle(mouseX, mouseY, r + vari))

Solution: make x and y  global variables and store mouseX and mouseY values when the mouse clicked. 

 

Code:

int sw =1;
int vari = 0;
int currenttime;
int storetime;
boolean canPlay = true;
boolean play = false;
int x;
int y;

int i;
void setup() {
  size(1000, 600);
}

void draw() {
  background(135, 206, 250);
  currenttime = millis();
  if (mousePressed && canPlay == true) {
    canPlay = false;
    play = true;
    x = mouseX;
    y = mouseY;
    storetime = millis();
  } else {
    canPlay = true;
  }

  if ((currenttime - storetime)>= 800) {
    vari= 0;
    play = false;
  }
  if (play) {
    anime();
  }
}

void anime() {
  noFill();
  int trans = 60;
  for (i = 250; i > 0; i -= 50) {
    strokeWeight(sw);
    stroke(255, 255, 255, trans);
    circle(x, y, i+vari);
    sw += 3;
    vari += 1;
    trans += 50;
  }
  sw= 1;
  // vari = 1;
  //vari += 1;
  if (vari > 500) {
    vari= 0;
  }

  //  if (i == 0) {
  //    play = false;
  //  }
}

code for additional homework:

 

float r;
float x;
float y;

void setup() {
  size(600, 600);
  colorMode(HSB, 360, 100, 100);
}

void draw() {
  background(360);
  strokeWeight(20);
  stroke(r, 100, 100);
  r = abs(sin(millis()/500.0)*500.0);
  circle(x, y, r);
  x = map(mouseX, 0, 600, 0+r/2, 600-r/2);
  y = map(mouseY, 0, 600, 0+r/2, 600-r/2);
  
}

Filed Under: Reci_for_Interlab, Uncategorized

October 25, 2021 by Shiyuan Tian Leave a Comment

Midterm Project

Project: Poetic Robot

Name: Sissy

Instructor: Margaret

 

CONTEXT AND SIGNIFICANCE 

In my previous research project, I defined interaction as a mutual and reciprocal communication that involves two or more than two sides of participants. When one side made some actions, the other side can detect that action and give back a response, which lets the first knows that he is being understood and given feedback. So that when thinking about the idea of our midterm project, I think the two sides separately, considered the actions and response. The project that I analyzed in my research project: The lightwaves give me the inspiration of visualizing the user’s action so that the users can see their action being understood. 

We import our idea of the critic of technology development nowadays, which is the significance of our project. Advanced technologies have significant values and make people’s life much easier, like the internet and smartphones. They interact with people in daily life and change people’s lifestyles greatly. We even take technology for granted every day. However, On the other hand, the evolving pace of technology gets faster and faster, the rapid evolution may let users find challenges to keep pace with it. Take elderly people as an example, most of them could only use technology by passively consuming it. Scientific progress may not really bring convenience to their life but rather confusions and high demands. In this way, it is not technology that gives service to humans but humans trying to understand technology. 

CONCEPTION AND DESIGN:

To express our critic of technology development more vividly, we humanized overall scientific technologies into a robot that users can interact with. And a moisture sensor is used as an input and the robot will give responses to particular signals. However, users wouldn’t know what their actions mean to the robot. They can only guess the characteristics of the robot by observing the robot’s reactions.

We use cardboard to make the body and the head of the robot, and since the arms and legs are difficult to make with cardboard, we use 3D printing to make it. We were thinking about using 3D printing to make the robot’s head. But in consideration of the holding capacity of the servo, we used light cardboard and paper to make its head, which turned out to be cute.

To add more humanity to the robot, poems are the key to approaching this mysterious robot. Different poems represent different humidity. Before the user puts the sensor into the cans, they will first read the words on the cans and then reflect on what the poem is mainly about. 

I also designed to put the sensor in the middle of the heart of the robot. This lets the users be aware of the sensor and gives them a sense of how it is used and what it is used for. 

In contrast to the common sense of a metal sliver robot, the body of this robot was painted with the blue ocean, which is soft and powerful. It represents the resilience and power of technology and the robot’s preference–water. 

 

FABRICATION AND PRODUCTION:

I think the most significant step that we took is decorating the cans with sponges with papers with poems on them. Because before that step, we had been struggling for a long time, thinking about what might be the point that triggers the users to interact with our robot. Additionally, since we only have two different moisture degrees, the result of a can is binary, which might be boring in terms of the interaction. To solve this problem, we decided to work on the storytelling of our project, to make it more engaging and interesting to the user. So that we wrote poems on the cans and add the scenario of guessing what the robot likes by reading the poems on the bottle as a hint. I think this step really helps us to make our project more engaging and gives the users a reason to use it. In this process, I mainly did the brainstorming part of deciding what is the theme of our project, what it is about, and how to make our project more engaging.

Our failure might be not choosing the inappropriate sensor. The reason why we decided to choose it at the beginning was that we think it is more accurate than other sensors when we use it during the recitation. However, reflecting on our project, I think the use of moisture sensor is inefficient, and the reasons are as follows. Firstly, the moister sensor reads analog values, yet the reaction of the robot is binary. So that the analog sensor is not necessary and can be replaced by a digital sensor. Secondly, though the moisture sensor reads the accurate value, it depends on how well the sensor contacted the sponge. When the sensor is not contacted well or it is in the process of being contacted well, then the sensor won’t give an acute value. Thirdly, the operability of the moisture sensor is weak. We need to prepare sponges and users need to put the sensor into the sponge to get the value. We also don’t have the specific answer of why we need to use the moisture sensor exactly. So that I think if I do it again, maybe I will choose a digital sensor instead.

During our group work process, we worked together on the brainstorming part. We first think of what input sensor can we use and how to make our output more appealing and give the user an interesting response. We also discussed what are the ideas that we want to express through our project and what is the theme of it. After having a general idea of what we are going to make, we work together to make the robot and did the 3D printing together. Additionally, to split up our work, I was mainly responsible for the circuit and coding while my partner worked on the scenarios and the poems. I think my efforts helps the robot works well and do the responses interactively, while my partner did well on improving the humanly and engagement of our project.

During the user testing session, we found many problems with our design and received some suggestions on how to improve it. The phenomenon that we detected of the user’s interaction with our robot, the problem behind it, and our corresponding improvements are listed as follows:

1). Phenomenon: Some users didn’t see the moisture sensor so that they don’t know what they can do to interact with the robot.

The Problem Behind: The moisture sensor and the robot seem to be separated, and the sensor seems not to be a part of the robot.

Improvement: We put a heart on the robot and let the moisture sensor stretch out from his heart. This design makes the moisture sensor and its function to test the cans more obvious to the users.

2). Phenomenon: Users are not willing to read the poems on the cans. The poems seem to be too long, and the users don’t want to read those English poems. 

The Problem Behind: The poems are difficult to understand and too long for the passed-by users to read. 

Improvement: We have thought about changing the poems into some pictures to make the users better grasp what we mean. However, we think that poems are better because users will have a diverse understanding of them. So that we shortened the poems into one sentence.

3). Phenomenon: Users are confused about the robot’s movement of happiness: they think that waving his hand may also mean feeling scared.

The Problem Behind: The expression of “happy” is not obvious.

Improvement: We changed the hand waving to the same side, while it was from different sides before, which may look strange. We also planned to add a heart-shaped LED to the robot, but we failed to do that because of the wrong weldIng of the LEDs

4). Phenomenon: Users don’t understand why the robot loves water.

The Problem Behind: The connection between robot, moisture, poems, and water is not clear.

Improvement: We painted the robot’s body blue, and it has ocean and rain on his body, which also indicated water.

 

CONCLUSIONS:

Our goal of the project is to create an interaction where users need to try to understand the robot and get to know it. We want to use the interaction between the user and the robot to criticize the nowadays relationship between rapidly developed technology and human. 

My project results align with my definition of interaction in the way of creating communication between two sides. When the user gives the action of putting the sensor into the can, the robot can detect this reaction and give a corresponding response. The users can see its responses and understand them. This interaction creates communication between the user and the robot.

To improve my project in the future, I would like to add more responses of the robot to express the robot’s like or dislike more obvious to the users. For example, by adding eyes of the robot using the led screen, adding a led screen on the robot’s body to show its mood, and also adding a speaker to speak for the robot. The design sketch is as follows.

From this process, I discovered the power of cooperation and collective effort. We discussed a lot during our ideation process, and I found that many new ideas are generated from our collision of thought. I also learned to search and learn things online, and also seek help if I needed it. 

Additionally, I feel like the project always needs to work iteratively, including brainstorming, ideation, coding, designing, and making process. For example, we changed a lot of our ideas during our making process, because of the operability of our ideas. We also worked iteratively on our coding, because it usually has some mistakes and we need to work on it again and again, check and revise it. 

To wrap it up, our project mainly uses interaction to address the relationship between humans and technologies. We conclude it in a word of ‘reverse teaching’ because technologies are not only serving us but also asking people to understand it through trying and testing. This project is asking people to reflect on this issue and provide fun and entertainment at the same time.

Video:

https://wp.nyu.edu/sissytian/wp-content/uploads/sites/19379/2021/10/WeChat_20211025200933.mp4

 

Poster:

Poems:

(original version)

[like]

Swim:

I remember once while swimming with friend

Floating body, pressing water, moving forward

How nice to enjoy spattering, splashing sound!

Gesturing body, flapping wing, clapping hand.

Drink:

Wine comes in at the mouth

And love comes in at the eye;

That’s all we shall know for truth

Rain:

With thick strokes of ink the sky fills with rain.

Pretending to run for cover but secretly praying for more rain.

sweat:

I’m relatively new to jogging and to serious training.

Over the past several months I’ve been making steady progress,

and recently I’ve noticed that I’ve started sweating more.

That means I’m getting more fit.

 

[dislike]

Fire:

Fire burns the wood shavings,

reducing each to a pile of dust.

The silence when the world around you crumbles down,

kills you as much.

desert:

The sun beats down on the desert sand,

I plod tiredly on.

The heat of hell is on this land,

Its smoke shimmers sleepily.

Potassium:

Explosive and corrosive

It is element 19

(Revision)

Code:

#include <Servo.h>

Servo myservo1;
Servo myservo2;
Servo myservo3;// create servo object to control a servo
// twelve servo objects can be created on most boardsint pos = 0;    // variable to store the servo position
int sensorPin = A0;
int count = 0;
int counter1 = 0;
int sensorValue = 0;
int pos = 0;
int a = 1;
int pos1 = 180;
int pos2 = 0;
int pos3 = 0;
int speed1 = 3;
int speed2 = 3;
int speed3 = 20;
bool inWater = false;
bool wave = true;

void setup() {
  Serial.begin(9600);
  // put your setup code here, to run once:
  myservo1.attach(7); //gray arm
  myservo2.attach(8); //black arm
  myservo3.attach(9); //head
  myservo1.write(180);
  myservo2.write(0);
}

void loop() {
  sensorValue = analogRead(sensorPin);
  //    Serial.print("Moisture = " );
  //    Serial.println(sensorValue);

  v_of();
  //      delay(5000);
  //      Serial.print("Moisture = " );
  //      Serial.println(sensorValue);

  if (inWater) {
    testFunc();
  }
}

void v_of() {
  if (sensorValue > 20 && inWater == false) {
    delay(100);
    inWater = true;
    myservo1.write(180);
    myservo2.write(0);
    myservo3.write(70);
    Serial.println(sensorValue);
    //return sensorValue;

  }
  else if (sensorValue <= 5 && inWater) {
    delay(100);
    inWater = false;
    myservo1.write(180);
    myservo2.write(0);
    myservo3.write(70);
    wave = false;
    Serial.println(sensorValue);
    //return sensorValue;
  }
}
void testFunc() {
  if (sensorValue > 200) {
    myservo3.write(70);
    Serial.println("大于200");
    for (count = 0; count < 180; count += 1) {
      if (pos1 < 0 ) {
        a *= -1;
        counter1 += 1;

      }
      else if (pos1 > 180) {
        a *= -1;
      }

      if (pos1 == 50) {
        if (counter1 % 3 != 0) {
          a *= -1;
        }
      }
      pos1 = pos1 + a;
      pos2 = pos2 - a;
      Serial.print(pos1);
      Serial.print("    ");
      Serial.print(a);
      Serial.print("    ");
      Serial.println(wave);
      myservo1.write(pos1);
      myservo2.write(pos2);
      delay(1);
    }

  }
  else if (sensorValue > 20 && sensorValue < 200) {
    Serial.println("小于200");
    delay(5);
    pos3 += speed3;
    myservo3.write(pos3);
    Serial.println(pos3);
    if (pos3 < 0 || pos3 >= 140) {
      speed3 *= -1;
    }
  }
}

Filed Under: Inter Lab

October 12, 2021 by Shiyuan Tian Leave a Comment

Week 5 | Drawing Machine

  

In this week’s recitation, we build a drawing machine.

What I did is first connected the circuit according to the diagram on the website. 

Since there are a lot of wires in the circuit, the breadboard seems really messy. To make myself more organized when connecting the circuit, I connected the legs of the H-bridge one by one with the Arduino. When I finished connecting the circuit I upload the code from my computer to the Arduino and unplug the USB connector with my computer to protect my computer. However, I found that when I connect my Arduino to the power supply, it does not work. Then I asked Eric for the reason why it does not work. He first carefully checked every wire in my circuit to make sure that it is right connected. However, he said that my circuit is all right. So what is the reason it doesn’t work? I was puzzled and watched what Eric would do next. He unplugged all the wires on the Arduino and directly connected the Arduino with my computer. He found that although my Arduino was powered by the computer, it does not blink the yellow light. This means that it has some problems with my Arduino. After checking that he use another Arduino to check with my circuit and found that it works correctly. So that it comes out that my Arduino is burned. It was really a surprise to me because I don’t even though when did I burn it. It doesn’t hot nor smelled burned.

After I changed the new Arduino, everything works alright and my turntable begin to spin. However, when I was checking the next step, a fellow came and touches my H-bridge, and found it was hitting up. She immediately unplugged the power supply and began to check my circuit. After making sure my circuit is right, she also felt puzzled because the H-bridge is hitting up so quickly that it could become hot within 5 seconds. After changing the H-bridge, it still hit up quickly. She also asked other fellows to come to help. Another fellow suggested me to move all my circuit downward a bit on the breadboard. Since there are no mistakes in the circuit, the only problem might be the breadboard. After I moved the H-bridge and the circuit downward, everything finally went well, and the H-bridge doesn’t hit up anymore.

https://wp.nyu.edu/sissytian/wp-content/uploads/sites/19379/2021/10/autometicspining.mp4

Then I quickly did step2 and step3, and combine my part with my partner’s. This process is really successful and the drawing machine was built really quickly.

https://wp.nyu.edu/sissytian/wp-content/uploads/sites/19379/2021/10/spining.mp4
https://wp.nyu.edu/sissytian/wp-content/uploads/sites/19379/2021/10/drawing.mp4

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.

After reading ART+Science NOW, I would like to build machines that involve the interaction between humans and the LED board. Peoples’ movement in front of the LED screen can be detected and the LED’s moving image may change according to people’s movement. 

The actuator for this machine might be an infrared distance sensor and an LED screen that fills with LEDs. To be more precise, there need to be many infrared distance sensors, which are used to detect people and their movement in front of the screen. And the LED screen is what shows the moving image and it is how the interactive is showed.

The digital manipulation of this machine is mainly the programming part of the moving image. The Arduino first needs to read what the sensors have detected, which indicates people’s location. The changing values of some sensors indicate the movement of the people. The output of the machine is the changes in LEDs lighting. People’s movement may influence the LEDs’lighting which is embodied on the big screen as a whole picture. The programming of controlling the lighting of the LEDs might be difficult and sophisticated.

I think the creative process is mainly decided on how the LEDs will change according to the data that the sensor detected. It has a wide space for creativity. For example, it can be used for product promotion, or just for fun interaction. The usage can be of a wide range and different creations can be filled with different creativities.

 

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?

I choose the work London Fieldworks (Bruce Gilchrist and Jo Joelson) in collaboration with Dugal McKinnon (composer), Gastarbyter, 1998-2002. 

This work is more advanced than what I have made in class because the actuator is more diverse, the design is more practical, and its overall idea is more meaningful. In the drawing machine that we made in class, the actuator only involves the dial and a stepper motor. But in Gastarbyter, it involves the sensors of physical vibration and tactile simulators, which act as the input of the machine, as well as audible, inaudible sounds, physical vibrations, and neon lights, which are used as an output of the machine. Additionally, the design is more practical, because the drawing machine that I made is not able to draw an artistic fine art, but can only be used to play for fun. However, the artifact made by London Fieldworks is a chair with multiple advanced designs involving sounds and lightings. It is more practical and people may desire to try it. Moreover, the overall idea of the Gastarbyter is really impressive, and many trigger the reflection of the audiences to the culture. 

I think the actuators that the artist selected serves the audience’s visual sense, auditory sense, and tactile sense, which provides a comprehensive feeling for the audience for them to be overwhelmed in that experience. 

Filed Under: Reci_for_Interlab

September 17, 2021 by Shiyuan Tian Leave a Comment

Week 3 | working with sensors

First circuit with Moisture Sensor:

https://wp.nyu.edu/sissytian/wp-content/uploads/sites/19379/2021/09/1.2.mp4

We decided to build the circuit with a moisture sensor first. We first studied the introduction of different sensors and their pictures. After we knew which one is the moisture sensor, we pick it up in front of the classroom. Before we connecting the sensor with the circuit we felt really confused because there are four wires connecting with the sensor, and w don’t know which wire to connect which pin. So I carefully read the introduction page of the moisture sensor and discovered that there was a chart showing which color of the wire should connect with which pin. So I connected the wires according to the chart. We copied the code into the computer and upload it to the Arduino. We tested it with a sponge with water, our finger, and the air, from which we got different output values. So we think it works really well.

int sensorPin = A0;
int sensorValue = 0;
 
void setup() {
    Serial.begin(9600);
}
void loop() {
    // read the value from the sensor:
    sensorValue = analogRead(sensorPin);
    Serial.print("Moisture = " );
    Serial.println(sensorValue);
    delay(1000);
}

Second circuit with Infrared Distance Sensor and Servos:

https://wp.nyu.edu/sissytian/wp-content/uploads/sites/19379/2021/09/2.1.mp4
https://wp.nyu.edu/sissytian/wp-content/uploads/sites/19379/2021/09/2.2.mp4

The second circuit we build is with the infrared distance sensor. We first connected the infrared distance sensor with the Arduino according to the damage showing on the website, copy the code into the Arduino, and uploaded it. I found it works really well. Because when I put it at different heights, it can return different values. And I think it is approximately accurate with what I think of its height.

After that, we tried to connect the infrared distance sensor with the servos to make the servos change its angle according to the distance is detected. So I reuse the code that we have in Thursday’s class. We connected the circles with the Arduino and connected them according to the pin number that we have written in the code.

After we connected the circuit we found that the circuit seems to work well because when we change the distance of the object and the sensor, the servos move. However, when I looked at the supervisor more carefully, I found that it seems not really correct because we were intended to print out the distance that it has detected but the number printed was not the accurate distance. Because I found that when I move the object further, the number gets smaller, but when I move the object nearer to the sensor, then the number gets bigger. I felt it really weird. So I ask for help with the learning assistant. The learning assistant looked at my code and say that the value it is printing out is the raw value because I am using the code that I have been used in class and that raw value has not been calculated into the distance. In the code that I copied from the website, there was a calculate function to change the value that it detected into the distance that I want. so I also need to find and copy that part into my new code file to let it output the distance. So I make some further changes to make it better.

But after I make these changes, I found it is still not working well because the servos seem to rotate not correspond with the distance that the sensor detected. So I ask for help from Eric. Eric look at my code and said that I have some problems with my map function. Because the map function that I used in class is with the variable resistor. And the variable resistor’s range is from 0 to 1023. However, if I want to map the sensor with the servos, I also need to know the sensor’s range. We found that when it does not detect anything, it will show a distance of 405 cm. However, Eric told me that the really useful range is not 405 cm, but 30 cm, because when the distance is bigger than 30 cm it cannot detect the accurate distance. After I changed its range number, I think it works much better.

#include <Servo.h>

Servo myservo;
int SERVO_PIN = 9;

void setup() {

  Serial.begin(9600);
  myservo.attach(SERVO_PIN);
}

void loop() {
        uint16_t value = analogRead (A0);
        double distance = get_IR (value); //Convert the analog voltage to the distance
        Serial.println (value);                 //Print the data to the arduino serial monitor
        Serial.print (distance);
        Serial.println (" cm");
        Serial.println ();
        delay (500);                            //Delay 0.5s

        
  // int pot = distance;

       Serial.print(distance);

       distance = map(distance, 0, 30, 0, 180);
  // pot = map(distance, 0, 1023, 40, 120);

       Serial.print("");
       Serial.print(distance);


  myservo.write(distance);

  delay(500);

  //Serial.println();

}

//return distance (cm)
double get_IR (uint16_t value) {
        if (value < 16)  value = 16;
        return 2076.0 / (value - 11.0);
}


 

Third circuit with Vibration Sensor:

https://wp.nyu.edu/sissytian/wp-content/uploads/sites/19379/2021/09/3.3.mp4

The third circuit we made is with the vibration sensor. We first connected the vibration sensor with the Arduino according to the graphic shown on the website, and then we copied the code from the website into a file. It immediately works really well. We then changed the variable threshold into different numbers and found that when the number is higher, it got more difficult to get a knock, and when the threshold is lower, then it becomes really sensitive to the touches.

// these constants won't change:
const int ledPin = 13;      // LED connected to digital pin 13
const int knockSensor = A0; // the piezo is connected to analog pin 0
const int threshold = 150;  // threshold value to decide when the detected sound is a knock or not


// these variables will change:
int sensorReading = 0;      // variable to store the value read from the sensor pin
int ledState = LOW;         // variable used to store the last LED status, to toggle the light

void setup() {
  pinMode(ledPin, OUTPUT); // declare the ledPin as as OUTPUT
  Serial.begin(9600);       // use the serial port
}

void loop() {
  // read the sensor and store it in the variable sensorReading:
  sensorReading = analogRead(knockSensor);

  // if the sensor reading is greater than the threshold:
  if (sensorReading >= threshold) {
    // toggle the status of the ledPin:
    ledState = !ledState;
    // update the LED pin itself:
    digitalWrite(ledPin, ledState);
    // send the string "Knock!" back to the computer, followed by newline
    Serial.println("Knock!");
  }
  delay(100);  // delay to avoid overloading the serial port buffer
}

Question 1: What did you intend to assemble in the recitation exercise? If your sensor/actuator combination were to be used for pragmatic purposes, who would use it,

why would they use it, a

nd how could it be used?

We intended to assemble a hygrometer, a distance measurer, and a force measurer.

For the hygrometer, it could be used pragmatically in many cultivations filed, such as botanical gardening, greenhouse supervising, or breeding some baby animals, and so on. People who cultivate the plants and animals may use them, because it may help them to keep a better environment for those things which are fragile and have high environmental requirements. It can be combined with the dial plate or electronic displayer to show the humidity number. It can also be connected with the computer to supervise the humidity.

For the distance measurer, it could be used in many places and by many people. For example, when measuring the height of a table or the length of a bed. So that everyone can use it in daily life. Also, it’s difficult for people to measure a building’s height by the tapeline or something, so the infrared distance measurer may be a good way to do that. Just by putting the sensor on one end of the thing that you want to measure and put something at the other end so that you can easily get the number you want from the dial plate or the electronic displayer.

The force measurer, one application I could think of is to use it in an interactive boxing game. While playing the game, you need to hit a sandbag with a piezo inside to detect the strength. Once it reaches a set point, it may count a punch, and there may be some point for the player.

Question 2: Code is often compared to following a recipe or tutorial.  Why do you think that is?

Because the computer reads the code and operates the input according to what the code is written. And the computer is connected with the Arduino and connected with the elements from the pin. So the information from the code can be read by the computer, and pass the Arduino to manipulate the elements. That is why it’s called a recipe or a tutorial.

Question 3: In The Language of New Media, Manovich describes the influence of computers on new media. In what ways do you believe the computer influences our human behaviors?

I think computers make human behaviors stronger and more influential. Because computer is a tool that can control many things, it can become a medium for people to change the outside world. People can use computers to control other things and do things that human beings can’t do by themselves. For example, using computers to control and operate cranes and using computers to monitor indicators. It not only strengthens the power of human behavior but also makes people’s behavior more convenient.

 

Filed Under: Reci_for_Interlab

  • Page 1
  • Page 2
  • Go to Next Page »

Primary Sidebar

  • Nature Of Code
  • Smart City
  • Desert Media Art
  • Immersive art
  • Creative Coding
  • Interactions Lab
  • Communications Lab

Copyright © 2026 · Executive Pro on Genesis Framework · WordPress · Log in