A fire that started with the birth of human beings developed into a light and gave great visual and psychological effects to us. The meaning and effect of light are very diverse. It not only provides the source of eyesights but also provides psychological effects such as warmth and comfort. In particular, this project focused on the vitality of light movements and aimed at developing new lighting products that can interact with users.


In this project, I wished to make a prototype that actually works. For the realization of movement, I utilized Arduino, which can effectively make interactions that I intended. 


The Blooming project focused on the vitality of light and aimed to develop new interaction lighting that can interact with users.


While utilizing Arduino and devising internal structures to create a working prototype, I was able to understand a product design deeply with perspectives of a designer, a structural architect, and an engineer.

Proceeding at KSDS Conference

Team Project with

Hye Jin Seo, Hui won Seo


Blooming of a Flower

When flowers are bloomed by the warmth of the sun, people are delighted with it. From this behavior, I got the design motive of 'Giving and Receiving Warmth.' This led to the development of a design concept in which ‘Lights are bloomed by the warmth(Input) of a person and the lights deliver warmth(Output) to the person again.’


This is a user scenario of Blooming. When a user delivers warmth(Input) to the bottom of the light, the light will be turned on and starts to move. At the same time, the lights move as if they are Blooming(Output), giving the user a new interaction experience with lights.


This is a structure of Blooming. It is divided into an Actuating part and a Lighting part. 


This is an Arduino circuit of Booming. Since Blooming utilizes five motors, five lights, and three ultrasonic sensors, the complexity of the electric wires and the overload rate of the board were very high when I used the Uno-board. To handle these problems, I utilized the Mega-board that could cover the complexity of inner structures. (I simplified the circuit illustration above)

06 Light

A number of trials and errors have been made so that the lights could operate at uniform intervals as the motor rotates.


This is a part of the code I wrote on Arduino IDE, which deals with the movement of motors and ultrasonic sensing signals, and the operation of lights.

Motion 01

int interval = 4000;

const int motor1_pin1 = 8; const int motor1_pin2 = 7;

const int motor2_pin1 = 11; const int motor2_pin2 = 12;


const int motor3_pin1 = 10;

const int motor3_pin2 = 9;

const int motor4_pin1 = 3;

const int motor4_pin2 = 4;

const int motor5_pin1 = 5;

const int motor5_pin2 = 6;


const int LED_1 = 52; // LED

const int LED_2 = 36;

const int LED_3 = 53;

const int LED_4 = 28;

const int LED_5 = 24;

const int Echo_1 = 37; // 3-3 Untrasonic sensor

const int Trig_1 = 43; // 3-2

const int Echo_2 = 32;   //2-3

const int Trig_2 = 33;   //2-2

const int Echo_3 = 46;   //1-3

const int Trig_3 = 47;   //1-2

const int FSR_1 = A0; //Pressure sensor

const int FSR_2 = A1;


void setup() {  






pinMode(motor1_pin1, OUTPUT);   pinMode(motor1_pin2, OUTPUT);   pinMode(motor2_pin1, OUTPUT);   pinMode(motor2_pin2, OUTPUT);   pinMode(motor3_pin1, OUTPUT);   pinMode(motor3_pin2, OUTPUT);   pinMode(motor4_pin1, OUTPUT);   pinMode(motor4_pin2, OUTPUT);   pinMode(motor5_pin1, OUTPUT);   pinMode(motor5_pin2, OUTPUT);  




pinMode(LED_1, OUTPUT);  

pinMode(LED_2, OUTPUT);  

pinMode(LED_3, OUTPUT);  

pinMode(LED_4, OUTPUT);  

pinMode(LED_5, OUTPUT);

  //Untrasonic sensor

pinMode(Echo_1, INPUT);  

pinMode(Trig_1, OUTPUT);    

pinMode(Echo_2, INPUT);  

pinMode(Trig_2, OUTPUT);  

pinMode(Echo_3, INPUT);  

pinMode(Trig_3, OUTPUT);  


//Pressure sensor

pinMode(FSR_1, INPUT);  

pinMode(FSR_2, INPUT);    


void loop() {  

// put your main code here, to run repeatedly:    


float duration_1 = 0;  

float duration_2 = 0;  

float duration_3 = 0;    

float distance_1 = 0;  

float distance_2 = 0;  

float distance_3 = 0;  


int FSRReading_1 = analogRead(FSR_1);  

int FSRReading_2 = analogRead(FSR_2);  

//int brightness = map(FSRReading_1,0,1023,0,255);  

//int brightness = map(FSRReading_2,0,1023,0,255);


//Serial.println("Sensorvalue:"+String(FSRReading_1)+",     LEDOutput:" +String(brightness));    


digitalWrite(Trig_1, 0);  

digitalWrite(Trig_2, 0);  

digitalWrite(Trig_3, 0);    




digitalWrite(Trig_1, 1);  

digitalWrite(Trig_2, 1);  

digitalWrite(Trig_3, 1);  



digitalWrite(Trig_1, 0);  

digitalWrite(Trig_2, 0);  

digitalWrite(Trig_3, 0);  

duration_1 = pulseIn(Echo_1,1);  

duration_2 = pulseIn(Echo_2,1);  

duration_3 = pulseIn(Echo_3,1);   

distance_1 = (float)(340 * duration_1) / 10000 / 2;   Serial.print("\ndistance_1:");   Serial.print(distance_1);


distance_2 = (float)(340 * duration_2) / 10000 / 2;   Serial.print("\ndistance_2:");   Serial.print(distance_2);  

distance_3 = (float)(340 * duration_3) / 10000 / 2;  

Serial.print("\ndistance_3:");   Serial.print(distance_3);      

digitalWrite(LED_1, LOW); // LED1 Off    digitalWrite(LED_2, HIGH);    

digitalWrite(LED_3, HIGH);    

digitalWrite(LED_4, HIGH);    

digitalWrite(LED_5, HIGH);  


analogWrite(motor1_pin1, 0); //Motor1 halt   analogWrite(motor1_pin2, 0);      


analogWrite(motor2_pin1, 0); //Motor2 halt    analogWrite(motor2_pin2, 0);  


analogWrite(motor3_pin1, 0); //Motor3 halt    analogWrite(motor3_pin2, 0);  


analogWrite(motor4_pin1, 0); //Motor4 halt  analogWrite(motor4_pin2, 0);    


analogWrite(motor5_pin1, 0); //Motor5 halt  analogWrite(motor5_pin2, 0);




This is the final Blooming prototype. Angled surfaces and inner fabrics maximize the effect of lights and give warmth to users.

Blooming creates a new interactive experience.


The actuating part of Blooming is attached to a ceiling like other lights.

When a user places their hands to the bottom of one of the lights 1, 3, and 5, lights will turn on and start to move. 

The lights go out in the order they were first moved.

Gently place your hands to the bottom of flowball.

The light that received input lights up and starts to move up.

After that, the other lights move up one by one in a wave-like shape.


Proceeding Paper

This is a KSDS(Korea Society of Design Science) Conference academic presentation proceeding paper.

Presentation & Award

Thank You.