Makeup Man

Programming and Physical Computing: Mingyue Chen

Fabrication: Ricky Zhang

Tools: Arduino, Laser Cut

Date: 2021.5

We designed a makeup robot that uses its legs to help the customer choose personalized makeup. To create a fun robot, we decided on one that uses its legs instead of its hands to apply makeup. When customers go to a cosmetics store, they will be surprised to see a robot that assists people who select the best makeup style and apply makeup. The user interface of our project allows users to control the duration of applying makeup by choosing between rush mode and normal mode. They can also select a heavy or light makeup style. After receiving the user’s input, the robot speaks with a mechanical voice. The robot will spend more time in the heavy makeup mode than the light makeup mode.

During the process, the biggest challenge for me is that the Arduino-P5.js communication is not very stable. In the beginning, we tried to make two legs of the robot doing the work. However, I find out that the power supply somehow related to communication stability. If I try to add more motors to the circuit, the communication portal will break during the process. For now, the interface is relatively simple. The user pushes the button to answer the questions like a questionnaire. To further develop this project, we will add more fun talks and relaxed interaction in the digital platform. I believe that there are still many spaces we can do within the digital interface.

Process:

Fabrications (Laser Cut)

Physical Computing:

Serial Communications:

P5.js Voice Interface:

https://editor.p5js.org/mc7706/present/yEN_J7BU7

Arduino Code:

#include <Servo.h>

Servo myservo1;
// create servo object to control a servo Left and Right               // create servo object to control a servo Up and Down
String data;
char pos;

void setup() {
  Serial.begin(9600);         // opens serial port, sets data rate to 9600 bps
  myservo1.attach(9);        // attaches the servo1 on pin 10        // attaches the servo2 on pin 9
}

void loop() {
  // send data only when you receive data:
  if (Serial.available() > 0) {
    // read the incoming data:
    data = Serial.read();
    pos = data.toInt();
    
    if (pos == 1){
      delay(2000);
       myservo1.write(180);
      delay(500);
      myservo1.write(0);
      delay(500);
       myservo1.write(180);
       delay(500);
        myservo1.write(0);
      delay(500);
       myservo1.write(180);
       delay(500);
   
   
    }  else if (pos == 2) {
      delay(2000);
         myservo1.write(180);
      delay(2000);
      myservo1.write(0);
      delay(2000);
       myservo1.write(180);
       delay(2000);
         myservo1.write(0);
      delay(2000);
       myservo1.write(180);
       delay(2000);
   
    } else if (pos == 3) {
      delay(2000);
       myservo1.write(180);
      delay(1000);
      myservo1.write(0);
      delay(1000);
       myservo1.write(180);
       delay(1000);
       myservo1.write(0);
      delay(1000);
       myservo1.write(180);
       delay(1000);
       myservo1.write(180);
      delay(1000);
      myservo1.write(0);
      delay(1000);
       myservo1.write(180);
       delay(1000);
       myservo1.write(0);
      delay(1000);
       myservo1.write(180);
       delay(1000);
       myservo1.write(180);
      delay(1000);
      myservo1.write(0);
      delay(1000);
       myservo1.write(180);
       delay(1000);
       myservo1.write(0);
      delay(1000);
       myservo1.write(180);
       delay(1000);
       myservo1.write(180);
      delay(1000);
      myservo1.write(0);
      delay(1000);
       myservo1.write(180);
       delay(1000);
       myservo1.write(0);
      delay(1000);
       myservo1.write(180);
       delay(1000);
        
     
    } else if (pos == 4) {
      delay(2000);
       myservo1.write(180);
      delay(1000);
      myservo1.write(0);
      delay(1000);
       myservo1.write(180);
       delay(1000);
       myservo1.write(180);
      delay(1000);
      myservo1.write(0);
      delay(1000);
       myservo1.write(180);
       delay(1000);

    
    
    }
    // print servo position
    Serial.print("Position: ");
    Serial.println(pos);
    delay(100); 
  }else{  myservo1.write(17);}
}
%d bloggers like this: