Interactive Sculpture : Your Wave of Happiness
by anaisafranco in Circuits > Art
1884 Views, 23 Favorites, 0 Comments
Interactive Sculpture : 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
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
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
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.
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);
}
}