Tabla de contenido:

Cuadrícula móvil con espejo infinito: 7 pasos
Cuadrícula móvil con espejo infinito: 7 pasos

Video: Cuadrícula móvil con espejo infinito: 7 pasos

Video: Cuadrícula móvil con espejo infinito: 7 pasos
Video: Oculta aplicaciones en tu celular #shorts 2024, Septiembre
Anonim
Image
Image

esos videos están haciendo video y video en movimiento.

Queríamos mostrar el espacio oscilante a través de cuadrículas en movimiento y el Infinity Mirror para mostrar la sensación de espacio de manera más efectiva.

Nuestro trabajo consta de dos placas acrílicas, el frente y las placas traseras, que muestran a las personas la forma en que están agitando directamente, y las placas traseras tienen motores de 25 pasos que realmente producen movimiento.

La obra consta de un panel frontal que mostrará los destellos del espacio, un palo de madera que ejecuta el movimiento del medio, una guía para las varillas y un tablero que crea movimiento a través de motores de 25 pasos.

Los 25 picos de la red conectados a los 25 motores paso a paso producen diferentes patrones de acuerdo con los valores de codificación establecidos. Además, la compañía quería maximizar el espacio combinando acrílico transparente con película de medio espejo frontal, espejo retrovisor y espejo Infinity con luz negra. Se crean varios patrones de animación basados en olas y monótonos que se hacen en base a las olas del agua.

Suministros

Suministros

1. UV LED 12V 840cm

2. Goma blanca 12 mm 750 cm

3. Arduino mega 2560 x2

4.controlador de motor x25

5. Motor paso a paso x25

6. Cable bipolar para motor paso a paso x25

7. Cilindro de madera x25

8.pvc (9 mm) x25

9. Primavera x 25

10.acrílico 700mm * 700mm

11. La mitad de la película de espejo 1524 mm * 1 M

12 línea de pesca

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

14. polea de distribución (impresión 3d) x 25

Paso 1: planifique un gran marco

Planifique un gran marco
Planifique un gran marco

Cuando empezamos, necesitamos planificar y trazar un gran marco. por lo tanto, preparamos un archivo pdf para el marco general de acrílico y el archivo stl de la polea de sincronización (lo que los colocamos frente al motor paso a paso para el hilo de viento que puede tirar de una varilla de madera media).

Con el marco general de acrílico y la polea de sincronización, primero debemos hacer un archivo stl y una impresión 3D.

Paso 2: hacer hardware

Fabricación de hardware
Fabricación de hardware
Fabricación de hardware
Fabricación de hardware
Fabricación de hardware
Fabricación de hardware

caja1

1. Coloque el acrílico negro 2T (No. 1) en el piso y coloque el lado negro acrílico 5T (No. 2) en la parte superior. Agregue una rejilla negra acrílica 5T (No. 3) y fíjela con adhesivo acrílico.

caja2

2. Rocíe agua sobre la placa acrílica transparente y cubra con una película de semi-espejo. Un medio espejo hace rodar una tarjeta para evitar que burbujee. Coloque el lateral (2) y la transparencia acrílica (1). No asegure el saliente acrílico combinado y los espejos acrílicos (No. 1) lateralmente. Fíjelo temporalmente con cinta (para reparar el hilo de pescar o renovar el interior).

Paso 3: Hacer cuadrícula

Haciendo cuadrícula
Haciendo cuadrícula
Haciendo cuadrícula
Haciendo cuadrícula
Haciendo cuadrícula
Haciendo cuadrícula

1. Una columna de madera tiene un tamaño de 12 mm. Haz un agujero en el extremo para permitir que entre el hilo de pescar.

2. Fije las placas acrílicas al otro lado de una columna de madera perforada con adhesivo.

3. Ponga una banda de goma a través de la parte posterior de un pilar de madera y coloque un resorte en él.

4.forma general

Paso 4:

Imagen
Imagen
Imagen
Imagen
Imagen
Imagen

1. Número de conexión de pin Arduino Mega 2560

2.dividir la electricidad en dos partes

3. Motor paso a paso y circuito del controlador del motor

4. Dos Arduino mega2560s están conectados cruzando TX y RX para la comunicación en serie.

Paso 5: Código

#incluir

StepperMulti stepper (200, 2, 3, 4, 5); // numeración del motor paso a paso 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

configuración vacía ()

Serial1.begin (115200); // comunicación serial 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 VELOCIDAD = 200; // bucle de vacío de velocidad del motor () {///////////////////////////////////// if (millis () - set_timer1 <6000) {// El motor paso a paso 13 se mueve entre 1500 y 6000 segundos. <if (millis () - on_timer <1500) {stepper13.setStep (SPEED); } else if (millis () - on_timer <3000) {stepper13.setStep (-VELOCIDAD); // (- VELOCIDAD) significa rotación inversa} else if (millis () - on_timer <4500) {stepper13.setStep (SPEED); } else if (millis () - on_timer 1000) {Serial1.write (0x01); cuenta = 1; }} //////////////////////// if (millis () - set_timer2 1000) {if (millis () - on_timer <2500) {stepper7.setStep (VELOCIDAD); stepper8.setStep (VELOCIDAD); stepper9.setStep (VELOCIDAD); stepper12.setStep (VELOCIDAD); } else if (millis () - on_timer <4000) {stepper7.setStep (-VELOCIDAD); stepper8.setStep (-VELOCIDAD); stepper9.setStep (-VELOCIDAD); stepper12.setStep (-VELOCIDAD); } else if (millis () - on_timer <5500) {stepper7.setStep (SPEED); stepper8.setStep (VELOCIDAD); stepper9.setStep (VELOCIDAD); stepper12.setStep (VELOCIDAD); } else if (millis () - on_timer <7000) {stepper7.setStep (-VELOCIDAD); stepper8.setStep (-VELOCIDAD); stepper9.setStep (-VELOCIDAD); stepper12.setStep (-VELOCIDAD); } 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 1000) {if (millis () - on_timer <2500) {stepper2.setStep (SPEED); stepper5.setStep (-VELOCIDAD); stepper6.setStep (VELOCIDAD); stepper7.setStep (VELOCIDAD); } else if (millis () - on_timer <4000) {stepper2.setStep (-VELOCIDAD); stepper5.setStep (VELOCIDAD); stepper6.setStep (-VELOCIDAD); stepper7.setStep (-VELOCIDAD); } else if (millis () - on_timer <5500) {stepper2.setStep (SPEED); stepper5.setStep (-VELOCIDAD); stepper6.setStep (VELOCIDAD); stepper7.setStep (VELOCIDAD); } else if (millis () - on_timer <7000) {stepper2.setStep (-VELOCIDAD); stepper5.setStep (VELOCIDAD); stepper6.setStep (-VELOCIDAD); stepper7.setStep (-VELOCIDAD); } 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); } /////////////////////////////////////////////// si (millis () - set_timer3 2000) {if (millis () - on_timer <3500) {stepper.setStep (SPEED); stepper2.setStep (VELOCIDAD); stepper3.setStep (VELOCIDAD); stepper4.setStep (VELOCIDAD); stepper5.setStep (VELOCIDAD); stepper6.setStep (VELOCIDAD); stepper10.setStep (VELOCIDAD); stepper11.setStep (VELOCIDAD); } else if (millis () - on_timer <5000) {stepper.setStep (-VELOCIDAD); stepper2.setStep (-VELOCIDAD); stepper3.setStep (-VELOCIDAD); stepper4.setStep (-VELOCIDAD); stepper5.setStep (-VELOCIDAD); stepper6.setStep (-VELOCIDAD); stepper10.setStep (-VELOCIDAD); stepper11.setStep (-VELOCIDAD); } else if (millis () - on_timer <6500) {stepper.setStep (SPEED); stepper2.setStep (VELOCIDAD); stepper3.setStep (VELOCIDAD); stepper4.setStep (VELOCIDAD); stepper5.setStep (VELOCIDAD); stepper6.setStep (VELOCIDAD); stepper10.setStep (VELOCIDAD); stepper11.setStep (VELOCIDAD); } else if (millis () - on_timer <8000) {stepper.setStep (-VELOCIDAD); stepper2.setStep (-VELOCIDAD); stepper3.setStep (-VELOCIDAD); stepper4.setStep (-VELOCIDAD); stepper5.setStep (-VELOCIDAD); stepper6.setStep (-VELOCIDAD); stepper10.setStep (-VELOCIDAD); stepper11.setStep (-VELOCIDAD); } 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 {paso a paso.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 2000) {if (millis () - on_timer <3500) {stepper3.setStep (SPEED); stepper4.setStep (VELOCIDAD); stepper8.setStep (VELOCIDAD); stepper9.setStep (VELOCIDAD); stepper10.setStep (VELOCIDAD); stepper11.setStep (VELOCIDAD); stepper12.setStep (VELOCIDAD); stepper13.setStep (VELOCIDAD); } else if (millis () - on_timer <5000) {stepper3.setStep (-VELOCIDAD); stepper4.setStep (-VELOCIDAD); stepper8.setStep (-VELOCIDAD); stepper9.setStep (-VELOCIDAD); stepper10.setStep (-VELOCIDAD); stepper11.setStep (-VELOCIDAD); stepper12.setStep (-VELOCIDAD); stepper13.setStep (-VELOCIDAD); } else if (millis () - on_timer <6500) {stepper3.setStep (SPEED); stepper4.setStep (VELOCIDAD); stepper8.setStep (VELOCIDAD); stepper9.setStep (VELOCIDAD); stepper10.setStep (VELOCIDAD); stepper11.setStep (VELOCIDAD); stepper12.setStep (VELOCIDAD); stepper13.setStep (VELOCIDAD); } else if (millis () - on_timer <8000) {stepper3.setStep (-VELOCIDAD); stepper4.setStep (-VELOCIDAD); stepper8.setStep (-VELOCIDAD); stepper9.setStep (-VELOCIDAD); stepper10.setStep (-VELOCIDAD); stepper11.setStep (-VELOCIDAD); stepper12.setStep (-VELOCIDAD); stepper13.setStep (-VELOCIDAD); } 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 (); }

primera codificación

y..

#incluir

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; configuración vacía () 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 VELOCIDAD = 200; bucle vacío () {

/////////////////////////////////////

if (millis () - set_timer1 <6000) {if (millis () - on_timer <1500) {stepper13.setStep (SPEED); } else if (millis () - on_timer <3000) {stepper13.setStep (-VELOCIDAD); } else if (millis () - on_timer <4500) {stepper13.setStep (SPEED); } else if (millis () - on_timer 1000) {Serial1.write (0x01); cuenta = 1; }} //////////////////////// if (millis () - set_timer2 1000) {if (millis () - on_timer <2500) {stepper7.setSte ㄴ p (VELOCIDAD); stepper8.setStep (VELOCIDAD); stepper9.setStep (VELOCIDAD); stepper12.setStep (VELOCIDAD); } else if (millis () - on_timer <4000) {stepper7.setStep (-VELOCIDAD); stepper8.setStep (-VELOCIDAD); stepper9.setStep (-VELOCIDAD); stepper12.setStep (-VELOCIDAD); } else if (millis () - on_timer <5500) {stepper7.setStep (SPEED); stepper8.setStep (VELOCIDAD); stepper9.setStep (VELOCIDAD); stepper12.setStep (VELOCIDAD); } else if (millis () - on_timer <7000) {stepper7.setStep (-VELOCIDAD); stepper8.setStep (-VELOCIDAD); stepper9.setStep (-VELOCIDAD); stepper12.setStep (-VELOCIDAD); } 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 1000) {if (millis () - on_timer <2500) {stepper2.setStep (SPEED); stepper5.setStep (-VELOCIDAD); stepper6.setStep (VELOCIDAD); stepper7.setStep (VELOCIDAD); } else if (millis () - on_timer <4000) {stepper2.setStep (-VELOCIDAD); stepper5.setStep (VELOCIDAD); stepper6.setStep (-VELOCIDAD); stepper7.setStep (-VELOCIDAD); } else if (millis () - on_timer <5500) {stepper2.setStep (SPEED); stepper5.setStep (-VELOCIDAD); stepper6.setStep (VELOCIDAD); stepper7.setStep (VELOCIDAD); } else if (millis () - on_timer <7000) {stepper2.setStep (-VELOCIDAD); stepper5.setStep (VELOCIDAD); stepper6.setStep (-VELOCIDAD); stepper7.setStep (-VELOCIDAD); } 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); } /////////////////////////////////////////////// si (millis () - set_timer3 2000) {if (millis () - on_timer <3500) {stepper.setStep (SPEED); stepper2.setStep (VELOCIDAD); stepper3.setStep (VELOCIDAD); stepper4.setStep (VELOCIDAD); stepper5.setStep (VELOCIDAD); stepper6.setStep (VELOCIDAD); stepper10.setStep (VELOCIDAD); stepper11.setStep (VELOCIDAD); } else if (millis () - on_timer <5000) {stepper.setStep (-VELOCIDAD); stepper2.setStep (-VELOCIDAD); stepper3.setStep (-VELOCIDAD); stepper4.setStep (-VELOCIDAD); stepper5.setStep (-VELOCIDAD); stepper6.setStep (-VELOCIDAD); stepper10.setStep (-VELOCIDAD); stepper11.setStep (-VELOCIDAD); } else if (millis () - on_timer <6500) {stepper.setStep (SPEED); stepper2.setStep (VELOCIDAD); stepper3.setStep (VELOCIDAD); stepper4.setStep (VELOCIDAD); stepper5.setStep (VELOCIDAD); stepper6.setStep (VELOCIDAD); stepper10.setStep (VELOCIDAD); stepper11.setStep (VELOCIDAD); } else if (millis () - on_timer <8000) {stepper.setStep (-VELOCIDAD); stepper2.setStep (-VELOCIDAD); stepper3.setStep (-VELOCIDAD); stepper4.setStep (-VELOCIDAD); stepper5.setStep (-VELOCIDAD); stepper6.setStep (-VELOCIDAD); stepper10.setStep (-VELOCIDAD); stepper11.setStep (-VELOCIDAD); } 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 {paso a paso.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 2000) {if (millis () - on_timer <3500) {stepper3.setStep (SPEED); stepper4.setStep (VELOCIDAD); stepper8.setStep (VELOCIDAD); stepper9.setStep (VELOCIDAD); stepper10.setStep (VELOCIDAD); stepper11.setStep (VELOCIDAD); stepper12.setStep (VELOCIDAD); stepper13.setStep (VELOCIDAD); } else if (millis () - on_timer <5000) {stepper3.setStep (-VELOCIDAD); stepper4.setStep (-VELOCIDAD); stepper8.setStep (-VELOCIDAD); stepper9.setStep (-VELOCIDAD); stepper10.setStep (-VELOCIDAD); stepper11.setStep (-VELOCIDAD); stepper12.setStep (-VELOCIDAD); stepper13.setStep (-VELOCIDAD); } else if (millis () - on_timer <6500) {stepper3.setStep (SPEED); stepper4.setStep (VELOCIDAD); stepper8.setStep (VELOCIDAD); stepper9.setStep (VELOCIDAD); stepper10.setStep (VELOCIDAD); stepper11.setStep (VELOCIDAD); stepper12.setStep (VELOCIDAD); stepper13.setStep (VELOCIDAD); } else if (millis () - on_timer <8000) {stepper3.setStep (-VELOCIDAD); stepper4.setStep (-VELOCIDAD); stepper8.setStep (-VELOCIDAD); stepper9.setStep (-VELOCIDAD); stepper10.setStep (-VELOCIDAD); stepper11.setStep (-VELOCIDAD); stepper12.setStep (-VELOCIDAD); stepper13.setStep (-VELOCIDAD); } 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 (); }

segunda codificación

Paso 6: antes de codificar…

Antes de codificar…
Antes de codificar…

Debería agregar una nueva biblioteca relacionada con motores paso a paso.

Entonces ingresa a este sitio y descarga una nueva biblioteca.

blog.danggun.net/2092

Paso 7: comunicación en serie

Tienes que hacer dos mega-telecomunicaciones arduino.

si (cuenta_inicio == 0) {

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

En primer lugar, necesitamos esta codificación en Maine Arduino Mega.

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

Arduino Mega, que recibe comunicaciones en serie, necesita esta codificación.

La primera codificación se coloca donde debe moverse el segundo aduino.

Recomendado: