Week 1: Reading Response to “The Machine Stops” (Lu & Syed) Ellen

In the novel “The Machine Stops”, Forster portrays an imaginary world where people create and depend on the Machine. The Machine is made of a huge mechanism under the ground, and all the necessary elements for people to live such as water, air and food are all produced and transported by the tunnels throughout the Machine. Everyone lives in a single room and communicates with each other through the Machine. There is something called “Mending Apparatus” that works in case some parts of the Machine cannot function properly. For people then, “Homelessness” means death. In such a time, people value opinions other than facts, artificiality other than nature, indirect communication other than direct contact, similarity other than difference. People are so dependent on the Machine that when the Machine stops to work, all the people have no choice but to die.

This novel gives several interesting contradictions. The society depending on the Machine seems to be very advanced, but human beings are so primitive that they can do nothing by themselves. People seem to reject any religions and supernatural beliefs, but their actions to worship the Machine and to observe the Book are just like Christians’ respect for the God and the Bible. Kuno seems to be the only prophet who is able to think about the potential crisis and willing to get out of the Machine, but isn’t he just like any other foolish people who only believes what they think is the “truth”?

From my perspective, it is necessary to think about what lead to the death of the humanity in this novel. Kuno says at last: “Humanity has learnt its lesson.” What exactly is the lesson? In the novel, the direct reason seems to be that the Machine stops working. However, the Machine itself doesn’t do anything wrong, because it can neither think nor lead people to death on purpose. After all, it is just a tool created to help people live better. Thus, we can come to the conclusion that it’s humans’ fault of not thinking of the probability that the Machine may stop working that leads to their death. Not thinking of the probability means not doing any precautions to survive without the Machine.

However, why are people so sure that the Machine can’t go wrong? The first reason is that they are born with the Machine, just like we are born with the air. For them, it is beyond doubt that the Machine will work forever, just as it has been doing for centuries before. The second reason is that the society keeps telling them that how perfect and omnipotent the Machine is, while nobody educates them to doubt. All the celebrities (famous lecturers) and authorities (the Central Committee and the Book) teach people to believe in the Machine, while any voice of doubts (like Kuno) are not accepted and understood. The different voices will be exiled from the society, just like Kuno. Any society free of critiques and precautions will come to death.

So basically, there are two lessons for humanity. The first is not to take anything for granted, especially those that determine your life. The second is to learn to be skeptical of everything you receive. In conclusion, do not accept as you learn! Think of every potential crisis and take precautions.

Final Project-Ellen

In this final project, Pearl, Paschal, Jeffrey and I worked together to make the “couple shirts”. This project is meant to express the relationship between a couple A and B: if A needs a hug, she/he will press the button of her shirt. And then the buzzer on the shirt of B will start to scream until B comes to A and the two hug together.

The materials included are: two Arduino boards, one sending the signal and the other receiving; two 220 resistors for the buzzers to work; two buzzers, each attached to one Arduino board; two 10k resistors; two batteries, two cotton shirts, several wires and some conductive fabrics and threads.

The missions were divided to each of us before we started to work. I have the part of getting materials, Paschal and Jeffrey write codes, Pearl sews and fixes the circuits onto the shirts. On Friday I went to the fake market and got two cotton shirts, while Paschal sent the picture of circuits to our group chat. I completed the circuit according to the diagram of Paschal, and the next day we met together and fixed the circuits onto two pieces of fabric. The fabrics then were sewed onto the shirts with batteries on.

/*
  AnalogReadSerial

  Reads an analog input on pin 0, prints the result to the Serial Monitor.
  Graphical representation is available using Serial Plotter (Tools > Serial Plotter menu).
  Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.

  This example code is in the public domain.

  http://www.arduino.cc/en/Tutorial/AnalogReadSerial
*/
const int sensorPin = 8;     // the number of sensor. it is digital
const int output = 13;

int sensorValueSend=0;
int sensorValueReceive=0;
// the setup routine runs once when you press reset:

