Introduction: Moving Grid With Infinity Mirror

those videos are making video and moving video.

We wanted to show the swaying space through moving grids and the Infinity Mirror to show the sense of space more effectively.

Our work consists of two acrylic plates, the front, and the backplates, which show people the way they are directly agitating, and the backplates have 25 step motors that actually produce movement.

The work consists of a front panel that will show the glimmers of space, a wooden stick that executes the middle movement, a guide for the rods, and a backboard that creates movement through 25 step motors.

The 25 peaks of the grid-connected to the 25 step motors produce different patterns according to the set coding values. In addition, the company wanted to maximize the space by combining transparent acrylic with front half-mirror film, rear mirror, and black-lighted Infinity mirror. Various patterns of animation are made based on waves and drabs that are made based on the waves of water.

Supplies

Supplies

1.UV LED 12V 840cm

2.Rubber white 12mm 750cm

3.Arduino mega 2560 x2

4.Motor driver x25

5.Stepper motor x25

6.Bipolar cable for stepper motor x25

7.Wood cylinder x25

8.pvc (9mm) x25

9.Spring x 25

10.acrylic 700mm*700mm

11.Half mirror film 1524mm * 1M

12.Fishing line

13.Power 12V 12.5A ,12V 75A

14. timing pulley(3d print) x 25

Step 1: Plan a Big Framework

When we start, we need to plan and draw a big framework. so, we prepared a pdf file for acrylic overall frame and timing pulley stl file(what we put them in front of step motor for wind thread that can pull a mid-wood rod).

with the acrylic overall frame and timing pulley, we need to make stl file first, and 3d printing.

Step 2: Making Hardware

box1

1. Place 2T acrylic black (No. 1) on the floor and attach 5T acrylic black side (No. 2) on top. Add 5T acrylic black grid (No. 3) and attach it using acrylic bond.

box2

2.Sprinkle water on acrylic transparent plate and top with semi-mirror film. A half mirror rolls a card to keep it from bubbling. Attach the side (2) and the acrylic transparency (1). Do not secure the combined acrylic protrusion and acrylic mirrors (No. 1) laterally. Temporarily fix it with tape (for repair off the fishing line or renovate the interior).

Step 3: Making Grid

1. A wooden column is 12mm in size. Drill a hole in the end to allow the fishing line to enter.

2.Attach acrylic plates to the other side of a perforated wooden column using adhesive.

3.Put a rubber band through the back of a wooden pillar and put a spring in it.

4.Overall shape

Step 4:

1.Arduino Mega 2560 Pin Connection Number

2.divide the electricity into two parts

3.Stepper motor and motor driver circuit

4.Two Arduino mega2560s are connected by crossing TX and RX for serial communication.

Step 5: Code

<p>#include <StepperMulti.h>

StepperMulti stepper(200, 2, 3, 4, 5);                   // stepper motor numbering
StepperMulti stepper2(200, 6, 7, 8, 9);
StepperMulti stepper3(200, 10, 11, 12, 13);
StepperMulti stepper4(200, A0, A1, A2, A3);
StepperMulti stepper5(200, A4, A5, A6, A7);
StepperMulti stepper6(200, 22, 23, 24, 25);
StepperMulti stepper7(200, 26, 27, 28, 29);
StepperMulti stepper8(200, 30, 31, 32, 33);
StepperMulti stepper9(200, 34, 35, 36, 37);
StepperMulti stepper10(200, 38, 39, 40, 41);
StepperMulti stepper11(200, 42, 43, 44, 45);
StepperMulti stepper12(200, 46, 47, 48, 49);
StepperMulti stepper13(200, 50, 51, 52, 53);

uint32_t on_timer = millis();
uint32_t set_timer1 = millis();
uint32_t set_timer2 = millis();
uint32_t set_timer3 = millis();
uint32_t set_timer4 = millis();
uint32_t set_timer5 = millis();
uint32_t set_timer6 = millis();
uint32_t set_timer7 = millis();
uint32_t set_timer8 = millis();
uint32_t set_timer9 = millis();
uint32_t set_timer10 = millis();

int count = 0;
int init_set_speed</p><p>void setup()
Serial1.begin(115200);                                       //serial communication
  Serial.begin(9600);
  stepper.setSpeed(init_set_speed);
  stepper2.setSpeed(init_set_speed);
  stepper3.setSpeed(init_set_speed);
  stepper4.setSpeed(init_set_speed);
  stepper5.setSpeed(init_set_speed);
  stepper6.setSpeed(init_set_speed);
  stepper7.setSpeed(init_set_speed);
  stepper8.setSpeed(init_set_speed);
  stepper9.setSpeed(init_set_speed);
  stepper10.setSpeed(init_set_speed);
  stepper11.setSpeed(init_set_speed);
  stepper12.setSpeed(init_set_speed);
  stepper13.setSpeed(init_set_speed);
}
int SPEED = 200;                                               // motor speed
void loop()
{ /////////////////////////////////////
  if (millis() - set_timer1 < 6000 ) {                   // Stepper motor 13 moves between 1500 and 6000 seconds.<    if (millis() - on_timer < 1500) {
      stepper13.setStep(SPEED);
    }
    else if (millis() - on_timer < 3000) {
      stepper13.setStep(-SPEED);                           //(-SPEED) means reverse rotation    }    else if (millis() - on_timer < 4500) {
      stepper13.setStep(SPEED);
    }
    else if (millis() - on_timer < 6000) {
      stepper13.setStep(-SPEED);
    }
    else {
      stepper13.setStep(0);
    }
  }
  else {
    stepper13.setStep(0);  }
  if (count == 0) {
    if ( millis() - set_timer1 > 1000 ) {
      Serial1.write(0x01);
      count = 1 ;
    }
  }
  ////////////////////////
      if (millis() - set_timer2 < 7000  & millis() - set_timer2 > 1000) {
        if (millis() - on_timer < 2500) {
          stepper7.setStep(SPEED);
          stepper8.setStep(SPEED);
          stepper9.setStep(SPEED);
          stepper12.setStep(SPEED);
        }
        else if (millis() - on_timer < 4000) {
          stepper7.setStep(-SPEED);
          stepper8.setStep(-SPEED);
          stepper9.setStep(-SPEED);
          stepper12.setStep(-SPEED);
        }
        else if (millis() - on_timer < 5500) {
          stepper7.setStep(SPEED);
          stepper8.setStep(SPEED);
          stepper9.setStep(SPEED);
          stepper12.setStep(SPEED);
        }
        else if (millis() - on_timer < 7000) {
          stepper7.setStep(-SPEED);
          stepper8.setStep(-SPEED);
          stepper9.setStep(-SPEED);
          stepper12.setStep(-SPEED);
        }
        else {
          stepper7.setStep(0);
          stepper8.setStep(0);
          stepper9.setStep(0);
          stepper12.setStep(0);
        }
      }
      else {      stepper7.setStep(0);
        stepper8.setStep(0);
        stepper9.setStep(0);
        stepper12.setStep(0);    }
  if ( millis() - set_timer2 < 7000 & millis() - set_timer2 > 1000 )
  {
    if (millis() - on_timer < 2500) {
      stepper2.setStep(SPEED);
      stepper5.setStep(-SPEED);
      stepper6.setStep(SPEED);
      stepper7.setStep(SPEED);
    }
    else if (millis() - on_timer < 4000) {
      stepper2.setStep(-SPEED);
      stepper5.setStep(SPEED);
      stepper6.setStep(-SPEED);
      stepper7.setStep(-SPEED);
    }
    else if (millis() - on_timer < 5500) {
      stepper2.setStep(SPEED);
      stepper5.setStep(-SPEED);
      stepper6.setStep(SPEED);
      stepper7.setStep(SPEED);
    }
    else if (millis() - on_timer < 7000) {
      stepper2.setStep(-SPEED);
      stepper5.setStep(SPEED);
      stepper6.setStep(-SPEED);
      stepper7.setStep(-SPEED);
    }
    else {
      stepper2.setStep(0);
      stepper5.setStep(0);
      stepper6.setStep(0);
      stepper7.setStep(0);
    }
  }
  else {
    stepper2.setStep(0);
    stepper5.setStep(0);
    stepper6.setStep(0);
    stepper7.setStep(0);
  }
  ///////////////////////////////////////////////
    if ( millis() - set_timer3 < 8000 & millis() - set_timer3 > 2000 ) {

     if (millis() - on_timer < 3500) {
          stepper.setStep(SPEED);
          stepper2.setStep(SPEED);
          stepper3.setStep(SPEED);
          stepper4.setStep(SPEED);
          stepper5.setStep(SPEED);
          stepper6.setStep(SPEED);
          stepper10.setStep(SPEED);
          stepper11.setStep(SPEED);   }
        else if (millis() - on_timer < 5000) {
          stepper.setStep(-SPEED);
          stepper2.setStep(-SPEED);
          stepper3.setStep(-SPEED);
          stepper4.setStep(-SPEED);
          stepper5.setStep(-SPEED);
          stepper6.setStep(-SPEED);
          stepper10.setStep(-SPEED);
          stepper11.setStep(-SPEED);
        }
        else if (millis() - on_timer < 6500) {
          stepper.setStep(SPEED);
          stepper2.setStep(SPEED);
          stepper3.setStep(SPEED);
          stepper4.setStep(SPEED);
          stepper5.setStep(SPEED);
          stepper6.setStep(SPEED);
          stepper10.setStep(SPEED);
          stepper11.setStep(SPEED);     }
        else if (millis() - on_timer < 8000) {
          stepper.setStep(-SPEED);
          stepper2.setStep(-SPEED);
          stepper3.setStep(-SPEED);
          stepper4.setStep(-SPEED);
          stepper5.setStep(-SPEED);
          stepper6.setStep(-SPEED);
          stepper10.setStep(-SPEED);
          stepper11.setStep(-SPEED);      }
        else {
          stepper.setStep(0);
          stepper2.setStep(0);
          stepper3.setStep(0);
          stepper4.setStep(0);
          stepper5.setStep(0);
          stepper6.setStep(0);
          stepper10.setStep(0);
          stepper11.setStep(0);        }
      }
      else {
        stepper.setStep(0);
        stepper2.setStep(0);
        stepper3.setStep(0);
        stepper4.setStep(0);
        stepper5.setStep(0);
        stepper6.setStep(0);
        stepper10.setStep(0);
        stepper11.setStep(0);    }
  if ( millis() - set_timer3 < 8000 & millis() - set_timer3 > 2000 ) {
    if (millis() - on_timer < 3500) {
      stepper3.setStep(SPEED);
      stepper4.setStep(SPEED);
      stepper8.setStep(SPEED);
      stepper9.setStep(SPEED);
      stepper10.setStep(SPEED);
      stepper11.setStep(SPEED);
      stepper12.setStep(SPEED);
      stepper13.setStep(SPEED);
    }
    else if (millis() - on_timer < 5000) {
      stepper3.setStep(-SPEED);
      stepper4.setStep(-SPEED);
      stepper8.setStep(-SPEED);
      stepper9.setStep(-SPEED);
      stepper10.setStep(-SPEED);
      stepper11.setStep(-SPEED);
      stepper12.setStep(-SPEED);
      stepper13.setStep(-SPEED);
    }
    else if (millis() - on_timer < 6500) {
      stepper3.setStep(SPEED);
      stepper4.setStep(SPEED);
      stepper8.setStep(SPEED);
      stepper9.setStep(SPEED);
      stepper10.setStep(SPEED);
      stepper11.setStep(SPEED);
      stepper12.setStep(SPEED);
      stepper13.setStep(SPEED);
    }
    else if (millis() - on_timer < 8000) {
      stepper3.setStep(-SPEED);
      stepper4.setStep(-SPEED);
      stepper8.setStep(-SPEED);
      stepper9.setStep(-SPEED);
      stepper10.setStep(-SPEED);
      stepper11.setStep(-SPEED);
      stepper12.setStep(-SPEED);
      stepper13.setStep(-SPEED);
    }  else {
      stepper3.setStep(0);
      stepper4.setStep(0);
      stepper8.setStep(0);
      stepper9.setStep(0);
      stepper10.setStep(0);
      stepper11.setStep(0);
      stepper12.setStep(0);
      stepper13.setStep(0);
    } }
  else  {
    stepper3.setStep(0);
    stepper4.setStep(0);
    stepper8.setStep(0);
    stepper9.setStep(0);
    stepper10.setStep(0);
    stepper11.setStep(0);
    stepper12.setStep(0);
    stepper13.setStep(0);
  }/////////////////////////////////stepper.moveStep();
