Fiorella modolo "Prototyping Interactive Experiences Development Booklet"

Page 1

fiorella modolo. 40056892 DES09124 2013-4 TR1 001 - Prototyping Interactive Experiences

final booklet of development.


first project

The brief for this project was to: “Document through photograph and film 50 examples of interactions between humans and mobile technologies, humans and space, and technologically enhanced spaces”.

Full video: https://www.youtube.com/watch?v=O41vIIWrtTw The interaction were mainly filmed in: - Edinburgh - King’s Cross, London - London Design Week


processing

Experiments with Processing from the 23rd of September onwards: - These sketches were created to understand how to use shapes, strokes and basic colours.

The main shapes that were used were: rectangle(); ellipse(); fill(); stroke(); etc


MouseX and MouseY commands: - The MouseX and MouseY comands can be added to the code to replace certain fixed x and y elements. In this way the movement of the mouse directly influences the shape of the geometrical elements, but also the colours of borders, background and the number of elements.

Processing reads commands with coordinates, such as (50,50), but also in terms of fractions. These examples show how on a screen of 400 px, if an x position is 5, it can be written as: - width/8 if it is 100 it will be: width/8+50 2*width/8 width/4 And so on.


Other ways to use mouseX and mouseY. These commands can be placed in the code to change colour, stroke and position on shapes. In this case they were used to make lines and rectangles change one in relation to the other. For example: - line(150, 50, mouseX+100, mouseY+100); - rect(mouseX-100, mouseY-100, 200, 200); ...


interactions

For this assignment the brief was to watch a chosen video of interactions from project one, choose various examples of interactions and convert 5 them into abstract Processing sketches. Video: http://www.youtube.com/watch?v=sqWTxkwvUXI&feature=youtu.be

1st Interaction: 24-hour Tesco in Leytonstone. The interaction related to the picture is: taking products from a structured environment. I decided to represent it having a circular shape moving down the main aisle. The long rectangles are the shelves and the products on them have different colours. Only some of them are the same shape and colour of the moving circle (a customer), and those are the ones that are going to be taken.


For this sketch I mainly used rect() and ellipse() for the circles. MouseY was used to make the main circle move vertically. http://www.openprocessing.org/sketch/112421/embed/?width=600&height=600&border=true 2nd Interaction: Bridge near the Tate Modern. The movement was detected with sensors before and under the bridge. The vault would glow but not the walls. For this reason the blocks before and after the bridge represent the sensors, and the black lines are the walls that don’t react. When people (the squares), walk past, the symbol for bridge reacts.


The sketch was a combination of rectangles and lines and mouseY in the fill() commands make the colour change. MouseY was also put in the rectangles so they would move vertically. 3rd Interaction: The Tube.


I followed a tutorial on processing.org about curves. It’s quite nice and relatively easy to follow and explains all the different curves that can be achieved with Processing. Arc(), curve() and creating splines seems still tricky, so for this sketch I tried to create continuous spline curves with the generic code: stroke(0,25,255); strokeWeight(3); noFill(); beginShape(); curveVertex(100,100); curveVertex(100,100); curveVertex(150,150); curveVertex(300,280); curveVertex(350,250); curveVertex(500,150); curveVertex(500,150); endShape(); Where the first 2 and last 2 curveVertex() are the starting point, first control point, last point and last control point of the curve. The curveVertex() in the middle control how the curve goes in the centre of it. To have a continuous spline first point/first control point and last point/last control point should match.


The 4th interaction takes place in a bridge on the Thames. To represent it I focused on the idea of a bridge as a gathering point from different points scattered around town to let things flow from one side on the river to the other.

The sketch was created using a hierarchy or lines. The rect() in the middle change the colour if the mouse moves from one side to the other; that was possible using mouseX on the fill() command.


The 5th interaction was an installation at Design Junction and the London Design Festival. Different printers printing different receipts were aligned under colourful credit cards. To get a receipt with info about each credit card, one had to activate the printer related to it.

