Sommario:

Griglia mobile con specchio infinito: 7 passaggi
Griglia mobile con specchio infinito: 7 passaggi

Video: Griglia mobile con specchio infinito: 7 passaggi

Video: Griglia mobile con specchio infinito: 7 passaggi
Video: Questa purtroppo è Milano....😔 #ruzzaorologi #orologio #rapina 2024, Luglio
Anonim
Image
Image

quei video stanno facendo video e stanno muovendo video.

Volevamo mostrare lo spazio ondeggiante attraverso griglie mobili e l'Infinity Mirror per mostrare il senso dello spazio in modo più efficace.

Il nostro lavoro consiste in due piastre acriliche, la parte anteriore e le piastre posteriori, che mostrano alle persone il modo in cui si stanno direttamente agitando, e le piastre posteriori hanno 25 motori passo-passo che effettivamente producono movimento.

L'opera è composta da un pannello frontale che mostrerà i barlumi dello spazio, un bastone di legno che esegue il movimento centrale, una guida per le aste e un tabellone che crea movimento attraverso 25 motori passo-passo.

I 25 picchi della rete connessa ai 25 motori passo passo producono pattern differenti a seconda dei valori di codifica impostati. Inoltre, l'azienda voleva massimizzare lo spazio combinando l'acrilico trasparente con la pellicola per semispecchi anteriore, lo specchietto retrovisore e lo specchio Infinity con illuminazione nera. Vari modelli di animazione sono realizzati in base a onde e drappeggi realizzati in base alle onde dell'acqua.

Forniture

Forniture

1. LED UV 12V 840cm

2. Gomma bianca 12mm 750cm

3. Arduino mega 2560 x2

4. Driver motore x25

5. Motore passo-passo x25

6. Cavo bipolare per motore passo-passo x25

7. Cilindro in legno x25

8.pvc (9mm) x25

9. Primavera x 25

10.acrilico 700mm*700mm

11. Pellicola a metà specchio 1524 mm * 1 M

12. Lenza da pesca

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

14. puleggia dentata (stampa 3d) x 25

Passaggio 1: pianificare un grande framework

Pianifica un grande quadro
Pianifica un grande quadro

Quando iniziamo, dobbiamo pianificare e disegnare una grande struttura. quindi, abbiamo preparato un file pdf per il telaio generale in acrilico e il file stl della puleggia dentata (cosa li abbiamo messi davanti al motore passo-passo per il filo del vento che può tirare un'asta di legno centrale).

con il telaio generale in acrilico e la puleggia sincronizzata, dobbiamo prima creare il file stl e la stampa 3D.

Passaggio 2: creazione dell'hardware

Fare hardware
Fare hardware
Fare hardware
Fare hardware
Fare hardware
Fare hardware

scatola1

1. Posizionare il nero acrilico 2T (n. 1) sul pavimento e attaccare il lato nero acrilico 5T (n. 2) sulla parte superiore. Aggiungi la griglia nera acrilica 5T (n. 3) e fissala usando un adesivo acrilico.

scatola2

2. Spruzzare acqua sulla lastra acrilica trasparente e ricoprire con pellicola semi-specchio. Un mezzo specchio fa rotolare una carta per non farla gorgogliare. Fissare il lato (2) e la trasparenza acrilica (1). Non fissare lateralmente la sporgenza acrilica combinata e gli specchi acrilici (n. 1). Fissalo temporaneamente con del nastro adesivo (per riparare la lenza o rinnovare l'interno).

Passaggio 3: creazione della griglia

Fare griglia
Fare griglia
Fare griglia
Fare griglia
Fare griglia
Fare griglia

1. Una colonna di legno ha una dimensione di 12 mm. Praticare un foro all'estremità per consentire l'ingresso della lenza.

2. Attacca le lastre acriliche all'altro lato di una colonna di legno perforata usando l'adesivo.

3. Metti un elastico attraverso il retro di un pilastro di legno e mettici dentro una molla.

4. Forma complessiva

Passaggio 4:

Immagine
Immagine
Immagine
Immagine
Immagine
Immagine

1. Numero di connessione del pin Arduino Mega 2560

2. dividere l'elettricità in due parti

3. Motore passo-passo e circuito di pilotaggio del motore

4. Due Arduino mega2560 sono collegati incrociando TX e RX per la comunicazione seriale.

Passaggio 5: codice

#includere

StepperMulti stepper(200, 2, 3, 4, 5); // numerazione del motore passo-passo 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 conteggio = 0; int init_set_speed

configurazione nulla()

Serial1.begin(115200); //comunicazione seriale 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 VELOCITÀ = 200; // loop void della velocità del motore() { ///////////////////////////////////// if (millis() - set_timer1 < 6000) { // Il motore passo-passo 13 si muove tra 1500 e 6000 secondi.< if (millis() - on_timer < 1500) { stepper13.setStep(SPEED); } else if (millis() - on_timer < 3000) { stepper13.setStep(-SPEED); //(-SPEED) significa rotazione inversa } else if (millis() - on_timer < 4500) { stepper13.setStep(SPEED); } else if (millis() - on_timer 1000) { Serial1.write(0x01); conteggio = 1; } } //////////////////////// if (millis() - set_timer2 1000) { if (millis() - on_timer < 2500) { stepper7.setStep (VELOCITÀ); 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 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); } /////////////////////////////////////////////// Se (millis() - set_timer3 2000) { if (millis() - on_timer < 3500) { stepper.setStep(SPEED); stepper2.setStep(VELOCITÀ); stepper3.setStep(SPEED); stepper4.setStep(SPEED); stepper5.setStep(SPEED); stepper6.setStep(SPEED); stepper10.setStep(VELOCITÀ); 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(VELOCITÀ); stepper3.setStep(SPEED); stepper4.setStep(SPEED); stepper5.setStep(SPEED); stepper6.setStep(SPEED); stepper10.setStep(VELOCITÀ); 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 2000) { if (millis() - on_timer < 3500) { stepper3.setStep(SPEED); stepper4.setStep(SPEED); stepper8.setStep(SPEED); stepper9.setStep(SPEED); stepper10.setStep(VELOCITÀ); 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(VELOCITÀ); 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(); }

prima codifica

e..

#includere

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 conteggio = 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 VELOCITÀ = 200; ciclo vuoto() {

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

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 1000) { Serial1.write(0x01); conteggio = 1; } } //////////////////////// if (millis() - set_timer2 1000) { if (millis() - on_timer < 2500) { stepper7.setSte p(VELOCITÀ); 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 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); } /////////////////////////////////////////////// Se (millis() - set_timer3 2000) { if (millis() - on_timer < 3500) { stepper.setStep(SPEED); stepper2.setStep(VELOCITÀ); stepper3.setStep(SPEED); stepper4.setStep(SPEED); stepper5.setStep(SPEED); stepper6.setStep(SPEED); stepper10.setStep(VELOCITÀ); 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(VELOCITÀ); stepper3.setStep(SPEED); stepper4.setStep(SPEED); stepper5.setStep(SPEED); stepper6.setStep(SPEED); stepper10.setStep(VELOCITÀ); 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 2000) { if (millis() - on_timer < 3500) { stepper3.setStep(SPEED); stepper4.setStep(SPEED); stepper8.setStep(SPEED); stepper9.setStep(SPEED); stepper10.setStep(VELOCITÀ); 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(VELOCITÀ); 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(); }

seconda codifica

Passaggio 6: prima di codificare…

Prima di codificare…
Prima di codificare…

Dovresti aggiungere una nuova libreria relativa ai motori passo-passo.

Quindi vai in questo sito e scarica una nuova libreria.

blog.danggun.net/2092

Passaggio 7: comunicazione seriale

Devi fare due mega-telecomunicazioni arduino.

if (start_count == 0) {

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

Prima di tutto, abbiamo bisogno di questa codifica su Maine Arduino Mega.

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

Arduino Mega, che riceve comunicazioni seriali, necessita di questa codifica.

La prima codifica è posizionata dove deve muoversi il secondo aduino.

Consigliato: