every beginning & end of the day (2019)

I will be documenting the final product and process in this post. I will begin with the former.

Project Description

An interaction that explores the interstice between ourselves and an inanimate everyday object. Blinds act as a psychoneurotic anchor for humans, they act almost as book ends to which our consciousness opens and closes.

Concept

I wanted to create the sensation of a lapse in time. To do that, I digitally engineered the movements of blinds and lights that emit through the blinds in different shades of warm and white colour picks from actual images.

The following are some images that I referenced.

Schematics & Automation–

The setup involves both Arduino and Processing. The hardware – 3 distance sensors and 3 servo motors wired extensively to 1 arduino,  a computer and a projector.

A diagram of the wiring for the hardware. The servo motors are connected to the tilting mechanism of the blinds.

The following is the arduino code:

#include <Servo.h>
Servo myservo;
Servo myservo2;
Servo myservo1;

int trigPin1 = 6;
int echoPin1 = 7;

int trigPin2 = 8;
int echoPin2 = 9;

int trigPin3 = 10;
int echoPin3 = 11;

int count;
int count2;
int count1;

boolean kena=false;
boolean kena2=false;
boolean kena1=false;

void setup() {
Serial.begin (9600);

myservo.attach(5);
myservo2.attach(4);
myservo1.attach(3);

pinMode(trigPin1, OUTPUT);
pinMode(echoPin1, INPUT);

pinMode(trigPin2, OUTPUT);
pinMode(echoPin2, INPUT);

pinMode(trigPin3, OUTPUT);
pinMode(echoPin3, INPUT);
}

void loop(){

int duration1, distance1;
digitalWrite (trigPin1, HIGH);
delayMicroseconds (10);
digitalWrite (trigPin1, LOW);
duration1 = pulseIn (echoPin1, HIGH);
distance1 = (duration1/2) / 29.1;

int duration2, distance2;
digitalWrite (trigPin2, HIGH);
delayMicroseconds (10);
digitalWrite (trigPin2, LOW);
duration2 = pulseIn (echoPin2, HIGH);
distance2 = (duration2/2) / 29.1;

int duration3, distance3;
digitalWrite (trigPin3, HIGH);
delayMicroseconds (10);
digitalWrite (trigPin3, LOW);
duration3 = pulseIn (echoPin3, HIGH);
distance3 = (duration3/2) / 29.1;

if (distance1<150 && distance2>=150 && distance3>=150){
Serial.print(“1.jpg”);
};

if (distance2<150 && distance1>=150 && distance3>=150){
Serial.print(“2.jpg”);
};

if (distance3<150 && distance1>=150 && distance2>=150){
Serial.print(“3.jpg”);
};

if (distance1<150 && distance2<150 && distance3>=150){
Serial.print(“12.jpg”);
};

if (distance2<150 && distance3<150 && distance1>=150){
Serial.print(“23.jpg”);
};

if (distance1<150 && distance3<150 && distance2>=150){
Serial.print(“13.jpg”);
};

if (distance1<150 && distance2<150 && distance3<150){
Serial.print(“123.jpg”);
};

if (distance1>=150 && distance2>=150 && distance3>=150){
Serial.print(“0.jpg”);
};

if (distance1 < 150) { kena=true;}

if (kena==true){count++;};

if (count>0 && count<7) {
myservo1.write(110);};

if (count>=7 && count<9){
myservo1.write(90);};

if(count>=9 && count<15){
myservo1.write(70);};

if (count>=15){
myservo1.write(90);
count=0;
kena=false;
};

if (distance2 < 150) { kena2=true;}

if (kena2==true){count2++;};

if (count2>0 && count2<7) {
myservo2.write(70);};

if (count2>=7 && count2<9){
myservo2.write(90);};

if(count2>=9 && count2<15){
myservo2.write(110);};

if (count2>=15){
myservo2.write(90);
count2=0;
kena2=false;
};

if (distance3 < 150) { kena1=true; }

if (kena1==true){count1++;};

if (count1>0 && count1<7) {
myservo.write(70);};

if (count1>=7 && count1<9){
myservo.write(90);};

if(count1>=9 && count1<15){
myservo.write(110);};

if (count1>=15){
myservo.write(90);
count1=0;
kena1=false;
};

delay(100);
}

The servo motors are controlled directly from Arduino, triggered by the distance sensor that corresponds to it. I set my threshold at 1.5m, around the length of a human. To generate a visual in Processing, I used Serial.print to generate the name of the .jpg file. The following is the processing code:

import ddf.minim.*;

Minim minim;
AudioPlayer player;

import processing.serial.*;
Serial myPort;
String data=”” ;
int i = int(data);
PFont myFont;
PImage no;

void setup()
{
fullScreen(P2D);
background(0);
myPort = new Serial(this, Serial.list()[2], 9600);
myPort.bufferUntil(‘g’);

minim = new Minim(this);
player=minim.loadFile(“blind.mp3″);
delay(5000);}

void draw(){

background(0);
no = loadImage(data,”jpg”);
image(no, 0, 0, width, height);
println(data);

if (data.equals(“1.jpg” )|| data.equals(“123.jpg”)|| data.equals(“2.jpg”)|| data.equals(“3.jpg”)|| data.equals(“12.jpg”)|| data.equals(“23.jpg”)|| data.equals(“13.jpg”)){
player.play();
player.rewind();
}

}
void serialEvent(Serial myPort)
{
data=myPort.readStringUntil(‘g’);
}

‘data’ is what’s returned to the serial port of my Arduino.

Visuals

Possible outcomes in the form of images. During the actual demonstration, I slightly unfocused the projection image to replicate the natural phenomenon:

No presence

Left blind

Right blind

Middle blind

Left & Right blind (2 blinds return white)

Left & Middle blind

Right & Middle blind

All blinds on (return brighter)

Changes

There has been a drastic change in concept since my first pitch due to several accusations of similarities to works of other artists concerning blinds (though unintended).

The following are some links & images of the milestones in my process.

https://oss.adm.ntu.edu.sg/syeow002/category/18s2-dm2000-tut-g01/project-development-drawings-18s2-dm2000-tut-g01/

Body Storming Documentation for Blind and Chandeliers

https://oss.adm.ntu.edu.sg/syeow002/category/18s2-dm2000-tut-g01/project-development-body-storming-18s2-dm2000-tut-g01/

password: phototactic

https://oss.adm.ntu.edu.sg/syeow002/category/18s2-dm2000-tut-g01/mid-term-project-18s2-dm2000-tut-g01/

Personal Reflections

Ultimately, I am happy with this outcome. On many mornings and nights I am reminded of this piece, which is the reverse effect of working on this for a long period of time. There were many moments of catharsis and discovery that I experienced from the people who tested it out. It was unfortunate to hear 2 of my servo motors grind to a halt at the very last moment, yet there is a sort of surrealism in seeing the light being casted on the ground as participants walked past them. Perhaps it all worked out for the better.

Further Expansion

If not limited by material, I would love to extend the length of this piece and perhaps house it in a more ambient location. It is my desire to watch a long stretch of these blinds wave and light up as people walk past.