Motor Project : Blinking Eyes

For the human movement with a motor project I’ve picked blinking, which seems a very simple movement of the eyelids in everyday life, however, it turned out to be a nightmare to build the blinking mechanism.

I went through a bunch of ideas when it came to coming up with a mechanism to make the eyes blink, and the most appropriate seemed the mechanism that is used by the puppeteers. So I then researched how that mechanism works and tried recreating the mechanism using what I had in the lab : a bunch of popsicle sticks, cardboard, rubber bands, paper, some wires and a bunch of hot glue.

I mean, I was expecting this assignment to be less bout writing the code for the arduino and the motor, and more about constructing, but this one turned into a serious mechanical engineering assignment for me.

I made the eyes simply by wrapping tennis balls with paper, but then I needed the eye lids. I thought of manny different things, even about making a clay mold, but clay takes too long to dry. Somehow I come up with using hot glue to make the eye lids, and since that point hot glue became my best friend for the project. I wrapped the eyes with another layer of paper and drew a grid with hot glue on top of it, so that when the glow dries, it holds the spherical shape of the eye. Then, I cut the excessive paper off the sides, and those were my eyelids.

After I had my eyes and my eyelids, there came the time for making the mechanism. Out of all the material I went through to figure out how the puppet’s eyes blink, I found this video the most useful one.


https://youtu.be/4e-Y5e2ttWY


So I decided to replicate it using cardboard, popsicles and rubber band. The middle part, or the lever, was not stable enough since it was made of cardboard, so I had to come up with some construction that holds it in place and does not let it fall on the side.

To construct the lever, I drilled four holes in the popsicle stick, and then also glued some additional support to each side of the stick, so that it does not split when the pressure is applied. Apparently popsicle sticks are very fragile due to being very thin, so they split and break very easily.

This is the close-up of the lever with the wire and rubber band put through it. 

And this is the top view of the construction, it gives a greater understanding of what is attached where and what helps to support the construction.

Having built that, after gluing some popsicle sticks to the back of the eyelids so that they close whenever the lever is pulled down, it was time to understand how to attach the metal wire I am using to pull with to the motor. Luckily for me, I found a motor that is attached to a gear set and a wheel, which slows the rotation speed of the motor by a lot, so I just had to connect the spinning motion of the wheel to pulling the lever.

I glued a stick to the wheel and then attached a piece of rope to it. But it didn’t work that well because the rope would wind around the stick and cause the whole mechanism to shut down.

So know I knew I needed something that is not stretchy or soft like a piece of rope, so I’ve glued a bunch of popsicle sticks together to see how they would work, as if I drill a hole in a popsicle stick, there is nothing to get winded on the motor. 

And this is how I attached it to the lever

But now there was another problem that never happened when I was using rope: after rotating for 90 degrees, the motor would not do the rest of the circle, because the eyelids are pushed against the box and there is no space to go lower than that. And since the stick cannot stretch, it does not forgive. With the help of Aaron, I understood that the problem is the position I chose to attach the stick to the lever. I attached the stick to the lever when the motor wheel was at its highest point, and the eyes were in “resting” position, and the wheel was too big to go all the way down without causing the eyelids to push against the box. The fix was to attach the stick to the lever when the wheel is at its lowest point (which it could not reach with the previous setup) and then to the eyes that are closed (the lever pulled).

Now the wheel could make a full circle! Even though with a little help when it had to pull the eyelids, because the motor was not strong enough, but besides this one point it was getting stuck at due to the lack of power, it did the rest of the circle on its own!

Here is how they blink.

Ninja Panda (Stupid Pet Trick)

Once I knew the assignment was called “Stupid Pet Trick”, I knew that I wanted to use an actual toy pet for this assignment, instead of using boxes and cardboard, which I’ve been using for the previous assignments.

What can one do with a pet? There are many things that come to mind, but I remembered one thing I used to do to my cat (out of pure love, of course) when I was around 8 years old. Sometimes I would hug my cat so tight that he wouldn’t like it and make a sound that would make me let him go.

For this project, I’ve decided to modify the idea of hugging a little bit, since I can do more with a toy pet than I can with a real one. I wanted to put RGB LEDs behind the pet’s eyes, so that they change colour depending on how hard you squeeze the pet (indicating pet’s level of discomfort). For the squeezing part I’ve put a pressure sensor inside the pet. Also, I did not forget about the sound that my cat used to make, so if someone applies too much pressure on the pet, it would also make annoying sound that should make the person who is squeezing it to release the grip.

At first, I went to the store and bought this adorable seal, but then I found it too cute to dismember 

Shreya was kind enough to offer me her “ugly” panda, and I found it a better toy at least because it was bigger in size, and also not that cute, which made my butchering process less heartbreaking.

The hardest part was taking panda’s eyes out, because they were literally screwed into a piece of plastic (I assume so that kids cant pull them out easily), so it took me an hour at least, and two pair of pliers to take the eyes out without damaging the fabric around the eyes.

They were also coloured green on the inside, and I wanted them transparent, so I had to use acetone to get rid of the paint. Wiping it with a tissue did not get much of paint off, so I decided to let the eyes soak in the acetone. It did a great job getting rid of the paint, but it also melted the eyes…

So they looked really creepy:

Because of this, I ended up using googly eyes, which in my opinion fit the bear even better, and was easier to put LEDs behind them.

 

To put everything inside the bear, I had to take the stuffing out, put the pressure sensor inside his body, glue the LEDs behind his eyes, place the piezo buzzer in his head and gently put the stuffing back without pulling any wires. This is how it looks from behind with all the wires sticking out

My first thought was to saw it back together, but then I would not be able to open it in case I needed to fix or readjust something. I ended up using a velcro strip that I stitched to one side of the fabric, and there was even no need to stitch another strip to the other side, as velcro would perfectly stick to the fabric the bear was made out of.

This is how its back looks closed

After fitting everything in I just had to slightly adjust the placement of the LEDs, but that was no big of a deal. It ended up being more stable and pull-resistant than I thought it would be, and does not even look that terrible after I restuffed it .

Here is how it looks from the front, and how it reacts when someone puts a lot of pressure on its stomach. Still looks a little creepy 🙂

 

A better version of DJ station (Almost)

For the music instrument assignment I’ve decided to sort of expand on my last assignment, where LEDs would light up depending on the distance of the hand(head, whatever one puts) from the infrared light sensor. So for this project I am using the same infrared light sensor, which is connected to the piezo. Now, depending on the distance of the hand from the sensor, piezo will be making sound of different frequency.

Since I am using two piezo buzzers, one of them is programmed to output frequencies between 31Hz (the minimum that it can produce on the Red Board we are using) and 2000Hz, and the other one is set to 2001Hz to 5000Hz. I chose 5000Hz to be the highest frequency just because above that is makes REALLY annoying sound, however, the difference in the timber is not that noticeable any more.(Although initially I had one piezo have the range between 31Hz and 10000Hz, and the second one 10001Hz to 20000Hz, but it did not work that well.)

 

At first, I tried making two piezos buzz at the same time, while both of them were connected to one Red Board, however, once I had one piezo working the way I wanted to and then copy-pasted the code and changed it just a bit to fit the other piezo, the first one stopped working the way it should, and the second one never produced a single sound. As I figured later, it is really hard to make two piezos buzz simultaneously when connected to the same Red Board, unless I use some very fancy tone library that I had no idea how to use really, as the language used in the library was something I have not encountered before.

 

Thus, I ended up using two Red Boards, one for each piezo, with the pretty much the same code, except for the difference in the frequency setting for the piezo. I wish I have decided to use two Red Boards before spending 3 to 4 hours trying to figure out how to make two piezos buzz at the same time from the same Red Board. However, I think this was still a great experience trying to figure it out.

Another very useful thing that I was introduced to was mapping, as instead of writing hundreds of lines of code so that one value I was getting from analog corresponded to a certain frequency range, I just had to map the value with the frequency range, which is just a couple of lines of code.

Here is how it looks:

const int analog = A0;
const int buttonPin = 2;
const int piezoPin = 3;
int frequency;
int frequency1;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(buttonPin, INPUT_PULLUP);
}
void loop() {
// put your main code here, to run repeatedly:
int analogValue = analogRead(analog);

Serial.print("button: ");
Serial.print(digitalRead(buttonPin));
Serial.print(" sensor 1: ");
Serial.println(analogValue);


if(digitalRead(buttonPin) == LOW){
frequency=map(analogValue,180,600,31,2000);
tone(piezoPin, frequency);
delay(20);


}
}

To make it look less chaotic and hide all the wires that I’m using, I have decided to reuse the same box I used for the previous project. And so I stuffed both Red Boards and all the wires in the box.

This is how it ended up looking and how it works:

LED height measure (re-upload)

It was really hard for me to think of an analog sensor that will make LEDs do something unexpected, so I would say that coming up with the idea of what I want to do was the most challenging part of this assignment.

My initial idea was to make LEDs indicate your height in some way, thus the problem was with picking with the right analog sensor for that purpose. At first, I’ve been thinking about using the light sensor, but then I would have had to set them up on the wall, so that depending on the height different amounts of sensors would be covered and hence the LEDs would react to that. But I knew there was an easier way of making my idea come to life, and thats when I was advised to use the infrared light sensor, and that idea appealed to me. I thought that using an analog sensor that we have not covered during the class time will be interesting, thus my choice landed on the infrared light sensor.

First, I looked at the values I was getting from the sensor, so that I knew what range of values to use in my code. The range I got was 120-600, thus I split this range into 5 somehow equal parts and used 5 LEDs, each of the LEDs corresponding to a certain range of values.

This is the code:

const int analog = A0;
int ledPin1 = 2;
int ledPin2 = 3;
int ledPin3 = 4;
int ledPin4 = 5;
int ledPin5 = 6;


bool ledState1 = false;
bool ledState2 = false;
bool ledState3 = false;
bool ledState4 = false;
bool ledState5 = false;

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
pinMode(ledPin5, OUTPUT);

}

void loop() {
// put your main code here, to run repeatedly:
int analogValue = analogRead(analog);
Serial.println(analogValue);

if(analogValue < 600){
digitalWrite(ledPin1, HIGH);
ledState1 = true;
}
if(analogValue < 500){
digitalWrite(ledPin2, HIGH);
ledState2 = true;
}
if(analogValue < 400){
digitalWrite(ledPin3, HIGH);
ledState2 = true;
}
if(analogValue < 300){
digitalWrite(ledPin4, HIGH);
ledState2 = true;
}
if(analogValue < 200){ digitalWrite(ledPin5, HIGH); ledState2 = true; } //OFF CASES if(analogValue > 600){
digitalWrite(ledPin1, LOW);
ledState1 = false;
}
if(analogValue > 500){
digitalWrite(ledPin2, LOW);
ledState2 = false;
}
if(analogValue > 400){
digitalWrite(ledPin3, LOW);
ledState3 = false;
}
if(analogValue > 300){
digitalWrite(ledPin4, LOW);
ledState4 = false;
}
if(analogValue > 200){
digitalWrite(ledPin5, LOW);
ledState5 = false;
}

}

The trickiest part here was soldering all the wires, because I have decided to make this height-measuring this look somehow pretty.

When I finished soldering and closed the box, everything was working fine except for one light, and my computer kept restarting for no reason. And I could not figure out what was happening for good 15 minutes, because I kept checking the connection and if everything was plugged in right, and it was. Then James saw that the bare wires soldered to the legs of the LED were crossing, creating a short circuit. Once we put these wires apart, everything started working right.

Here’s the final product:

On the Design Lecture

The first 10 or so minutes of the lecture were quite interesting, since I did not know where the whole thing about design was going. And I was engaged when it was mentioned that the lecture will not try to define design.

Then, however, as the lecture progressed, I did not find anything particularly enlightening for myself, maybe except for the claim that thinking design is somewhere between engineering and art is wrong. The rest I found quite boring to be honest, especially since the person, who was lecturing (I cannot remember his name), said he was open for changing his views on the idea of design, and when anyone asked a somehow complicated question that was contradicting the lecturer’s viewpoint, he would responding asking to define a chair. As I see it, literally the whole lecture came to whether it is possible to define a chair in a way that nothing else, but a chair, will fit the definition.

This made me think that the lecturer was not actually as open to different perspectives on design as he claimed he was, thus, listening to “can you define what a chair is?” multiple times made me quite upset.

On “Design Meets Disability”

I was surprised by how enlightening Graham Pullin’s “Design Meets Disability” was. Besides the conversation whether the objects for disabled people should have “universal” design, or should the design of those objects be focused on the small percentage of the population(disabled), I found the beginning chapters of the reading very informative. The chapter on glasses was particularly surprising,in particular the part that says that people, wearing glasses in 1930s were considered patients,and glasses considered to be medical appliances that were causing social humiliation. I have never thought about people with eyesight problems as disabled in any way, and the perspective that people had on glasses in the 1930s was quite shocking for me.

Its quite fascinating how people’s perception and needs change over time, especially when it comes to design. As mentioned in the second part of the reading, nowadays, living in such a complex world, people are looking for simplicity: “visual, functional, interactive”. And answering the question of whether the design for disabled should be “universal” or focused on the specific group of people, I would say that it should be simple first, and once it is simple, I think it becomes universal (just like an iPod example mentioned by Pullin).

On interactive art and original ideas