stepper2.moveStep();
stepper3.moveStep();
stepper4.moveStep();
stepper5.moveStep();
stepper6.moveStep();
stepper7.moveStep();
stepper8.moveStep();
stepper9.moveStep();
stepper10.moveStep();
stepper11.moveStep();
stepper12.moveStep();
stepper13.moveStep();
}

frist codeing

and..

#include <steppermulti.h>

StepperMulti stepper(200, 2, 3, 4, 5);
StepperMulti stepper2(200, 6, 7, 8, 9);
StepperMulti stepper3(200, 10, 11, 12, 13);
StepperMulti stepper4(200, A0, A1, A2, A3);
StepperMulti stepper5(200, A4, A5, A6, A7);
StepperMulti stepper6(200, 22, 23, 24, 25);
StepperMulti stepper7(200, 26, 27, 28, 29);
StepperMulti stepper8(200, 30, 31, 32, 33);
StepperMulti stepper9(200, 34, 35, 36, 37);
StepperMulti stepper10(200, 38, 39, 40, 41);
StepperMulti stepper11(200, 42, 43, 44, 45);
StepperMulti stepper12(200, 46, 47, 48, 49);
StepperMulti stepper13(200, 50, 51, 52, 53);

uint32_t on_timer = millis();
uint32_t set_timer1 = millis();
uint32_t set_timer2 = millis();
uint32_t set_timer3 = millis();
uint32_t set_timer4 = millis();
uint32_t set_timer5 = millis();
uint32_t set_timer6 = millis();
uint32_t set_timer7 = millis();
uint32_t set_timer8 = millis();
uint32_t set_timer9 = millis();
uint32_t set_timer10 = millis();

int count = 0;
int init_set_speed = 10;

void setup()

 Serial1.begin(115200);
  Serial.begin(9600);
  stepper.setSpeed(init_set_speed);
  stepper2.setSpeed(init_set_speed);
  stepper3.setSpeed(init_set_speed);
  stepper4.setSpeed(init_set_speed);
  stepper5.setSpeed(init_set_speed);
  stepper6.setSpeed(init_set_speed);
  stepper7.setSpeed(init_set_speed);
  stepper8.setSpeed(init_set_speed);
  stepper9.setSpeed(init_set_speed);
  stepper10.setSpeed(init_set_speed);
  stepper11.setSpeed(init_set_speed);
  stepper12.setSpeed(init_set_speed);
  stepper13.setSpeed(init_set_speed);
}
int SPEED = 200;
void loop()
{</p><p>  /////////////////////////////////////
  if (millis() - set_timer1 < 6000 ) {
    if (millis() - on_timer < 1500) {
      stepper13.setStep(SPEED);
    }
    else if (millis() - on_timer < 3000) {
      stepper13.setStep(-SPEED);
    }
    else if (millis() - on_timer < 4500) {
      stepper13.setStep(SPEED);
    }
    else if (millis() - on_timer < 6000) {
      stepper13.setStep(-SPEED);
    }
    else {
      stepper13.setStep(0);
    }
  }
  else {
    stepper13.setStep(0);

 }
  if (count == 0) {
    if ( millis() - set_timer1 > 1000 ) {
      Serial1.write(0x01);
      count = 1 ;
    }
  }
  ////////////////////////
      if (millis() - set_timer2 < 7000  & millis() - set_timer2 > 1000) {
        if (millis() - on_timer < 2500) {
          stepper7.setSteㄴp(SPEED);
          stepper8.setStep(SPEED);
          stepper9.setStep(SPEED);
          stepper12.setStep(SPEED);
        }
        else if (millis() - on_timer < 4000) {
          stepper7.setStep(-SPEED);
          stepper8.setStep(-SPEED);
          stepper9.setStep(-SPEED);
          stepper12.setStep(-SPEED);
        }
        else if (millis() - on_timer < 5500) {
          stepper7.setStep(SPEED);
          stepper8.setStep(SPEED);
          stepper9.setStep(SPEED);
          stepper12.setStep(SPEED);
        }
        else if (millis() - on_timer < 7000) {
          stepper7.setStep(-SPEED);
          stepper8.setStep(-SPEED);
          stepper9.setStep(-SPEED);
          stepper12.setStep(-SPEED);
        }
        else {
          stepper7.setStep(0);
          stepper8.setStep(0);
          stepper9.setStep(0);
          stepper12.setStep(0);
        }
      }
      else {

       stepper7.setStep(0);
        stepper8.setStep(0);
        stepper9.setStep(0);
        stepper12.setStep(0);   

 }
  if ( millis() - set_timer2 < 7000 & millis() - set_timer2 > 1000 )
  {
    if (millis() - on_timer < 2500) {
      stepper2.setStep(SPEED);
      stepper5.setStep(-SPEED);
      stepper6.setStep(SPEED);
      stepper7.setStep(SPEED);
    }
    else if (millis() - on_timer < 4000) {
      stepper2.setStep(-SPEED);
      stepper5.setStep(SPEED);
      stepper6.setStep(-SPEED);
      stepper7.setStep(-SPEED);
    }
    else if (millis() - on_timer < 5500) {
      stepper2.setStep(SPEED);
      stepper5.setStep(-SPEED);
      stepper6.setStep(SPEED);
      stepper7.setStep(SPEED);
    }
    else if (millis() - on_timer < 7000) {
      stepper2.setStep(-SPEED);
      stepper5.setStep(SPEED);
      stepper6.setStep(-SPEED);
      stepper7.setStep(-SPEED);
    }
    else {
      stepper2.setStep(0);
      stepper5.setStep(0);
      stepper6.setStep(0);
      stepper7.setStep(0);
    }
  }
  else {
    stepper2.setStep(0);
    stepper5.setStep(0);
    stepper6.setStep(0);
    stepper7.setStep(0);
  }
  ///////////////////////////////////////////////
    if ( millis() - set_timer3 < 8000 & millis() - set_timer3 > 2000 ) {

       if (millis() - on_timer < 3500) {
          stepper.setStep(SPEED);
          stepper2.setStep(SPEED);
          stepper3.setStep(SPEED);
          stepper4.setStep(SPEED);
          stepper5.setStep(SPEED);
          stepper6.setStep(SPEED);
          stepper10.setStep(SPEED);
          stepper11.setStep(SPEED);       }
        else if (millis() - on_timer < 5000) {
          stepper.setStep(-SPEED);
          stepper2.setStep(-SPEED);
          stepper3.setStep(-SPEED);
          stepper4.setStep(-SPEED);
          stepper5.setStep(-SPEED);
          stepper6.setStep(-SPEED);
          stepper10.setStep(-SPEED);
          stepper11.setStep(-SPEED);
        }
        else if (millis() - on_timer < 6500) {
          stepper.setStep(SPEED);
          stepper2.setStep(SPEED);
          stepper3.setStep(SPEED);
          stepper4.setStep(SPEED);
          stepper5.setStep(SPEED);
          stepper6.setStep(SPEED);
          stepper10.setStep(SPEED);
          stepper11.setStep(SPEED);     }
        else if (millis() - on_timer < 8000) {
          stepper.setStep(-SPEED);
          stepper2.setStep(-SPEED);
          stepper3.setStep(-SPEED);
          stepper4.setStep(-SPEED);
          stepper5.setStep(-SPEED);
          stepper6.setStep(-SPEED);
          stepper10.setStep(-SPEED);
          stepper11.setStep(-SPEED);       }
        else {
          stepper.setStep(0);
          stepper2.setStep(0);
          stepper3.setStep(0);
          stepper4.setStep(0);
          stepper5.setStep(0);
          stepper6.setStep(0);
          stepper10.setStep(0);
          stepper11.setStep(0);     }
      }
      else {
        stepper.setStep(0);
        stepper2.setStep(0);
        stepper3.setStep(0);
        stepper4.setStep(0);
        stepper5.setStep(0);
        stepper6.setStep(0);
        stepper10.setStep(0);
        stepper11.setStep(0);      }
  if ( millis() - set_timer3 < 8000 & millis() - set_timer3 > 2000 ) {
    if (millis() - on_timer < 3500) {
      stepper3.setStep(SPEED);
      stepper4.setStep(SPEED);
      stepper8.setStep(SPEED);
      stepper9.setStep(SPEED);
      stepper10.setStep(SPEED);
      stepper11.setStep(SPEED);
      stepper12.setStep(SPEED);
      stepper13.setStep(SPEED);
    }
    else if (millis() - on_timer < 5000) {
      stepper3.setStep(-SPEED);
      stepper4.setStep(-SPEED);
      stepper8.setStep(-SPEED);
      stepper9.setStep(-SPEED);
      stepper10.setStep(-SPEED);
      stepper11.setStep(-SPEED);
      stepper12.setStep(-SPEED);
      stepper13.setStep(-SPEED);
    }
    else if (millis() - on_timer < 6500) {
      stepper3.setStep(SPEED);
      stepper4.setStep(SPEED);
      stepper8.setStep(SPEED);
      stepper9.setStep(SPEED);
      stepper10.setStep(SPEED);
      stepper11.setStep(SPEED);
      stepper12.setStep(SPEED);
      stepper13.setStep(SPEED);
    }
    else if (millis() - on_timer < 8000) {
      stepper3.setStep(-SPEED);
      stepper4.setStep(-SPEED);
      stepper8.setStep(-SPEED);
      stepper9.setStep(-SPEED);
      stepper10.setStep(-SPEED);
      stepper11.setStep(-SPEED);
      stepper12.setStep(-SPEED);
      stepper13.setStep(-SPEED);
    }   else {
      stepper3.setStep(0);
      stepper4.setStep(0);
      stepper8.setStep(0);
      stepper9.setStep(0);
      stepper10.setStep(0);
      stepper11.setStep(0);
      stepper12.setStep(0);
      stepper13.setStep(0);
    } }
  else  {
    stepper3.setStep(0);
    stepper4.setStep(0);
    stepper8.setStep(0);
    stepper9.setStep(0);
    stepper10.setStep(0);
    stepper11.setStep(0);
    stepper12.setStep(0);
    stepper13.setStep(0);
  }/////////////////////////////////

stepper.moveStep();
stepper2.moveStep();
stepper3.moveStep();
stepper4.moveStep();
stepper5.moveStep();
stepper6.moveStep();
stepper7.moveStep();
stepper8.moveStep();
stepper9.moveStep();
stepper10.moveStep();
stepper11.moveStep();
stepper12.moveStep();
stepper13.moveStep();
}

second coding

Step 6: Before Coding....

You should add a new library related to step motors.

So you go into this site and download a new library.

https://blog.danggun.net/2092

Step 7: Serial Communication

You have to make two arduino mega-telecommunications.

if (start_count == 0) {

int Data = Serial1.read();
      Serial.println(Data);
      if (Data == 0x01 ) {
        start_count = 1;
      }

First of all, we need this coding on Maine Arduino Mega.

if (count == 0) {<br>    if ( millis() - set_timer1 > 1000 ) {
      Serial1.write(0x01);
      count = 1 ;
    }

Arduino Mega, who receives serial communications, needs this coding.

The first coding is placed where the second aduino has to move.