leavesdrop
Made by Jacqueline Chien ·
Made by Jacqueline Chien ·
A creative art piece that transforms the environment into the observer and the viewer into the observed.
Created: September 15th, 2015
During a recent visit to the Phipps Conservatory and Botanical Gardens, I became intrigued with the idea that as people, we interact with our surrounding environment generally as if it were a static backdrop to our daily experiences.
Therefore I wanted to explore a scenario where instead the environment is the character experiencing us. Turning aspects from passive set pieces to active characters momentarily upsets the conventional relationship between humans and their immediate surroundings.
I decided to design a small flower installation because it would be both unobtrusive and can be featured both in an area full of actual plant life, or in most types of room as a simple decoration. Typically, flower arrangements go unnoticed fairly easily, so I wanted to create a way to draw attention through motion, noise, and lighting.
Colored lights make the flowers’ “emotions” less ambiguous. In their resting state, they reflect a calm blue and purple color. When the arrangement is startled or disturbed, the colors flip to red and yellow to show the flowers’ alarm and discontent.
A microphone is used to sense loud disturbances (more specifically, the abrupt opening or closing of a door) for the flowers to react to. As an aesthetic choice, I did not try to make the flowers as realistic as possible (e.g. using fake flower arrangements), to make them more eye-catching when they react. The flowers’ movement in response to sound mimics the same reaction people have to someone entering their space. For example, if a student is studying in a quiet room and a person walks into the room, his or her head will automatically turn towards the disturbance. To reproduce the same effect, the flowers swing to face the noise, startled. To further anthropomorphize the flowers, they quickly shudder as if shaking their heads in disapproval.
Overall, I wanted to design an art piece that made people conscious of the fact that they actively affect the environment they encounter.
I used RGB LEDs for the flower lights. I purposefully chose insulated wire colors to not only reflect which pins they connected to on each LED, but also to generate an aesthetically pleasing rainbow pattern for the stem. I created five-petal origami flowers from white paper. The stem mounted on a servo with a 180 range of movement. The box encasing the hardware is made from balsa wood and wrapped in black paper to create contrast.
The microphone input is subjected to a smoothing algorithm to filter out excess signals; the average input values (0-1023) are used to determine whether if a door is being opened or closed. I determined the rough threshold value to occur above ~250. An if-else statement controls the flowers’ resting state, color, and movement in response to values that occur above the threshold.
#include <Servo.h>
// servos
Servo flwr1;
// servo positions
int startleCount = 0;
int blueCount = 0;
// RGB LEDs on PWN pins
const int flwrLED1R = 6;
const int flwrLED1G = 5;
const int flwrLED1B = 3;
const int flwrLED2R = 11;
const int flwrLED2G = 10;
const int flwrLED2B = 9;
// microphone
const int micPin = A0;
// smoothing
const int numReadings = 10;
int readings[numReadings]; // the readings from the analog input
int readIndex = 0; // the index of the current reading
int total = 0; // the running total
int average = 0; // the average
int mapAvg = 0;
void setup() {
// attach servos to pins
flwr1.attach(2);
flwr1.write(0);
// initialize LEDs to white
pinMode(flwrLED1R, OUTPUT);
analogWrite(flwrLED1R, 0);
pinMode(flwrLED1G, OUTPUT);
analogWrite(flwrLED1G, 0);
pinMode(flwrLED1B, OUTPUT);
analogWrite(flwrLED1B, 0);
pinMode(flwrLED2R, OUTPUT);
analogWrite(flwrLED2R, 0);
pinMode(flwrLED2G, OUTPUT);
analogWrite(flwrLED2G, 0);
pinMode(flwrLED2B, OUTPUT);
analogWrite(flwrLED2B, 0);
// initialize microphone
pinMode(micPin, INPUT);
// initialize serial communication with computer:
Serial.begin(9600);
// initialize all the readings to 0:
for (int thisReading = 0; thisReading < numReadings; thisReading++)
readings[thisReading] = 0;
}
void loop() {
// subtract the last reading:
total = total - readings[readIndex];
// read from the sensor:
readings[readIndex] = analogRead(micPin);
// add the reading to the total:
total = total + readings[readIndex];
// advance to the next position in the array:
readIndex = readIndex + 1;
// if we're at the end of the array...
if (readIndex >= numReadings)
// ...wrap around to the beginning:
readIndex = 0;
// calculate the average:
average = total / numReadings;
// send it to the computer as ASCII digits
Serial.println(average);
delay(1); // delay in between reads for stability
// map to values
mapAvg = map(average, 0, 1023, 0, 255);
// react to door opening or door slam
if (average <= 200) {
// flwr1
flwr1Color(255,0,0);
// flwr2
flwr2Color(0,255,0);
// remove echo
delay(175);
startleCount = 0;
} else {
// flwr1
flwr1Color(0,0,255);
//flwr2
flwr2Color(0,255,255);
if (startleCount != 1) {
for (int i=0; i<=180; i+=1) {
flwr1.write(i);
delay(1);
}
delay(1000);
flwr1.write(170);
delay(150);
flwr1.write(180);
delay(125);
flwr1.write(170);
delay(125);
flwr1.write(180);
delay(125);
flwr1.write(170);
delay(125);
flwr1.write(180);
delay(125);
for (int i=180; i>=0; i-=1) {
flwr1.write(i);
delay(20);
}
// reset
startleCount = 1;
}
}
}
// control LED color
void flwr1Color (int r, int g, int b) {
analogWrite(flwrLED1R, r);
analogWrite(flwrLED1G, g);
analogWrite(flwrLED1B, b);
}
void flwr2Color (int r, int g, int b) {
analogWrite(flwrLED2R, r);
analogWrite(flwrLED2G, g);
analogWrite(flwrLED2B, b);
}
Click to Expand
The overall installation is small and may not immediately attract attention, which would certainly render the display less effective. The microphone is not a particularly sensitive or accurate sensor, so I was limited to the presence or absence of a certain volume of sound. Also, the servo is not multi-directional, which limits the type of movement that can be produced and interpreted.
A larger vision for this project’s goals would potentially involve an entire room or space with larger, more complex electronic flora and fauna that could actively respond to or essentially follow a person who enters and remains in the room. More sensors could be used (e.g. light, touch, infrared, etc.) to make the design more interactive and thought-provoking. Overall, providing more varied and visually assertive context would provide a much greater influence upon a person’s thoughts and behaviors.
Phipps Conservatory and Botanical Gardens
Video cast: Will Miao and Jacob Jorgensen
Sparkfun Project: Origami Paper Circuits
This project is only accessible by signed in users. Be considerate and think twice before sharing.
Making Things Interactive (MTI) is a studio course based on physical prototyping and computing. You will develop novel sensing, interaction and display techniques through projects and short assignm...more
A creative art piece that transforms the environment into the observer and the viewer into the observed.