Self-Portrait

So when I started this assignment, I was definetely going for a badly animated weird-looking version of myself: this is my disclaimer.

I basically just used a combination of very simple shapes and lines in a specific order to create a face. I struggled the most with the arc, because it took me so long to figure out the numbers. In the beginning, I think trying to estimate the coordinate points and figure out what goes where in regards to numbers was the most challenging. But after a base is set up and parameters are set, it makes things easier. This is how my project ended up looking with my code:

 

Casey Reas’ Eyeo talk Response

While this talk contained a large number of very interesting random based artworks, I felt that it lacked a point. While it was stated that different balances of randomness and control explore different concepts, there was little analysis of this point. I would like to do this analysis myself, but the reason it is so difficult is because fundamentally what was described is a tool, and the primary purpose of of the talk seems to be to emphasize what the randomness itself brings to art, even when done with simple graphics. I personally felt that the most interesting and aesthetic pieces were where the algorithms were the most sophisticated, as the results had a geometric appearance at each static moment but moved very organically. However, as I mentioned this juxtaposition was under-analyzed, and mostly this was just a series of very cool images and some hint of the underlying algorithms, at least to me.

Making Interactive Art: Set the Stage, Then Shut Up and Listen – Response

As someone who doesn’t like to read the manual and jumps straight into pressing all the different buttons on a new gadget that I buy, it was really interesting for me to read how the author says that in designing an interactive artwork, one would give the audience the basic context, then get out of their way. This made me realise that my interaction with any device was probably planned to guide based on this idea.

Physical Computing’s Greatest Hits and Misses – Response

Throughout this course, I had assumed that I have to produce something original – original being something that never existed. This made me stress so much at the planning stage, leaving no cognitive resources for the actual building and programming stage. From this reading, I have learnt that just because something has been done before, doesn’t mean it isn’t original and I will try to incorporate this into my future projects by adding a new component to something that may have been created before to create a new story.

Motors: Human Movement Project

  1. My plan for the project was to create a spinning ballerina. I tried to wire up two DC motors to the Arduino board, but only one would work successfully. Adham helped me figure out that the Arduino probably doesn’t have enough energy to power two DC motors, so he let me borrow his motor shield.
  2. The motor shield was able to successfully power two DC motors. It was really easy and straightforward to work with it.
  3. When I used plain paper and stuck them on the DC motor, they would be too flimsy and easily fly off. Instead, I pasted an A4 image of a ballerina on the back and front side of the tissue-box cardboard material as opposed to normal cardboard, which was too thick. I used electrical tape so the cardboard wouldn’t fly off as the DC motors are quite powerful. I lowered down the speed from 20 to 80, as a speed of 150-180 appeared quite unnatural for a spinning ballerina and was too fast for the material to stay on properly.

Sometimes, the motors wouldn’t be in sync so the lower and upper part of the ballerina can appear unnatural. Also, the gap of motors between the ballerina’s upper and lower body again appears unnatural, but I couldn’t think of any other alternative to solve this issue. Lastly, if I had more time, I would have liked to create a strong holder for the spinning ballerina, so I don’t have to use my hand to hold it together (which appears unprofessional and can create unreliable outcomes).

Stupid Pet Trick & Assignment 4

For my stupid pet trick, I started with the idea that I like to bully my brother by repeating an action that creates an annoying sound. So I decided to make something that you can put on the door to create continuous knocking sound until the person has to come to the door to find out what is happening.

When the door is closed, the person with the controller can push the button to start the knocking and use the potentiometer to control the speed of the knock. When the person inside the room finds the sound annoying and opens the door to see who is outside, the knocking stops.

Here is the code I used for the stupid pet trick:

#include ;

int angle = 0;
Servo myServo;
int button = 3;
bool onOff = false;
bool prevButtonState = LOW;
int knob = A0;

void setup() {
pinMode(button, INPUT);
myServo.attach(9);
Serial.begin(9600);
}

void loop() {
bool currButtonState = digitalRead(button);
int knobState = analogRead(knob);
int knockSpeed = map(knobState, 0, 1023, 0, 350);

if (currButtonState == HIGH && prevButtonState == LOW) {
onOff = !onOff;
}

if (onOff) {
for(angle = 0; angle < 90; angle ++);
myServo.write(angle);
delay(analogRead(knockSpeed));
for(angle = 90; angle >0; angle –);
myServo.write(angle);
delay(analogRead(knockSpeed));
} else {
myServo.write(LOW);
}

prevButtonState = currButtonState;
}