In the “Making Interactive Art” article Tom Igoe emphasises the difference between a work of art and interactive work (of art). The first one being a work of expression and/or a statement, and the letter being a conversation between the device or environment you build, and the people who are experiencing it. And if the conversation goes well, then people will understand what one wanted to express through his interactive work, and this point, at least personally for me, an interactive work becomes an interactive work of art, as not only one creates an environment that makes people take actions, but also expresses something through the experience people go through in this environment.

Of course, different people will act in the interactive environment one has built in various ways: they can understand it or not get the idea at all, or use the ‘interactive’ parts in a way that was not quite expected. Thus, Igoe argues that the audience to which one presents his interactive work to actually completes the work through what they do to it, as the audience might “ uncover their story, and their own emotional interpretation of the work”.

In the Physical Computing article, Igoe reassures that people should stop giving up on their ideas just because they think that if it has been done before, its no longer worth spending time for making something alike. And this idea was very relatable for me, coming from Film background, as we have to write new scripts for films often enough. And at some point I started giving up on ideas for scripts, just because something similar has been done before. However, then I was explained that there is really only about 7 original stories, and then everything that is produced is just  different take on the pattern of the same story, thus, there is no “original” story one can come up with any more, as every story fits a certain patter.

Is using a touchscreen really better than using hands?

Bret Victor’s article made me think about things I have never really given much thought to before. I knew that the future is going towards the improvement of touch screens and their implementation nearly everywhere, however, it never really bothered me before I’ve read “A Brief Rand on the Future of Interactive Design”. And now, thinking about it, there is no doubt that the “Picture Under Glass” technology is replacing a better part of human interaction, which is done with hands.

Using hands to feel things is one of the first practices a human does: a newborn baby starts discovering the word by touching things (and often then putting them into their mouth, but that’s a different story). Deprived from the sensory experience, the individual “thwarts [one’s] all-around development”. And I personally agree with Victor and think that a future in which different types of hand manipulations are replaced with one repetitive “swiping” movement is not something we should be looking forwards to.

Whack a Mole (LED version)

For the second project, I’ve decided to do a game of some sort, which resulted in being a version of a Whack-a-Mole game with LED lights instead of Moles.

For the simplicity’s sake for now, the buttons are right in front of the LEDs they correspond to color-wise, however, they can be switched places so that it is harder to play the game, since in will take more time to figure out which button to press.

The idea behind the game is very simple: once the light turns on, one has to press a button of a color correspondent to the color of the LED that is on.

The game can be reset with a reset button.

Here is how it looks:

The game lasts until one makes three mistakes. Here is the example:

There is a couple of things I am still planning to work on:

1)Now the game starts whenever the Arduino board is plugged into power. I am planning to make it start when the three buttons are pressed at the same time.

2)There is only one difficulty level now, however, I want to make it so that after the correspondent buttons were pressed 5 times, the LEDs would blink for less time, giving the player less time to think.

3)The design is not that pretty yet, since I was very happy when it worked and did not anything to switch places before I show it in class, as it might cause additional problems 🙂

Why are simple things sometimes hard to use, and why do pretty things work better?

In his book “The Psychopathology of Everyday Things,” Don Norman claims that the two of the most important characteristics of good design are “discoverability and understanding”.  What stood out to me from this reading is how he explains why some objects, which are supposed to be designed with simplicity so that the user experience is pleasant, for example doors or washing machines, become hard and confusing to use. One of the first examples Norman provides is the glass swinging doors. He says that these are attractive doors, stylish, and probably won a design prize, but what is the point of those doors if they are confusing to use and sometimes even make people anxious of using them? Later in the reading, Norman explains that this happens because the engineers who design the things have a very different mindset as opposed to people who will end up using the products, since the engineers are very logic-driven, and the people using their products are driven with their human, not always logical behavior. Not only because of that, but I found this introductory chapter very useful as in this chapter Norman explains some of the main design terms and psychological concepts, such as affordances, signifiers, constraints, mappings, and feedback. I think they are extremely important to keep in mind when designing our future in-class projects.

This follows into the second reading about designing objects that have positive affect on people. As Norman says, positive affect enhances creative, breadth-first thinking whereas negative affect focuses cognition, enhancing depth-first processing and minimizing distractions. What I took from the second reading is that at least everything I design should look pretty, because when two objects are used for the same purpose, but one of the objects is prettier in design, it would feel like it works better than the other one. Norman’s statement about the car proves this :  “Wash and polish your car: doesn’t it drive better?”. Obviously, the model of the car does not change after you wash it, however, the experience of driving a clean car is way more pleasant.