I used curveVertex() trying to make the splines smoother. To make the shapes change colour I tried to use the commands: if(mousePressed == true){ fill(255,0,0); }else{ fill(255);


Sketches using variables with the int function applied with the diameter of an ellipse. Once the value of the diameter is set in the code, it can be used in the ellipse() but also in fill() to control how the colour changes. If mouseX (or mouseY) is typed into the diameter value, the dimensions of the ellipse change with the position of the cursor. The “if” and “else” fucntions can also be used to make the colour of the ellipse changing depending to its dimensions.

and the if condition can also be used to make the shape of the ellipse change into another shape.


It is also possible to make the circle move independently to the right and make it bounce back creating a loop. That is possible using int Switch to have different settings in which the loop can work. The circle can stop on the right border (above), or bouncing back (below).

Codes to insert, resize, zoom and move images in a Processing sketch, with also the addition of shapes.


interactive objects

Project brief: “You must create a new and interesting interaction between an existing object and the user by redesigning the interaction that object is designed to have with us�. After a walk around Merchiston with my group, I picked the water dispenser in the corridor of the design studios. As much as it is a functioning object, it seemed rather abandoned to itself in the middle of the corridor.


Moodboard and further inspiration for the project: Creation of an interactive vending machine/ water dispenser with an interesting personality. Existing examples: - an automatic vending machine that is actually human. - a vending machine that recognises if people are happy and gives them free ice cream if they are. - a roulette and ironic vending machine that gives random products as long as you insert coins. - a passive aggressive vending machine. You insert coins and decide which object the machine is going to smash for you. Vending machines don’t have necessarily to be positive, but they can also be ironic, mean or sarcastic.

http://www.openprocessing. org/sketch/113832


Codes to make coloured rectangles appear in certains parts of the sketch with mousePressed, if, and else conditions and && command.

Importing audio files into processing with the minim library, creationf of data folders and renaming the files.


Among the other commands, when importing an audio library the main ones are: - player.play(); - player.pause(), - player.stop(); combining this combines means being able to play certain tracks at certain times without having the overlapping.

Links to other audio interaction: - http://www.openprocessing.org/sketch/115014 - http://www.openprocessing.org/sketch/115009 - http://www.openprocessing.org/sketch/115007 - http://www.openprocessing.org/sketch/115008


Experiments on weavesilk.com:


generative art

by Yuri Vishnevsky

“Generative art is neither programming nor art, in their conventional sense. It’s both and neither of these things. Programming is an interface between man and machine; it’s a clean, logical discipline, with clearly defined aims. Art is an emotional subject, highly subjective and defying definition. Generative art is the meeting place between the two.

from “Generative Art“ by Matt Pearson


ld or W

Computers r pi ns

i of n io

at

ld or W

GenArt

Organic

l of ic og

Emotion Aesthetics

The cold language of programming and logic comes to touch with inspiration and spontaneity in Generative Art. Computers explore organic forms, the world of emotions and aesthetic values through the artist. The AIM of Generative Art is to “make something beautiful“.

Generative Art is defined in terms of the methods used to create it, not in terms of the final outcomes and the different styles achieved. Artist + a mechanism that autonomally generates the art.


assigned space

The designated space for this project is the passageway through Napier Tower in Merchiston Campus., more specifically the NorthWest wall, the ceiling and floorspace. The space has an aesthetic of its own compared to the rest of the university building which is not always appreciated by the crowd that walks quickly to the JKCC and the rest of the campus. Stone walls and 4 carved wooden chairs create an atmosphere of its own.

Design studios

offices

Design studios shop

other building, canteen

JKCC ECCI student hub

Main directions of people walking through the space.

cafe

way out

library


Elements in the space and how the users react to them: Timber chairs: the passageway is part of the original Napier tower and the chairs (together with the stone walls) are the clear sign that that part of the building is historical. The chairs could be removed, but they might play an interesting role in the project. People walking past at the moment don’t seem to pay attention to them. Window: the window created a deep tunnel of dim light in the corridor. The light is not direct and it does not shine through, but it could cause an element of disturbance for the projection, for this reason the window is going to be covered with a panel.


Ideally people should be encouraged to sit on the chairs and be part of the projection, to reevaluate the passageway. Abstract elements “growing� directly from the chairs to create a big coil on top of the wall would create an appealing design. The Perlin Noise function is ideal for this purpose, but also the random() function.

Recursive trees or horizontal flows of objects could also be appealing, even thought the idea of falling shapes seems more appropriate for the space.


Design development using Perlin Noise:

Modifying the PVector coordinates was I was trying to achieve was two separate streams of lines moving upwards. Changing the PVector didn’t work, and changing the i++ growing factor of the particle to i— did not work. This function seems also visually heavy.


Further development: - On “Generative Art”, Matt Pearson talks about recursive trees (pg 159 onwards), which could have been a cool tool to explore. There seems to be a mistake in the code though. - OpenProcessing has lots of examples of engaging design to get some inspiration aboutfree falling objects. Space Rain by Jerome Herr, coveys the same results that the design for the Napier Tower wants to achieve. - From this code the “rain” was limited to certain areas of the screen so it would cover only one, or more chairs. -Placing a black rectangle on top of the rain seemed the most logical approach to take. Unfortunately, as much as visually this trick works, the rain is considerably slowed down by it.


final design

Change frame rate to make it more flowy

Colour of the particles from random to white

Original sketch moved to the top left corner

Bigger particles.


- to create a second flow, compatible with the white stream of particles, I used the random() function applied to rect(). - I put red as default but other colours could work too: - With a quick questionnaire I asked people in Merchiston walking past the location what colours they thought would be appealing and appropriate for the space. Purple seems to be the most popular one. - Keeping both flows white with different chairs seems an interesting option, too.

Think about having 2 chairs with 2 streams of light flowing down on them. Considering that one stream is white, which other colour would you choose for the other stream? warm

4

cold

7

red

3

maroon

3

bright green

1

bright blue

4

light blue

3

purple pink yellow

7 2

1


testing - The space given by the brief if relatively small. - Positioning a projector in here could be difficult, especially if we consider cast shadows by passers by. placing the projector on the floor close to the wall could be an option but the width of the projection could not be enough to cover the wall. - Moving the projector in the middle of the space seems out of the question. - The best option is to use mirrors. The projector would face the opposite direction from the wall, and it would be close to it, but thanks to curved mirrors the projection would be wide enough. People walking past wouldn’t trip on it.


Two independent white streams flowing on the chairs and on the people sitting on them. The chairs are not the same two by accident, but if both the floes are white, two different chairs create an interesting effect.


arduino Arduino Starter Kit including: - Arduino Uno board - USB cable - simple and RGB leds - Wires - Resistors -Capacitors -Motor -Breadboard


leds

Ardiuino & leds: Simple connection to make a led blink.

To have a basic blinking led: - connect a red wire from 5V to a + on the breadboard and a black wire from GND to a - connect a resistor from a + on the breadboard to a space in the middle of it - plug a led (being careful about the right direction to keep) from a space aligned to the resistor to another point in the middle of the board. - plug a black wire from a point aligned to the other end of the led to a - on the board. - plug it with the USB. This circuit will light up the led.


Arduino task: spell your name with the Morse code using blinking leds: Fiorella (..-. .. —- .-‌-.. .-.. .-),

int led = 13; pinMode(led, OUTPUT); } void loop() { digitalWrite(led, HIGH); digitalWrite(led, LOW); delay(1000); digitalWrite(led, HIGH); delay(30); digitalWrite(led, LOW); delay(1000); digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); delay(1000); digitalWrite(led, HIGH); delay(30); digitalWrite(led, LOW); delay(1000);

digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); delay(1000);

digitalWrite(led, HIGH); delay(30); digitalWrite(led, LOW); delay(1000);

digitalWrite(led, HIGH); delay(30); digitalWrite(led, LOW); delay(1000);

digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); delay(1000);

digitalWrite(led, HIGH); delay(30); digitalWrite(led, LOW); delay(1000);

digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); delay(1000);

digitalWrite(led, HIGH); delay(30); digitalWrite(led, LOW); delay(1000);

digitalWrite(led, HIGH); delay(30); digitalWrite(led, LOW); delay(1000);

digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); delay(1000);

digitalWrite(led, HIGH); delay(30); digitalWrite(led, LOW); delay(1000);

digitalWrite(led, HIGH); delay(30); digitalWrite(led, LOW); delay(1000);

digitalWrite(led, HIGH); delay(30); digitalWrite(led, LOW); delay(1000);

digitalWrite(led, HIGH); delay(30); digitalWrite(led, LOW); delay(1000);

digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); delay(1000);

digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); delay(1000); digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); delay(1000);

digitalWrite(led, HIGH); delay(30); digitalWrite(led, LOW); delay(1000); digitalWrite(led, HIGH); delay(30); digitalWrite(led, LOW); delay(1000);

digitalWrite(led, HIGH); delay(30); digitalWrite(led, LOW); delay(1000);

}


Full video: http://fiomodolo.tumblr.com/post/66007921093/fiorella-in-morse Basics to have blinking leds: - turn the resistor so it will have both ends within the breadboard and not on a + or sign. - keep the led and other wires the same as before. - plug a yellow wire from a point aligned to the resistor to one at the top left corner of the arduino called 13.

When plugged into the laptop ot will blink automatically as the 13 hole has a default setting to blink at this rate. Blinking can be changed and made faster or slower etc.


It is possible to duplicate the resistor+led syste and have 2 leds, but in this case the code in Arduino for blinking must be updated to have 2 leds (led and led2) that the system can read and put on a loop. These 2 leds can be controlled so they will blink with different delays or blink faster etc


This is all 3 of my groups names in morse code: http://fiomodolo.tumblr.com/post/66567453678/conniepaton-this-is-all-3-of-mygroups-names-in First LED is Fiorella (..-. .. —- .-…-.. .-.. .-) Second is Connie (-.-. —- -. -. .. .) Third is Nick (-. .. -.-. -.-)

int led = 8; int led2 = 12; int led3 = 13; void setup() { pinMode(led, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); } void loop() { digitalWrite(led, HIGH); delay(60); digitalWrite(led2, HIGH); delay(1000); digitalWrite(led3, HIGH); delay(1000); digitalWrite(led, LOW); digitalWrite(led2, LOW); digitalWrite(led3, LOW); delay(400); digitalWrite(led, HIGH); digitalWrite(led2, HIGH); digitalWrite(led3, HIGH); delay(60); digitalWrite(led, LOW); digitalWrite(led2, HIGH); delay(400); digitalWrite(led3, HIGH); delay(1000);

digitalWrite(led, HIGH); digitalWrite(led2, HIGH); delay(1000); digitalWrite(led3, HIGH); delay(60); digitalWrite(led, LOW); digitalWrite(led2, LOW); digitalWrite(led3, LOW); delay(400); digitalWrite(led, HIGH); digitalWrite(led2, HIGH); digitalWrite(led3, HIGH); delay(60); digitalWrite(led, LOW); digitalWrite(led2, LOW); digitalWrite(led3, LOW); delay(1000); digitalWrite(led, HIGH); delay(60); digitalWrite(led2, HIGH); digitalWrite(led3, HIGH); delay(1000); digitalWrite(led, LOW); digitalWrite(led2, LOW); digitalWrite(led3, LOW); delay(400); digitalWrite(led, HIGH); digitalWrite(led3, HIGH); delay(60);

digitalWrite(led2, HIGH); delay(1000); digitalWrite(led, LOW); delay(1000); digitalWrite(led2, LOW); digitalWrite(led3, LOW); delay(400); digitalWrite(led, HIGH); digitalWrite(led2, HIGH); digitalWrite(led3, HIGH); delay(1000); digitalWrite(led, LOW); digitalWrite(led3, LOW); delay(400); digitalWrite(led2, LOW); delay(1000); digitalWrite(led, HIGH); digitalWrite(led2, HIGH); delay(1000); digitalWrite(led3, HIGH); delay(60); digitalWrite(led, LOW); digitalWrite(led2, LOW); delay(400); digitalWrite(led3, LOW); delay(1000); digitalWrite(led, HIGH); digitalWrite(led3, HIGH); delay(1000); digitalWrite(led2, HIGH);

delay(60); digitalWrite(led, LOW); digitalWrite(led2, LOW); delay(1000); digitalWrite(led3, LOW); delay(400); digitalWrite(led, HIGH); digitalWrite(led3, HIGH); delay(60); digitalWrite(led2, HIGH); delay(1000); digitalWrite(led, LOW); digitalWrite(led2, LOW); digitalWrite(led3, LOW); delay(400); digitalWrite(led, HIGH); digitalWrite(led3, HIGH); delay(1000); digitalWrite(led2, HIGH); delay(60); digitalWrite(led, LOW); delay(400); digitalWrite(led2, LOW); delay(1000); digitalWrite(led3, LOW); delay(1000); digitalWrite(led, HIGH); digitalWrite(led2, HIGH); delay(60); digitalWrite(led, LOW);

delay(1000); digitalWrite(led2, LOW); delay(400);

digitalWrite(led, HIGH); delay(60); digitalWrite(led, LOW); delay(400);

digitalWrite(led, HIGH); digitalWrite(led2, HIGH); digitalWrite(led, HIGH); delay(60); delay(1000); digitalWrite(led, LOW); digitalWrite(led, LOW); digitalWrite(led2, LOW); delay(400); delay(1000); digitalWrite(led, HIGH); digitalWrite(led2, HIGH); delay(60); digitalWrite(led, LOW); delay(400); digitalWrite(led2, LOW); delay(1000); digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); delay(400);

digitalWrite(led, HIGH); delay(60); digitalWrite(led, LOW); delay(400); digitalWrite(led, HIGH); delay(60); digitalWrite(led, LOW); delay(1000); digitalWrite(led, HIGH); delay(60); digitalWrite(led, LOW);

digitalWrite(led, HIGH); delay(60); digitalWrite(led, LOW); delay(400);

delay(400);

digitalWrite(led, HIGH); delay(60); digitalWrite(led, LOW);

delay(1250);

delay(1000);

digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW);


ldrs & sensors

Motorsm potensiometers and various sensors in Arduino:

Potensiometer linked to the Arduino board. The Potensiometer, if rotated changes the voltage on a circuit allowing to use other devices that the Arduino itself would be otherwise too weak to deal with. This is an input, also like the LDR which is a sensor that detects the light in the environment to gather data on the Arduino board. The values that correspond to certain quantities of light can be read on the Arduino sketch thanks to the serial monitor on the top left of the screen. The value ranges from 0 to 960. The LDR can be connected to LEDS or other devices to produce blinking, movement etc. and the circuit can be changed to that to a high level of light, a fast blinking will correspond or the other way around. Another a device we used in a motor which translate an input to movement. To be functioning a motor must be plugged into the board, in particular: - orange wire = linked to pin 9, digital - red wire = 5V - brown wire = GDN


communication

Processing and Arduino Arduino and Processing are compatible one with the other and can communicate through sketches. In the Processing Libraries it is possible to run a sketch to make the 2 programmes work together. Examples>libraries>serial>serialCallR esponse. In this sketch, in the draw section, a circle will appear on the screen at a certain position xpos and ypos. If the processing serial library is imported that mean Processing will load more functions related to Arduino. These lines define the connection port between the computer and the sketch: Serial.list()[32];. And 9600 makes the Processing language compatible with the Arduino language. This bit of code interprets the meaning from the data in binary code . Copying from the * sign at the bottom of the Processing code to the second *, we can get the Arduino code and paste it in a new sketch. These lines set up variables. The Serial.begin is once again at 9600. the establish.Contact function allows communication between Arduino and Processing.. And the values can be visible with print.ln. This is a standard method to establish contact. The values on the sensor print needs to be changed into “0”, rather than the original “BYTE”.


