Interactive Sculpture : Your Wave of Happiness

by anaisafranco in Circuits > Art

1884 Views, 23 Favorites, 0 Comments

Interactive Sculpture : Your Wave of Happiness

Screen Shot 2014-11-14 at 1.02.49 PM.png
Screen Shot 2014-11-14 at 1.16.38 PM.png
Screen Shot 2014-11-14 at 1.13.19 PM.png
Your Wave of Happiness

Your Wave of Happiness its an interactive sculpture that generates an exuberant and colorful light wave when people walk on it. The work is part of Psychosomatic Series.Work developed during Art in residence at Creativity and Cognition Studios at UTS, University of Technology in Sydney, Australia. November, 2014.

I will show the process of the work that includes 3d modeling, laser cutting, electronics and assembling.

3D Modeling the Shape

Screen Shot 2015-02-18 at 8.58.59 PM.png
Screen Shot 2015-02-18 at 8.59.24 PM.png
Screen Shot 2015-02-18 at 8.59.14 PM.png
Screen Shot 2015-02-18 at 9.00.22 PM.png

I first modeled a shape using Meshmixer from Autodesk.

I was inspired by designing a little mountain that people could walk and sit on it.

I did a hole using boolean difference on the back of the shape to insert electronics.

Laser Cutting the Shape

Screen Shot 2015-02-18 at 9.05.56 PM.png
Screen Shot 2015-02-18 at 9.06.02 PM.png
10801988_10152836004583767_1869317213425941408_n.jpg

I laser cut the shape using 123d Make from Autodesk.

I selected the construction technique : Stacked Slices and used 87 sheets of 30x60 cm of Plywood.

Sanding the Shape

IMG_4535.JPG
IMG_4542.jpg
IMG_4549.JPG
IMG_4552.JPG
IMG_4556.JPG

I sand the shape until it got completely smooth. After I put a resin to protect the wood.

Controlling LED NEON FLEX With Arduino and Presence Sensor.

Screen Shot 2015-02-18 at 2.14.44 PM.png
Screen Shot 2015-02-18 at 2.12.32 PM.png
HRLV-EZ Ultrasonic Range Finder_200px.jpg
HRLV-AN-Single sensor.jpg
085-AST-300.jpg
IMG_4410.jpg
IMG_4415.jpg
IMG_4416.jpg
IMG_4425.JPG
IMG_4431.jpg
IMG_4508.jpg
IMG_4515.jpg

The interactive of the piece was done using Arduino, a presence sensor Max Botix (1 x Ultrasonic Range Finder – Maxbotix LV-EZ0) and LED NEON FLEX

1. Controlling LED NEON FLEX 12v with Arduino: The LED NEON FLEX can be controlled by use any power NPN or N-Channel MOSFET, make sure the transistor is rated to be able to pass as much current as you need. For example, since we draw about 0.2Amps per channel per meter, if you have a 5 meter strip you will need to pass up to 1 Ampere per transistor. Get the beefy "TO-220" packages, not the dinky little guys. Make sure they look like this: For basic, low-cost usage we suggest using N-channel MOSFETs such as the STP16NF06 - they are very popular and inexpensive. If you can't get those,TIP120 are also good but there is more voltage loss in a transistor than in a MOSFET which is why we suggest those first (less heat loss, more light!). In this project I used 1 TIP120 for each color. The project had 6 colors. So, I used 6 TIP120 in a circuit.

2. the presence sensor were connected in Pin number 8.

Follow the code:

#include "Maxbotix.h"

int led = 13;

int led1 = 11;

int led2 = 10;

int led3 = 9;

int led4 = 5;

int led5 = 3;

int ledPins[] = {

13, 11, 10, 9, 5, 3};

int pinCount = 5;

int timer = 60;

Maxbotix rangeSensorPW(8, Maxbotix::PW, Maxbotix::LV);

float distancia=40;

void setup() {

Serial.begin(9600);

pinMode(led, OUTPUT);

pinMode(led1, OUTPUT);

pinMode(led2, OUTPUT);

pinMode(led3, OUTPUT);

pinMode(led4, OUTPUT);

pinMode(led5, OUTPUT);

}

// the loop routine runs over and over again forever:

void loop() {

distancia=rangeSensorPW.getRange();

Serial.print("cm - ");

Serial.println(distancia);

if (distancia<80){

/* for (int i=0; i < pinCount; i++){

digitalWrite(ledPins[i], HIGH);

delay(timer);

digitalWrite(ledPins[i], LOW); */

digitalWrite(led, HIGH);

digitalWrite(led1, HIGH);

digitalWrite(led2, HIGH);

digitalWrite(led3, HIGH);

digitalWrite(led4, HIGH);

digitalWrite(led5, HIGH);

delay(50);

digitalWrite(led, LOW);

digitalWrite(led1, LOW);

digitalWrite(led2, LOW);

digitalWrite(led3, LOW);

digitalWrite(led4, LOW);

digitalWrite(led5, LOW);

delay(30);

digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)

delay(50); // wait for a second

digitalWrite(led, LOW); // turn the LED off by making the voltage LOW

delay(30); // wait for a second

digitalWrite(led1, HIGH); // turn the LED on (HIGH is the voltage level)

delay(50); // wait for a second

digitalWrite(led1, LOW); // turn the LED off by making the voltage LOW

delay(30); // wait for a second

digitalWrite(led2, HIGH); // turn the LED on (HIGH is the voltage level)

delay(50); // wait for a second

digitalWrite(led2, LOW); // turn the LED off by making the voltage LOW

delay(30); // wait for a second

digitalWrite(led, HIGH);

digitalWrite(led1, HIGH);

digitalWrite(led2, HIGH);

digitalWrite(led3, HIGH);

digitalWrite(led4, HIGH);

digitalWrite(led5, HIGH);

delay(50);

digitalWrite(led, LOW);

digitalWrite(led1, LOW);

digitalWrite(led2, LOW);

digitalWrite(led3, LOW);

digitalWrite(led4, LOW);

digitalWrite(led5, LOW);

delay(30);

digitalWrite(led5, HIGH); // turn the LED on (HIGH is the voltage level)

delay(50); // wait for a second

digitalWrite(led5, LOW); // turn the LED off by making the voltage LOW

delay(30); // wait for a second

digitalWrite(led3, HIGH); // turn the LED on (HIGH is the voltage level)

delay(50); // wait for a second

digitalWrite(led3, LOW); // turn the LED off by making the voltage LOW

delay(30); // wait for a second

digitalWrite(led4, HIGH); // turn the LED on (HIGH is the voltage level)

delay(50); // wait for a second

digitalWrite(led4, LOW); // turn the LED off by making the voltage LOW

delay(30); // wait for a second

Serial.println("encendido");

//delay(1000);

//digitalWrite(MotorControl,LOW);// NO3 and COM3 Disconnected;

delay(100);

}

else

{

digitalWrite(led, LOW);

digitalWrite(led1, LOW);

digitalWrite(led2, LOW);

digitalWrite(led3, LOW);

digitalWrite(led4, LOW);

digitalWrite(led5, LOW);

Serial.println("apagado");

delay(100);

}

}