void setup() {
  // initialize serial c ommunication at 9600 bits per second:
  Serial.begin(9600);
  pinMode(sensorPin, INPUT);
  pinMode(output, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  
 
  sensorValueSend = digitalRead(sensorPin);   // read the input from the sensor
  sensorValueReceive=Serial.read(); //read input from the Arduino

  // send the read value to the other Arduino:
  Serial.write(sensorValueSend);

  if (sensorValueSend==LOW ){
    if (sensorValueReceive==LOW){
      digitalWrite(output, LOW);     
    }
    if (sensorValueReceive==HIGH){
      while (sensorValueSend==LOW){
        digitalWrite(output, HIGH);
        sensorValueSend=digitalRead(sensorPin); //read input from the sensor again    
      }
           
    }
  }

  else if (sensorValueSend==HIGH ){
    if (sensorValueReceive==LOW){
      
      digitalWrite(output, LOW);     
    }
    if(sensorValueReceive==HIGH){
       digitalWrite(output, LOW);    
    }
  }
  
 //now compare the send and received values
  delay(10);        // delay in between reads for stability
}

Rudi-Ellen Final Project

This final project is based on the interaction between a captured live video and two LEDs.

The reference was the BrightnessThresholding sample code in the examples of  Processing. What I want to do is to let the LEDs blink according to where a small dot travels inside the Processing screen. To realize this goal, I need to do the following things:

  1. capture the live video with a camera;
  2. let the video be black and white so that I can easily divide different areas of the taken screen;
  3. create a dot that travels inside the video;
  4. let the dot change its color every time it travels to a different area;
  5. let the red LED light when the dot travels to black areas; let the green LED light when the dot travels to white areas.

At first, I was thinking about using a class to create a function of the traveling dot. However, after writing the code out, I found that the color of the dot cannot change according to different colors of the area it’s in because the variable c(color) in the fill() function is not a global one — it is in the class dot(). The function cannot understand it. So I tried to delete the class part of my code and directly describe how the dot travels and changes its color in the void draw() part.

This is the code of Processing:

import processing.video.*;
import processing.serial.*;

Serial myPort;
int valueFromArduino;

int c;
int xpos = width/2;
int ypos = height/2;
int xspeed = 10;
int yspeed = 10;

color black = color(0);
color white = color(255);
int numPixels;
Capture video;

void setup() {
size(640, 480);
strokeWeight(5);
video = new Capture(this, width, height);

video.start();

numPixels = video.width * video.height;
noCursor();
smooth();
printArray(Serial.list());
myPort = new Serial(this, Serial.list()[1], 9600);
}

void draw() {
if (video.available()) {
video.read();
video.loadPixels();
int threshold = 127;
float pixelBrightness;
loadPixels();
for (int i = 0; i < numPixels; i++) {
pixelBrightness = brightness(video.pixels[i]);
if (pixelBrightness > threshold) {
pixels[i] = white;
}
else {
pixels[i] = black;
}
}
updatePixels();

int testValue = get(xpos, ypos);
float testBrightness = brightness(testValue);
if (testBrightness > threshold) {
c = 0;
myPort.write(‘H’);
}
else {
c = 255;
myPort.write(‘L’);
}

noStroke();
fill(c);
ellipse(xpos,ypos,10,10);
xpos = xpos + xspeed;
ypos = ypos + yspeed;
if (xpos > width) {
xspeed = xspeed * -1;
}
if (xpos < 0) {
xspeed = xspeed * -1;
}
if (ypos > height) {
yspeed = yspeed * -1;
}
if (ypos < 0) {
yspeed = yspeed * -1;
}
}
}

This is the code of Arduino:

int valueFromProcessing;
int ledPinG = 12;
int ledPinR = 13;

void setup() {
Serial.begin(9600);
pinMode(ledPinG, OUTPUT);
pinMode(ledPinR, OUTPUT);
}

void loop() {
while (Serial.available()) {
valueFromProcessing = Serial.read();
}

if (valueFromProcessing == ‘H’) {
digitalWrite(ledPinG, HIGH);
digitalWrite(ledPinR, LOW);
} else {
digitalWrite(ledPinG, LOW);
digitalWrite(ledPinR, HIGH);
}
delay(10);
}

This is the final effect:

 

Idea Hat Project

In this project, I and Tyler plan to improve our “Big Idea” project. We want to actually put it on an actual hat with a smaller Arduino and a lighter power source. In that case, we first think of a beetle Arduino which has a same size as a coin. However, the thought is not practical because the power source needed for the beetle Arduino is far too heavy and big to be put on a hat.

Under the help of Nick, we use a small piece of H-bridge and a small device called ATTiny to constitute our own version of “Arduino”. It can hold our code like a real Arduino board but much smaller and convenient. Also, the battery it needs is a small one of 3.7V. The H-bridge can change the power for LED to 5V. We solder wires onto the little device so the main part of the circuit is completed. We use tape to bind them onto the hat’s fabric so that we can confirm the positions of different parts of the circuit.

The next step is to sew those parts onto the hat. Tyler uses some conductive threads to connect the circuit, and I use normal threads to fix the heavy battery and wires. The hat is done!

 

Ellen- Rudi 3D Tinkercad object

In this recitation, we are asked to create a virtual 3D object on the Tinkercad website. In order to create something wearable, my final object should be small and light. I chose the stepper motor as the device that will be fixed on the object.

The first step was to learn the size of the stepper motor. From the data in the “stepper motor” link I knew the size.

I want to fix the motor inside the object. So in Tinkercad I created a square base which can hold the stepper motor upward. The base is 80(L)*70(W)*10(H)mm in size.

Then according to the size of the stepper motor, the main body should be 42.3(L)*42.3(W)mm. So I created a transparent square in 42.3*42.3mm.

There is a small square that includes the wires. In order to put in the wires, I made the square a little bit longer in length. The small square is also transparent.

I moved the three together then grouped them. In that way, a hollow object is done.

According to the data, the height of the stepper motor is 34mm. So I copied the object and pasted it three times. I put them together to reach 34mm height and grouped them. So the basic model was done.

Then I think I should create a base for it to fix the stepper motor. So I created a square of 80(L)*70(W)*5(H)mm and grouped it with the basic object. The fixed object looks like this:

The last problem is to consider how to make it “wearable”. I created two transparent cylinders of height 90mm. The circle is 2*2mm in diameter. I put them inside the object and grouped them so that the thread can be put through and people can sew the object onto the clothes.

Ellen – Rudi Recitation: Drawing Machine

In order to create the drawing machine, I first took the materials I need from the material table. Then, I built a circuit according to the picture shown in the recitation blog. The complete circuit looks like this:

Then I added a potentiometer in this circuit in order to control the arm of the drawing machine. In this step, the rotation of the motor was controlled by the rotation of the potentiometer.

The next step needed another person to work together on. I and Fernando worked together and created a Processing sketch that controls the motor rotation by the mouse of the laptop. In the Processing, if the mouse moves to the left side of the screen, the motor will rotate clockwise. If the mouse moves to the right side of the screen, the motor will rotate anti-clockwise. As we bound two arms of the drawing machine together, the drawing machine will have four types of moving model in total.

The Arduino code and Processing code are as follow:

Ellen’s final project description

Fantasy world

In the final project, I would like to create a fantasy world in the Processing play-screen using a 3D effect. This fantasy world will be a space filled with lots of objects in different shapes, and each shape represents a motor connected to Arduino in reality. When you stand in front of my laptop screen, your image will be taken into the Processing play-screen. In that way, you will see a figure of yourself in the created 3D space. Whenever you move, the figure of yourself in the screen will also move according to your movement, so your virtual figure will touch the different objects. Whenever an object is touched, the motor it represents will start to run until it is touched another time. The motors will be connected with fans, so you will experience wind from different directions!

This project was originally inspired by my favorite game Honkai Impact 3rd. This is a 3D game which is processed so beautifully that I want to share the beauty with all the people who will experience my project. However, it is not realistic to create the delicate battlefield in such a short time during final and it is meaningless to create an independent environment without interaction with the reality. Therefore, I thought about changing the environment and adding a live video of a human figure. Also, according to my original thought, the Arduino part would be an LED and a buzzer. Rudi pointed out that I should use something different from the speaker and light of a computer. In that case, the LED and the buzzer were changed into motors.

My project has its own target users. Nowadays people spend a lot of time sitting in front of the computer, so many lack exercise. My project can attract those who are fond of video games and lack exercise. When they move their body according to the positions of the objects in the virtual space, they can do a pleasant exercise. To reach that goal, the fantasy world in the play-screen should be created very beautifully in order to attract others.

For this project, the interaction will be between human movements and motor-running. Through controlling the value sent from Processing to Arduino, the motors are controlled to run without people really pushing a button. All the user needs to do is to look at the screen and to try to “touch” the objects on the play screen. Since this project was inspired by the game Honkai Impact 3rd, I think the interaction between the gamer and the virtual scene is really well done because the game adds the gravity special effect when the characters move and fight. I think that can be a reference for my own project.

Big Idea – Ellen

I and Tylor are grouped in this project. When thinking about the project, Tylor came out with an idea that we make a hat with a circuit that can light up when we touch it, as if the person who wears the hat has come up with a good idea. The original name for the project was “idea hat”. However, we found it too hard to put the circuit on the hat, so we replace the hat with a little bulb made of yellow fabric so that the project can be easily put into practice. Also, the name of the project was changed into “big idea”.

In that case, we first referred to one of the examples. Basically, the materials included are: an LED; a 220Ω resistor; a 10kΩ resistor; two pieces of conductive fabric; several pieces of felt; several wires; an Arduino board; a battery. At first, we would like to test our circuit and code simply, so we have a breadboard and a push button in the test version.

We based our code on the sample code “button”. This code allows us to make the LED light when the push button is pressed. However, we would like to have our LED blink when we touch the pushbutton once and light off when we touch it for a second time. Therefore, we asked for help from Antonious, and he advised us to use the “boolean” function. The completed code looks like this:

In the loop() function, it is important to fix the variable2 in its former repetition. The digital signal changes every time when the loop() repeats, so variable1 is different. Compare the changed variable1 with the fixed variable2 so that the LED can hold its status (either blinks or off) until the button is touched for the second time.

The test version on the breadboard looks like this:

When we replaced the pushbutton with the conductive fabric, we made a piece of felt with a hole between two pieces of conductive fabrics.

This is the final project:

/*This project is for course Talking Fabrics 2017 November 14. The whole circuit will be on a piece of fabric.
 Materials included:
 LED;   220 resistor;   10k resistor;    wires in different lengths;    conductive fabrics;   Arduino board;   battery.
 Actually the test version will include a pushbutton and a breadboard. But we will replace them with two pieces of
 conductive fabric and a long piece of felt. This is why the code includes "pushbutton" but the project doesn't.
 This project is called "big idea". If you touch the fabric, the LED will start to blink quickly as if it has a great idea!
 */

const int led = 12;               //LED on pin 12
const int pushbutton = A0;        //pushbutton on A0 from 5V; 10k resistor on A0 from ground

int variable1 = 0;              //set a variable "variable1" to measure whether the pushbutton is pressed or not
boolean onoroff = false;          //hold a variabe "onoroff" and let it first be false in boolean
int variable2 = 0;                  //set a variable "variable2"

void setup() {
  pinMode(led, OUTPUT);           //let the LED be the output
}

void loop() {
  variable1 = analogRead (A0);  //read the value from pin A0 controlled by the pushbutton

  if (variable1 > variable2) {
    onoroff = !onoroff;           //if pushbutton pressed, hold the status of the following codes
  }
  if (onoroff == true) {          //if the pushbutton is pressed for the first time
    digitalWrite(led, HIGH);
    delay(100);
    digitalWrite(led, LOW);
    delay(100);                   //LED blinks

  } else {                        //if the push button is pressed for a second time
    digitalWrite(led, LOW);       //LED doesn't light
  }
  variable2 = variable1;          
  //fix the value of "variable2". When the loop() goes forward to the next repetition, compare this "variable2" with the next "variable1"
  delay(10);                      //for stability
}

Feedback for IMA Boomerman form Ellen

The IMA boomerman is a very interesting project to me. Basically it is a game played by two players who uses the remote control to place booms in order to kill each other on the computer. When both are killed at the same time, the winner will be the boom Jiwon.

This is very interactive! I really like the project because it engages two players at the same time. But I think this game can be improved by adding some hints of when the player is killed because the computer is much faster than human reaction. If there is no hint of when the player gets hit,  the game is then ended with neither player getting satisfied.