Project Title: Flower of Love
Name: Evelyn Yao
Partner: Beatrice Zhang
Instructor: Andy Garcia
Context & Significance:
From my previous research, interaction is a kind of dynamic relation that strengthens the reaction between two actors (or things). And the reactions they make involve many senses, such as listening, speaking and thinking. Consequently, in this project, I tried to engage multiple senses of the participants.
In this project, we aim to represent the traditional Chinese love story from a modern perspective. Despite the roughness of our work, with this piece, we explored the possibility of recreating a classic. This may help traditional stories survive in the contemporary era.
Conception & Design:
Here is our initial idea:
In the classic Chinese story Butterfly Lovers, both protagonists commit suicide in defense of their freedom to pursue love rather than being trapped by the feudalistic view of love. After their deaths, they transform into butterflies and are united forever. In the creation process, we made some adjustments to the movement of the butterflies. In our revised project, the two butterflies connected to the servos would move, as if they were trying to find their lover when they were alone. With the help of the participants, the magnetic sensor would be triggered, and the butterflies would calm down.
In front of the butterflies, we placed a flower symbolizing love. Initially, we planned to install a LDR sensor inside the flower to detect the movement of the audience, along with petals mounted on several servos. When our hands came close to the flower, casting shadows, the movement of servos would cause closed petals to bloom and the LED to turn on. However, we found that a distance sensor might be more suitable, as it could avoid interference due to lighting and shading. Additionally, we incorporated a buzzer into the flower so that participants could engage more of their senses.
We used iron wire to create the main structure of the butterflies and the flower. As for the project’s primary materials, we chose organza, aiming to create a fairy-like atmosphere.
Here is our material list:
- Arduino*1;
- breadboard*1;
- cable*n;
- distance sensor*1;
- magnetic sensor*1;
- magnet*1;
- buzzer*1;
- LED*1;
- servo*6;
- iron wire;
- organza*4 (black, white, green, red);
- painting*n;
- brush*n;
- cardboard*2;
Fabrication & Production:
Initially, we ensured that we had a clear understanding of the content of our project and began coding and building basic circuits. I was responsible for the coding, while Beatrice handled the circuit connections. During this process, we discovered that the current from the computer alone was not sufficient to support all the components. Therefore, we introduced an external power source.
Later, we started our DIY part. We made the flower and butterflies together, using organza of different colors and iron wires.
After combing the circuits and the DIY subjects, we started our user testing part. In this process, we found the problem existing and made necessary adjustments. In terms our code, we initially included too many “delay” in the tone, which hindered the smooth operation of our devices. Meanwhile, the movements of the petals were too rapid and rigid. With the help of our instructor and fellow, we modified our code and solved the problem. In this session, we also received valuable advices about how to enhance the visual appeal of our project
Then, we focused on polishing our project. We conducted numerous tests to ensure everything ran smoothly. We also made some decorations to create a more fairy-like atmosphere. We made a signboard to imply audiences what they are expected to do.
Here is our circuit connections:
Here is our code after revisions:
const int trigPin = 9;
const int echoPin = 10;
float duration, distance;
long startTime = 0;
#include <Servo.h>
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;
Servo servo6;
int magnetState = 0;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
//
servo1.attach(5);
servo2.attach(6);
servo3.attach(7);
servo4.attach(8);
servo5.attach(12);
servo6.attach(11);
//
pinMode(3, OUTPUT); //led
//
Serial.begin(9600);
//
pinMode(4, INPUT); //magnet
//
Serial.println("Hello!");
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
magnetState = digitalRead(4);
duration = pulseIn(echoPin, HIGH);
distance = (duration * .0343) / 2;
Serial.print("Distance: ");
Serial.println(distance);
Serial.println(magnetState);
if (startTime != -1) {
if (millis() - startTime < 900) {
tone(13, 329);
} else if (millis() - startTime < 1800) {
tone(13, 391);
} else if (millis() - startTime < 2100) {
tone(13, 440);
} else if (millis() - startTime < 2700) {
tone(13, 523);
} else if (millis() - startTime < 2900) {
tone(13, 587);
} else if (millis() - startTime < 3300) {
tone(13, 440);
} else if (millis() - startTime < 3600) {
tone(13, 523);
} else if (millis() - startTime < 4200) {
tone(13, 391);
} else if (millis() - startTime < 5100) {
tone(13, 783);
} else if (millis() - startTime < 5400) {
tone(13, 1030);
} else if (millis() - startTime < 5700) {
tone(13, 880);
} else if (millis() - startTime < 6000) {
tone(13, 783);
} else if (millis() - startTime < 6300) {
tone(13, 659);
} else if (millis() - startTime < 6600) {
tone(13, 783);
} else if (millis() - startTime < 6900) {
tone(13, 587);
} else {
noTone(13);
for (int i = 60; i >= 0; i = i - 1) {
servo1.write(i);
servo2.write(i);
servo3.write(i);
servo4.write(i);
delay(50);
}
startTime = -1;
Serial.println("Turning off the sound");
}
}
if (magnetState == 0) {
digitalWrite(3, LOW);
servo5.write(random(60));
servo6.write(random(60));
}
if (distance < 20 && distance > 0 && magnetState == 1) {
Serial.println("Detected hand");
digitalWrite(3, HIGH);
if (startTime == -1) {
for (int i = 0; i < 60; i = i + 1) {
servo1.write(i);
servo2.write(i);
servo3.write(i);
servo4.write(i);
delay(50);
}
startTime = millis();
}
}
}
Conclusions:
Our project aimed to explore the possibility of presenting a traditional love story in a modern way. Overall, I believe this project meets my basic expectations for interaction; it engages multiple senses of participants, including visual, auditory, and tactile experiences. The audience ultimately followed our instructions: first, moving the butterflies together (which stopped the servos), and then approaching the flower (resulting in the blooming of closed petals, activation of the LED, and the buzzer).
However, the project is not without its imperfections and offers ample room for improvement. We could incorporate additional materials to make the initial part (moving the butterflies together) more engaging, providing the audience with more opportunities for exploration. Additionally, we might consider a different placement for the two butterflies, such as suspending them from the ceiling. The flower also requires refinement; replacing the installed LED with a NeoPixel LED Strip would result in a brighter and more vibrant display.
Overall, I think cooperation is extremely essential in this project. Proper division of labor could enhance our efficiency. We also need to solve the disagreements timely. Moreover, in the future project, we should pay more attention to time management so that we could have more time to improve our project and make it move forward.