Author Archives: map938

About map938

Hello! My name is Quim Paredes and I’m a first-year student in New York University Abu Dhabi. I hope to major in Art History and Practice and minor in Interactive Media and Design. I’m most comfortable creating art pieces with a pen and ink or acrylic paint on canvas and prefer creating pieces in the imaginary realm. Some of the key aspects of most of my pieces are bright, bold colors and striking outlines. In my Types of Art class, I hope to add another form of media to my art repertoire and discover the importance of fonts and typography in our everyday life.

A Brief Rant on the Future of Interaction Design

 

A Brief Rant on the Future of Interaction Design Response

I had never thought about the development of technology the way that Bret Victor has. When I watch movies where almost everything can be controlled right from your fingertips my first thought is “Wow, that’s so convenient” but I hadn’t thought about the actual enjoyment of the experience. The idea that almost everything that we experience through that interface is visual, the tangible aspect is almost completely disregarded. Interestingly enough, I have experienced something that relates very heavily to a sudden loss of the sense of touch with our “Pictures Under Glass.” Recently I transitioned from the usual pen and paper to an iPad. Don’t get me wrong, I love it, but I also dearly miss the feeling of pen and pencil on paper. So much so that I’ve been looking to buy  a screen protector called “Paper-like” just to regain that scratchy feeling. I think that Bret Victor has a very good point. When the world is at your fingertips, why get up? Not even consider the multitudes of health repercussions this could have, what about our experience of the world? The thought of technology being so convenient that you don’t have to leave your room is a terrifying thought.

Week 7 Reading Assignment – Quim

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

What I found the most interesting about this reading is the parallels and contradictions it had to our other readings. It parallels other readings by making reference to the idea that two items must be in communication to be interacting. The quote “Interactive work is different. The thing you build, whether it’s a device or a whole environment, is just the beginning of a conversation with the people who experience your work” separates interactive art pieces from normal art pieces in that it is a multistep process. I find the fact that projects should be interacted with only guided by its design rather than out-right labels or an instruction manual interesting. Maybe an item can come with instructions but ideally, it doesn’t need them.  The reading also highlights the experience of the object which was talked about in our previous reading.

Physical Computing’s Greatest Hits (and misses)

One of the key points that I got from this reading is that similar to art, interactive projects don’t have a lot of originality. A lot of them are iterations of previous ideas that either improve upon the original or simple create a variant of it. In addition, this reading opened my eyes to how expansive the IM world can be. There are so many sensors and actuators that I haven’t explored yet like the floor pads or gloves. It makes me excited to delve deeper into the world of IM. I was intrigued by the popularity of creating dolls or anamorphic designs and reminded me of my most recent midterm project, the cardboard dog Dapple.  I hope to create more interesting and increasingly complex projects in the future.

Mid-Term Project: Cardboard Dapple, My Dog Away From Home

Concept

When I was brainstorming about this project, I was considering some of my favorite things and the first thing that popped into my head was that I missed my 4 dogs back home. I have 2 Dachshunds, a Husky and a Golden Retriever. With this thought in mind, I tried to come up with a project that would remind me of my dogs back home. Unsurprisingly, I came up with a dog. I knew that had neither the time or the skills to make the dog very complicated so I tried to isolate certain characteristics of the dog that I missed the most, my old Dachshund with an attitude and an unhealthy obsession to chicken, Dapple. Every time I would come home she would start barking happily and start wagging her tail. When I pet her she would start to make a high pitched whining sound and wag her tail even faster. The project I will build will emulate the behavior of my dog and hopefully, make someone smile.

Dapple is on the left

Behavior

My cardboard Dapple will have two settings: sensing the presence of something in front of it, and sense when she is being petted. When Dapple senses the presence of something in front of her she will “wake up.” She will wag her tail, play a low tone periodically and “blink” or flash the LEDs. When she senses the presence of someone in front of her and she gets “pet” on the head (light sensor), her tail will wag faster and she will close her eyes in pure bliss (LEDs turn off). 