http://fiomodolo.tumblr.com/post/68394496050/conniepaton-this-is-the-outcome-from-the This is the outcome from the Arduino and Processing combined code.The push button turns the circle from white to grey and the 2 potensiometers control the X & Y position of the circle.


the 91.6

- Nickin Mathew - Fiorella Modolo -Connie Paton

Interests:

Aims:

- Light

- Making people feel confortable to start with and then engaging them in a different and unexpected way

-Organic Interaction - Chilled atmosphere

-Curiosity, playfulness, feeling involved and intrigued.

- Natural movement, shapes and materials - People interacting/ watching - Using proximity - Repetition Inspiration:

- Natural and comforting at first but with a twist the longer you look.


Manifesto With our project we want people to feel involved in the interaction using curiosity and playfulness. We want to create a chilled, familiat atmosphere, but make them more engaged visually and on a deeper level.

Tangible Time. Brief: - We all live our lives in accordance to the hours of the day. A standardised system designed by men to controll the masses. it had become expected to view and assess time through 2 vehicles, digital and analog clocks, But does this truly represent time as it pertains to our society today? - technology had most definitely reshaped the way we use time and so it must reshape the way we visualise it. - You must design a new visual experience to visualise time. it must have an element of interactivity and response with the user/users. The key to this brief is not only how you visualise the display of time but how the users actions create create a responsive, immersive experience.

Our Interpretation: - We believe the best way of viewing time that will never differ is your own personal timeline. Everyone goes from child to teen to adult etc and it is easy to perceive the age of a person by looking at them and their shadow.


The first stages of interpretation lead to the idea of having a booth people can walk in and control their shadow. the group wanted to create a visualisation of all the stages of life putting familiar and recognisable objects to the user. The idea was then simplified to projecting the “shadow“ of the user onto a wall, getting rid of the unnecessary context. A video of drawn shadows was produced, but them split into single frames that were reproduced. Initially the idea was to make the user have full control of what stage of their life their shadow would represent. This was then changed making users believe they could control it, while in reality they couldn’t, to add an element of surprise which seemed more pertinent to our manifesto. The booth was turned into a rail which would cover the projector and distance the user from the frames on the wall.

For our exhibition we need to make a stand with a rail that the box can be moved along and also to hold our Arduino kit. At first we made a prototype with blue foam. For our final model we then took away the adjust able rail to fit the size of the box and have boxes to hide the Arduino discreetly. The picture on the far right is the finished product before adding the frontage and extra boxes to hold the cards and the button.


For the front panel with the lettering we used a Victorian inspired illustration and font. We cut the letters from cardboard and paint them black. Same for the hand. We wanted to use images which are familiat to the users and would invite them to explore the installation.

The boxed to be moved up and down the rail was coverent in symbols related to life, death and the passing of time in various cultured and religions and it was made with blue foam covered with paper.


First codes in Processing:

This is the first Processing code we tried with the movie to get the frames to move in response to the distance reading on the Arduino. We then decided to upload a series of images from the movie so that it was easier to determine what frame was to appear at each distance. We then developed the idea further and changed the images so they appear at random over the course of the interaction to convey you do not have as much control over your life as you thought.


The video which was then split into single frames can be found here: http://fiomodolo.tumblr.com/post/68804813163/conniepaton-thisis-the-development-of-our

Final codes:

This is the final Processing and Arduino code that includes having the images at random and they only begin to move when the button is pressed instead of relying on a sensor. An array of numbers was linked to an a function to make the images appear at random, because random(); does not work on a list of images simply named with letters or words.


Exhibition poster:


Instruction were placed on the rail for user to pick up: - The first set of instructions explain how to use the box and the rail and control the projection. - the second one makes the user think more in depth about the experience they just had. The pushbutton on the breadboard was placed into a protective box so ir could be pushed more easily. The box had a system of nails and springs and could be accessed from the sides in case it broke. The Arduino board, breadboard and box were place on the left side of the rail which got then covered with a wooden hatch.


Final Installation: - The rail was placed between a pillar and the reception desk not to make the users walk behind it. - a wooden panel was added to make then projection visible and of the same shade of the rail.




Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.