Developing on my stupid pet trick, I created a small scale demonstration of the device in action. In doing so, I made the device work more automatically by getting rid of the button and the potentiometer, so now, the knocking continues when the door is closed until the door opens.

Here is the code I used for Assignment 4:

#include ;

Servo fistServo;
int button = 3;
bool onOff = false;
bool prevButtonState = LOW;
int knockRate = 500;
bool knockOn = false;
unsigned long currentMillis = 0;
int knockDirection = 0;
int nextKnockTime;

void setup() {
pinMode (button, INPUT);
fistServo.attach(5);
Serial.begin(9600);
fistServo.write(30);
}

void loop() {
bool currButtonState = digitalRead(button);
Serial.println(currButtonState);

bool prevOnOff = onOff;
onOff = currButtonState;
if (onOff)
currentMillis = millis();

if (currentMillis > nextKnockTime) {
knockOn = true;
nextKnockTime = currentMillis + knockRate;
}

if (onOff) {
if (knockOn) {
if (knockDirection == 0)
fistServo.write(30);
else if (knockDirection == 1)
fistServo.write(0);
knockOn = false;
knockDirection = 1 – knockDirection;
}
}
}

Physical Computing’s Greatest Hits and Misses Response

Taking an already existing idea and building onto it is great. Just take a look at the world’s most valuable tech company, Apple. Apple has been lagging behind in terms of groundbreaking innovation in recent years (despite their wild claims repeated 100x during their keynotes). Yet, their devices are still selling well enough to keep them atop that list. Why buy Apple’s products when you can just as easily spend your money on something that’s actually fresh and new? For many of us, the answer is simple: Apple’s products are designed and manufactured to such a high level of reliability that we would rather be a few months/years late to a technology than have it now and have it break in a couple of days. Apple knows this and they are not afraid to keep taking existing ideas, perfecting it, and spice it up with a cool minimalistic, Apple design.

Making Interactive Art Response

The author/artist can try to incorporate his/her intention when creating the piece. Whether or not that intention translates into reality is completely up to the audience/user. Without the aid of a forceful “user manual”, it is almost impossible for the author to accurately convey his/her intentions to all of his/her audience, especially since artists are notoriously bad at portraying their message clearly. What happens then is that users make wild guesses and end up interpreting the piece/item in a way that was not aligned with the author’s intentions… and that is how its true utility and/or significance is born. As authors/artists, we should strive to be open to letting our work go once we’ve completed it. Let it stretch out its wings and explore the cruel realms of humanity. Let it discover its true purpose and be whatever it is destined to be. Perhaps, its destiny is was far more remarkable than the one you envisioned for it.

Human Motion Simulation

Initially, I wanted to create a slapping machine that would wack us across the face with a palm shaped cardboard cut out. But then, that kind of seemed too dark so I opted to make a leg that would simulate the kicking motion.

I used a few pieces of acrylic that were cut into rectangles to form the actual leg and I implemented a standard servo motor to generate the motion. The motion was triggered by a button. To finish things off, I added some lovely decorations that would bring the device to life.

My code:

#include <Servo.h>

Servo myServo;

const int servoPin = 5;

const int buttonPin = 3;

bool buttonState = LOW;

bool prevButtonState;

void setup() {

// put your setup code here, to run once:

pinMode(buttonPin, INPUT);

myServo.attach(servoPin);

Serial.begin(9600);

}

void loop() {

// put your main code here, to run repeatedly:

buttonState = digitalRead(buttonPin);

Serial.print(buttonState);

if (buttonState == HIGH && prevButtonState == LOW){

myServo.write(30);

delay(500);

myServo.write(160);

delay(100);

}

prevButtonState = buttonState;

 

}

Device Demo:

 

 

 

Response – Physical Computing’s Greatest Hits (and misses)

This article presents us with a list of most reoccurring themes in the field of physical computing design. Most projects can be reduced down to very simple concepts. As I read through the list, I realized that I have the knowledge to handle most of the technicalities. Therefore, a lot of emphasis should be put on how to creatively use the same old concepts to give people difference experiences.

Therefore, there is no shame in making something that has been made somewhere by someone. There is value in repeating someone else’s work and add your personal touch to it later.