Circuit and Schematic

The entire circuit fits into a cardboard container that represents Dapple’s body. The speaker and light sensor are placed in the head of the figure, the breadboard and the Arduino sit in the middle of the body. The servo is attached to the end of the figure with a hole cut for the tail to wag and the distance sensor is in front of the figure. 

Schematic

Inputs and Outputs

Amount Item
1 light sensor
1 distance sensor
1 servo
2 LEDs
1 Speaker

Discussion

Hardware

The biggest issue with the hardware of the project is that I used stranded wire to solder wires onto the 6-pin female header and as a result, the exposed wires sometimes bumped into each other. It was a similar case on the breadboard. I had to make sure I cut the wires down so that none of the stranded wire would be exposed. The creation of the container itself wasn’t as complicated as I only made use of glue gun, tape and cardboard. 

I think I should’ve made the container bigger though because it was quite difficult to maneuver some of the wires around because of the cramped space. I also ran into some issues with pin 11. For some reason, my LED wouldn’t light when it was connected to that pin but worked when I connected to pin 6. 

Software

My biggest issue with this code is that I didn’t know how to make the servo move faster when it sensed the light sensor. This was because the servo sweep code made use of classes, which I wasn’t as familiar with. Fortunately, with some help from Adham, I was able to increase the speed of sweep. Learning the code for the sweep function and trying to understand it to the best of my extent took most of my time when it came to this project. 

Distance sensor

Servo sweep without delay

Code

Main Code

#include "pitches.h"
#include "sweeper.h"

const int trigPin = 9;
const int echoPin = 10;
const int LEDYELLOW = 5;
const int LEDYELLOW2 = 6;

const int lightsensor = A0;


int ledState = LOW;
unsigned long previousMillis = 0;
const long interval = 1000;

long duration;
int distanceCm, distanceInch;
Sweeper sweeper1(15);


void setup() {
  sweeper1.Attach(7);
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(LEDYELLOW, OUTPUT);
  pinMode(LEDYELLOW2, OUTPUT);// used to test the distance sensor and see if the LED will turn on
  pinMode(lightsensor, INPUT);
}



void loop() {


  int Lsensor = analogRead(lightsensor);
  Serial.println(Lsensor);

  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);

  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  duration = pulseIn(echoPin, HIGH);
  distanceCm = duration * 0.034 / 2;
  distanceInch = duration * 0.0133 / 2;

  //used to check the distance and see if the sensor is working

  Serial.print("Distance: ");
  Serial.print(distanceInch);
  Serial.println(" inch");



  //tests if light will turn on if something approaches it
  if (distanceInch < 30) {
    if (Lsensor < 800) { //increase increment (wagging of tail), stop blink sweeper1.Increase(); sweeper1.Update(); unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) {
        // save the last time you blinked the LED
        previousMillis = currentMillis;

        // if the LED is off turn it on and vice-versa:

        if (ledState == LOW) {
          ledState = HIGH;
          tone(8, NOTE_C7, 8);
        } else {
          ledState = LOW;
          noTone(8);
        }
      }
    } else { //reset sweeper speed (wagging of tail slows), blink light again, play lower note
      sweeper1.Update();
      unsigned long currentMillis = millis();
      if (currentMillis - previousMillis >= interval) {
        // save the last time you blinked the LED
        previousMillis = currentMillis;

        // if the LED is off turn it on and vice-versa:

        if (ledState == LOW) {
          ledState = HIGH;
          tone(8, NOTE_C6, 8);
        } else {
          ledState = LOW;
          noTone(8);
        }

        // set the LED with the ledState of the variable:
        digitalWrite(LEDYELLOW, ledState);
        digitalWrite(LEDYELLOW2, ledState);
      }
    }
  } else {
    digitalWrite(LEDYELLOW, LOW);
    digitalWrite(LEDYELLOW2, LOW);
    noTone(8);

  }
}

Pitches Library

/*************************************************
 * Public Constants
 *************************************************/

#define NOTE_B0  31
#define NOTE_C1  33
#define NOTE_CS1 35
#define NOTE_D1  37
#define NOTE_DS1 39
#define NOTE_E1  41
#define NOTE_F1  44
#define NOTE_FS1 46
#define NOTE_G1  49
#define NOTE_GS1 52
#define NOTE_A1  55
#define NOTE_AS1 58
#define NOTE_B1  62
#define NOTE_C2  65
#define NOTE_CS2 69
#define NOTE_D2  73
#define NOTE_DS2 78
#define NOTE_E2  82
#define NOTE_F2  87
#define NOTE_FS2 93
#define NOTE_G2  98
#define NOTE_GS2 104
#define NOTE_A2  110
#define NOTE_AS2 117
#define NOTE_B2  123
#define NOTE_C3  131
#define NOTE_CS3 139
#define NOTE_D3  147
#define NOTE_DS3 156
#define NOTE_E3  165
#define NOTE_F3  175
#define NOTE_FS3 185
#define NOTE_G3  196
#define NOTE_GS3 208
#define NOTE_A3  220
#define NOTE_AS3 233
#define NOTE_B3  247
#define NOTE_C4  262
#define NOTE_CS4 277
#define NOTE_D4  294
#define NOTE_DS4 311
#define NOTE_E4  330
#define NOTE_F4  349
#define NOTE_FS4 370
#define NOTE_G4  392
#define NOTE_GS4 415
#define NOTE_A4  440
#define NOTE_AS4 466
#define NOTE_B4  494
#define NOTE_C5  523
#define NOTE_CS5 554
#define NOTE_D5  587
#define NOTE_DS5 622
#define NOTE_E5  659
#define NOTE_F5  698
#define NOTE_FS5 740
#define NOTE_G5  784
#define NOTE_GS5 831
#define NOTE_A5  880
#define NOTE_AS5 932
#define NOTE_B5  988
#define NOTE_C6  1047
#define NOTE_CS6 1109
#define NOTE_D6  1175
#define NOTE_DS6 1245
#define NOTE_E6  1319
#define NOTE_F6  1397
#define NOTE_FS6 1480
#define NOTE_G6  1568
#define NOTE_GS6 1661
#define NOTE_A6  1760
#define NOTE_AS6 1865
#define NOTE_B6  1976
#define NOTE_C7  2093
#define NOTE_CS7 2217
#define NOTE_D7  2349
#define NOTE_DS7 2489
#define NOTE_E7  2637
#define NOTE_F7  2794
#define NOTE_FS7 2960
#define NOTE_G7  3136
#define NOTE_GS7 3322
#define NOTE_A7  3520
#define NOTE_AS7 3729
#define NOTE_B7  3951
#define NOTE_C8  4186
#define NOTE_CS8 4435
#define NOTE_D8  4699
#define NOTE_DS8 4978

Servo Sweep Class Library

#include 


class Sweeper {

    Servo servo;              // the servo
    int pos;              // current servo position
    int increment;        // increment to move for each interval
    int  updateInterval;      // interval between updates
    unsigned long lastUpdate; // last update of position

  public:
    Sweeper(int interval)
    {
      updateInterval = interval;
      increment = 5;
    }

    void Attach(int pin)
    {
      servo.attach(pin);
    }

    void Detach()
    {
      servo.detach();
    }

