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. 


Actuating Part

The actuating part consists of driving elements for the movement of the lights and supply elements for power supply.

01 Arduino-Mega

Arduino-Mega Board to reduce the wiring complexity.

03 Relay

Relays to control the lights' currents

02 DC Motor

Dc motor to lift the weight of the lights

Lighting Part

The lighting part consists of lights, LED, and ultrasonic sensors for sensing the input of users.

01 Cob LED

Cob LED which is 10 times brighter than normal LED

02 Ultrasonic Sensor

Utilization of two-wave ultrasonic sensor for high sensing rate


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)


01 Arduino-Mega

Five motors, five relays, and five LEDs cannot be processed with the existing Uno-Board. Therefore, I utilized the Mega-Board and carefully managed the pin numbers to reduce the complexity of wiring and to ensure optimum operation.

02 Ultrasonic Sensor

In order to create the intended interaction, I studied wiring that is the simplest and could utilize two or more ultrasonic sensors.

03 SMPS & Relay

When supplying power to various elements, SMPS and Relays were used to convert 220v to 12v which fits the voltage of Mega-Board, LED, and motor.

04 Motor

Motor drivers were installed for a stable power supply and an operation of the motors. 

05 Wire Labeling

To facilitate the modification and management of the inner wiring in the actuating part, I labeled and categorized them.

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);



Two string wires were used for the movement of the light. String 1 is attached to the Actuating box and holds the light from moving down too far. String 2 connects the lower end of the light and the pulley, and control the overall movement. In order to make the lights move sequentially, like a blooming of flowers, I inserted supporting plates between the fabrics and connected them to each other.


In order to make the five pulleys operate smoothly at the same time, it was necessary to adjust the direction of each line and to properly arrange the space. The separation wall was set up around the pulley so that only the string could be wound on the pulley without any friction with other electric wires, and the electric wires connected to the light were set to move outside the separation wall.

Through the above process, I was able to achieve a working distance of 53.4cm when rotating the pulley twice with a diameter of 8.5 and a circumference of 26.7cm.


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.