    void Update()
    {
      if ((millis() - lastUpdate) > updateInterval) // time to update
      {
        lastUpdate = millis();
        pos += increment;
        servo.write(pos);
        Serial.println(pos);
        if ((pos >= 150) || (pos <= 3)) // end of sweep { // reverse direction increment = -increment; } } } //Increases increment speed void Increase() { if ((millis() - lastUpdate) > updateInterval) // time to update
      {
        lastUpdate = millis();
        pos += 2*increment;
        servo.write(pos);
        //Serial.println(pos);
        if ((pos >= 150) || (pos <= 30)) // end of sweep
        {
          // reverse direction
          increment = -increment;
        }
      }
    }
};

Week Four Reading Responses

The Art of Interactive Design by Chris Crawford

I found this reading very timely, considering that the first homework we did indicated that we had to observe some form of interaction. When I first read this prompt it confused me. I remember sitting in my living room wondering what interaction meant. Crawford places emphasis on the two communicants having “blood” assuming that both interacting parts have to be organic. Though he goes on to speak about the components of interaction being thinking, communication and the like,  I find that the “organic” component of interaction isn’t the case. I agree that there are degrees to interaction but I feel that the line between interactivity and reactivity is blurred and cannot be wholistically defined as two separate phenomena.

The Design of Everyday Things by Don Norman

What interested me about this reading was the balance between the efficiency or the utilitarian aspect of design and the aesthetic of the object. Don Norman speaks of the importance of the experience of the object and I believe that aesthetic is the frontier for the saying that “first impressions last.” Aesthetics and packaging will get you to buy the object in the first place. Almost everyone would choose and have a more pleasant interaction prettier speakers than average-looking ones. I wonder how difficult it is to find a good balance between form and function. One example that I can think of is the use of labels. Labels make it much easier to understand how an object operates and how to operate that object, however,  modern society has a tendency to gravitate towards a more minimalist design. Obviously, labels aren’t what would be “minimalistic” so in this case, I feel like form would take priority over function. However, I know that many would prefer their objects to be labeled rather than looking pretty. In this case, I think that the target audience should be especially scrutinised. However, if the object were for public use, I think that function would take priority over form.

Complex Circuit with LEDs and Sensors Week 3 and Week 4 Assignment

The purpose of my circuit is to turn on lights one after the other (keeping the other lights turned on) as well as being able to make the lights blink when prompted by a button. The analog section of the project is fulfilled by the potentiometer while the digital aspect is fulfilled by the button.

Video

The first part that I constructed was the potentiometer. I checked first to see if it worked, then I used the “map” function to set the ranges from 0 to 1023 to 0 to 400 to make the numbers easier to work with.

Once I knew the potentiometer was connected in the circuit, I created the switch and tested it to see if it worked. Finally, I created each of the led mini circuits, testing them individually by feeding them power directly from the 5v wire.

Once I was sure that all of the smaller aspects of the circuit are working I started on the code. 

I first made sure that the potentiometer would turn on the first light (red) when it was within a certain range and that it would turn off when it was outside of that range. Then I  proceeded to do this for each of the other lights in sequence (yellow, green then blue). Once I did this successfully I tried to make the lights blink in sequence when the button is pressed.

Though the most difficult part of the assignment was the coding, the most challenging aspect was the blink function. I had to use trial and error multiple times in order to get the lights to do exactly what I wanted to do. I couldn’t conceptualize whether this part of the code should be within my previously constructed loop or it should be in a separate loop. Fortunately, I figured it out eventually by separating the loop that controlled the turning-on of the lights and the blinking. 

SCHEMATIC:

CODE:

 

/*
  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
*/

// the setup routine runs once when you press reset:
void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  // read the input on analog pin 0:
  int sensorValue1 = analogRead(A0);
  int sensorValue2 = analogRead (A2);
  sensorValue1 = map(sensorValue1, 0, 1023, 0, 400);
  sensorValue2 = map(sensorValue2, 0, 1023, 0, 5);
  // print out the value you read:
  Serial.println(sensorValue1);
  //Serial.println(sensorValue2);

 if (sensorValue1 > 10 && sensorValue1  100 && sensorValue1  200 && sensorValue1  300) {
    digitalWrite(12,HIGH);
    digitalWrite(11,HIGH);
    digitalWrite(10,HIGH);
    digitalWrite(9,HIGH);
  }else {
  digitalWrite(12,LOW);
  digitalWrite(11,LOW);
  digitalWrite(10,LOW);
  digitalWrite(9,LOW);
  }
  
  if (sensorValue1 > 10 && sensorValue1  1) {
      digitalWrite(12,HIGH);
      delay(200);
      digitalWrite(12,LOW);
      delay(200);
  } else if (sensorValue1 > 100 && sensorValue1  1) {
      digitalWrite(12,HIGH);
      delay(200);
      digitalWrite(12,LOW);
      digitalWrite(11,HIGH);
      delay(200);
      digitalWrite(11,LOW);
      delay(200);
  } else if (sensorValue1 > 200 && sensorValue1  1) {
      digitalWrite(12,HIGH);
      delay(200);
      digitalWrite(12,LOW);
      digitalWrite(11,HIGH);
      delay(200);
      digitalWrite(11,LOW);
      digitalWrite(10,HIGH);
      delay(200);
      digitalWrite(10,LOW);
      delay(200);
  } else if (sensorValue1 > 300 && sensorValue2 > 1) {
    digitalWrite(12,HIGH);
      delay(200);
      digitalWrite(12,LOW);
      digitalWrite(11,HIGH);
      delay(200);
      digitalWrite(11,LOW);
      digitalWrite(10,HIGH);
      delay(200);
      digitalWrite(10,LOW);
      digitalWrite(9,HIGH);
      delay(200);
      digitalWrite(9,LOW);
      delay(200);
  }
  
  delay(1);        // delay in between reads for stability
}

Interaction Dorm Room Lighting

Everyone has interacted with the dorms’ lighting before. In a doubles suite, which is where I’ve roomed both of my years in NYUAD, there are five light switches in the common area. Facing the doorway, there are two on the right wall, one the left wall and two on the same wall as the door. As an incoming Freshman, excited as I was to start moving in and arranging my things, I distinctly remember not knowing which light switches turned on which light. I would spend a few seconds walking around the room and flipping on and off light switches in order to get the lighting that I wanted. 

Their placement should have been intuitive, but the light beside sink actually turned on the lights above a room’s doorway rather than above the sink. And the two light switches on the right wall turned on the lights nearer to the far side of the wall. I don’t think it would be reasonable to ask for a change in the placement of the light switches now, however at the time I had a solution to my predicament. I decided to add labels to the light switches to prevent further confusion. As an art student, I felt like it was my duty to go above and beyond with the labels and decorated them, adding calligraphy and splashes of color. Those who visited my dorm would bring it up with me, often saying it was cute or asking why I bothered labeling them in the first place. The labels, other than their initial purpose of making my life easier also served as a decoration as well as a conversation starter. 

I may have already memorized what each light switch is connected, but I now I know that little improvements can do more than make something more efficient. It can also add a little color to my day. 

Earring-Cuffs Simple Switch

I was intimidated by the project at first, not having had practice with circuits of any kind before. Of course, there was also the creative aspect of the project but for the life of me, I couldn’t think of a creative way to make a switch without using my hands. Then it occurred to me that my earrings are made of metal.

With this thought in mind, I created a simple circuit first, without the earrings, but in such a way that there would be two wires that connected to the resistor and the ground wires respectively. Once I knew the circuit worked with the two extra wires, I tried to tape the ends to my earrings and attached my earrings together. However, no matter how much I tried, the LED would not light up. I realized that there might be an issue with my earrings themselves. It is possible that they’re either coated with a non-metal or not completely made of metal. 

With this in mind, I tried another approach, I used the naked wire for sculpting and wrapped it around my earrings. When I did this and made the two earrings touch the LED finally lit up. I’ll have to be more careful about the materials I used in my circuit in the future.