Obsah:

Pohyblivá mriežka so zrkadlom nekonečna: 7 krokov
Pohyblivá mriežka so zrkadlom nekonečna: 7 krokov

Video: Pohyblivá mriežka so zrkadlom nekonečna: 7 krokov

Video: Pohyblivá mriežka so zrkadlom nekonečna: 7 krokov
Video: Building The World's First MANUAL Dodge Demon! | PT 5 2024, Júl
Anonim
Image
Image

tieto videá robia video a pohyblivé video.

Chceli sme ukázať kývajúci sa priestor prostredníctvom pohyblivých mriežok a zrkadla Infinity Mirror, aby sme efektívnejšie ukázali zmysel pre priestor.

Naša práca sa skladá z dvoch akrylových dosiek, prednej a zadnej dosky, ktoré ukazujú ľuďom spôsob, akým priamo agitujú, a zadné dosky majú 25 krokových motorov, ktoré v skutočnosti produkujú pohyb.

Dielo pozostáva z predného panelu, ktorý ukáže záblesky vesmíru, drevenej palice, ktorá vykonáva stredný pohyb, vodítka pre prúty a zadnej dosky, ktorá vytvára pohyb prostredníctvom 25 krokových motorov.

25 píkov mriežky spojených s 25 krokovými motormi vytvára rôzne vzory podľa nastavených hodnôt kódovania. Okrem toho chcela spoločnosť maximalizovať priestor kombináciou priehľadného akrylátu s prednou polovičnou zrkadlovou fóliou, zadným zrkadlom a zrkadlom Infinity s čiernym osvetlením. Rôzne vzory animácie sú vytvárané na základe vĺn a fád, ktoré sú vytvárané na základe vĺn vody.

Zásoby

Zásoby

1. UV LED 12V 840 cm

2. Guma biela 12 mm 750 cm

3. Arduino mega 2560 x2

4. Ovládač motora x25

5. Krokový motor x25

6. Bipolárny kábel pre krokový motor x25

7. Valec na drevo x25

8. PVC (9 mm) x25

9. Jar x 25

10. akryl 700 mm*700 mm

11. Polovičná zrkadlová fólia 1524 mm * 1M

12. Rybárska šnúra

13. Napájanie 12V 12,5A, 12V 75A

14. rozvodová kladka (3D tlač) x 25

Krok 1: Naplánujte si veľký rámec

Naplánujte si veľký rámec
Naplánujte si veľký rámec

Na začiatku musíme naplánovať a nakresliť veľký rámec. Takže sme pripravili súbor pdf pre akrylový celkový rám a súbor rozvodovej remenice stl (čo sme ich umiestnili pred krokový motor pre veternú niť, ktorá môže ťahať strednú drevenú tyč).

s akrylovým celkovým rámom a rozvodovou kladkou musíme najskôr vytvoriť súbor stl a 3D tlač.

Krok 2: Výroba hardvéru

Výroba hardvéru
Výroba hardvéru
Výroba hardvéru
Výroba hardvéru
Výroba hardvéru
Výroba hardvéru

box1

1. Na podlahu položte 2T akrylovú čiernu (č. 1) a zhora pripevnite 5T akrylovú čiernu stranu (č. 2). Pridajte 5T akrylovú čiernu mriežku (č. 3) a pripevnite ju akrylovým spojom.

box2

2. Posypte vodou akrylový priehľadný tanier a na vrch položte polozrkadlový film. Polovičné zrkadlo roluje kartu, aby nebublala. Pripojte stranu (2) a akrylovú priehľadnosť (1). Kombinovaný akrylový výčnelok a akrylové zrkadlá (č. 1) nezaistite bočne. Dočasne ho zafixujte páskou (na opravu mimo rybárskeho vlasca alebo renováciu interiéru).

Krok 3: Vytvorenie mriežky

Making Grid
Making Grid
Making Grid
Making Grid
Making Grid
Making Grid

1. Drevený stĺp má veľkosť 12 mm. Na konci vyvŕtajte dieru, aby mohol rybársky vlasec vstúpiť.

2. Prilepte akrylové platne na druhú stranu perforovaného dreveného stĺpika pomocou lepidla.

3. Vložte gumičku cez zadnú časť dreveného stĺpika a vložte do nej pružinu.

4. Celkový tvar

Krok 4:

Obrázok
Obrázok
Obrázok
Obrázok
Obrázok
Obrázok

1. Číslo pripojenia Arduino Mega 2560 Pin

2. rozdeľte elektrickú energiu na dve časti

3. Krokový motor a obvod ovládača motora

4. Dva Arduino mega2560s sú prepojené krížením TX a RX pre sériovú komunikáciu.

Krok 5: Kód

#zahrnúť

StepperMulti stepper (200, 2, 3, 4, 5); // číslovanie krokového motora StepperMulti stepper2 (200, 6, 7, 8, 9); StepperViac stepper3 (200, 10, 11, 12, 13); StepperViac stepper4 (200, A0, A1, A2, A3); StepperMulti stepper5 (200, A4, A5, A6, A7); StepperViac stepper6 (200, 22, 23, 24, 25); StepperMulti stepper7 (200, 26, 27, 28, 29); StepperMulti stepper8 (200, 30, 31, 32, 33); StepperViac 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); StepperViac stepper13 (200, 50, 51, 52, 53); uint32_t on_timer = millis (); uint32_t set_timer1 = milis (); 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 = milis (); počet int = 0; int init_set_speed

neplatné nastavenie ()

Serial1.begin (115200); // sériová komunikácia 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 RÝCHLOSŤ = 200; // prázdna slučka rýchlosti motora () {//////////////////////////////////////////// if (milis () - set_timer1 <6000) {// Krokový motor 13 sa pohybuje medzi 1 500 a 6 000 sekundami. <if (millis () - on_timer <1500) {stepper13.setStep (SPEED); } else if (millis () - on_timer <3000) {stepper13.setStep (-SPEED); // (- SPEED) znamená obrátené otáčanie} else if (millis () - on_timer <4500) {stepper13.setStep (SPEED); } else if (millis () - on_timer 1000) {Serial1.write (0x01); počet = 1; }} ////////////////////////// if (millis () - set_timer2 1000) {if (millis () - on_timer <2500) {stepper7.setStep (RÝCHLOSŤ); stepper8.setStep (SPEED); stepper9.setStep (SPEED); stepper12.setStep (SPEED); } else if (millis () - on_timer <4000) {stepper7.setStep (-SPEED); stepper8.setStep (-RYCHLOSŤ); stepper9.setStep (-RYCHLOSŤ); stepper12.setStep (-RYCHLOSŤ); } else if (millis () - on_timer <5500) {stepper7.setStep (SPEED); stepper8.setStep (RÝCHLOSŤ); stepper9.setStep (SPEED); stepper12.setStep (SPEED); } else if (millis () - on_timer <7000) {stepper7.setStep (-SPEED); stepper8.setStep (-RYCHLOSŤ); stepper9.setStep (-RYCHLOSŤ); stepper12.setStep (-RYCHLOSŤ); } 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 (-RYCHLOSŤ); stepper6.setStep (RÝCHLOSŤ); stepper7.setStep (RÝCHLOSŤ); } else if (millis () - on_timer <4000) {stepper2.setStep (-SPEED); stepper5.setStep (RÝCHLOSŤ); stepper6.setStep (-RYCHLOSŤ); stepper7.setStep (-RYCHLOSŤ); } else if (millis () - on_timer <5500) {stepper2.setStep (SPEED); stepper5.setStep (-RYCHLOSŤ); stepper6.setStep (RÝCHLOSŤ); stepper7.setStep (RÝCHLOSŤ); } else if (millis () - on_timer <7000) {stepper2.setStep (-SPEED); stepper5.setStep (RÝCHLOSŤ); stepper6.setStep (-RYCHLOSŤ); stepper7.setStep (-RYCHLOSŤ); } 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); } ////////////////////////////////////////////////////// ((millis () - set_timer3 2000) {if (millis () - on_timer <3500) {stepper.setStep (SPEED); stepper2.setStep (SPEED); stepper3.setStep (RÝCHLOSŤ); stepper4.setStep (RÝCHLOSŤ); stepper5.setStep (RÝCHLOSŤ); stepper6.setStep (RÝCHLOSŤ); stepper10.setStep (SPEED); stepper11.setStep (SPEED); } else if (millis () - on_timer <5000) {stepper.setStep (-SPEED); stepper2.setStep (-RYCHLOSŤ); stepper3.setStep (-RYCHLOSŤ); stepper4.setStep (-RYCHLOSŤ); stepper5.setStep (-RYCHLOSŤ); stepper6.setStep (-RYCHLOSŤ); stepper10.setStep (-RYCHLOSŤ); stepper11.setStep (-RYCHLOSŤ); } else if (millis () - on_timer <6500) {stepper.setStep (SPEED); stepper2.setStep (SPEED); stepper3.setStep (RÝCHLOSŤ); stepper4.setStep (RÝCHLOSŤ); stepper5.setStep (RÝCHLOSŤ); stepper6.setStep (RÝCHLOSŤ); stepper10.setStep (SPEED); stepper11.setStep (SPEED); } else if (millis () - on_timer <8000) {stepper.setStep (-SPEED); stepper2.setStep (-RYCHLOSŤ); stepper3.setStep (-RYCHLOSŤ); stepper4.setStep (-RYCHLOSŤ); stepper5.setStep (-RYCHLOSŤ); stepper6.setStep (-RYCHLOSŤ); stepper10.setStep (-RYCHLOSŤ); stepper11.setStep (-RYCHLOSŤ); } 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 (RÝCHLOSŤ); 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 (-RYCHLOSŤ); stepper8.setStep (-RYCHLOSŤ); stepper9.setStep (-RYCHLOSŤ); stepper10.setStep (-RYCHLOSŤ); stepper11.setStep (-RYCHLOSŤ); stepper12.setStep (-RYCHLOSŤ); stepper13.setStep (-RYCHLOSŤ); } else if (millis () - on_timer <6500) {stepper3.setStep (SPEED); stepper4.setStep (RÝCHLOSŤ); 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 (-RYCHLOSŤ); stepper8.setStep (-RYCHLOSŤ); stepper9.setStep (-RYCHLOSŤ); stepper10.setStep (-RYCHLOSŤ); stepper11.setStep (-RYCHLOSŤ); stepper12.setStep (-RYCHLOSŤ); stepper13.setStep (-RYCHLOSŤ); } 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 (); }

kódovanie prstov

a..

#zahrnúť

StepperMulti stepper (200, 2, 3, 4, 5); StepperMulti stepper2 (200, 6, 7, 8, 9); StepperViac stepper3 (200, 10, 11, 12, 13); StepperViac 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); StepperViac 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); StepperViac stepper13 (200, 50, 51, 52, 53); uint32_t on_timer = millis (); uint32_t set_timer1 = milis (); 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 = milis (); počet int = 0; int init_set_speed = 10; neplatné nastavenie () 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 RÝCHLOSŤ = 200; prázdna slučka () {

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

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); počet = 1; }} ////////////////////////// if (millis () - set_timer2 1000) {if (millis () - on_timer <2500) {stepper7.setSte ㄴ p (RÝCHLOSŤ); stepper8.setStep (SPEED); stepper9.setStep (SPEED); stepper12.setStep (SPEED); } else if (millis () - on_timer <4000) {stepper7.setStep (-SPEED); stepper8.setStep (-RYCHLOSŤ); stepper9.setStep (-RYCHLOSŤ); stepper12.setStep (-RYCHLOSŤ); } 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 (-RYCHLOSŤ); stepper9.setStep (-RYCHLOSŤ); stepper12.setStep (-RYCHLOSŤ); } 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 (-RYCHLOSŤ); stepper6.setStep (RÝCHLOSŤ); stepper7.setStep (RÝCHLOSŤ); } else if (millis () - on_timer <4000) {stepper2.setStep (-SPEED); stepper5.setStep (RÝCHLOSŤ); stepper6.setStep (-RYCHLOSŤ); stepper7.setStep (-RYCHLOSŤ); } else if (millis () - on_timer <5500) {stepper2.setStep (SPEED); stepper5.setStep (-RYCHLOSŤ); stepper6.setStep (RÝCHLOSŤ); stepper7.setStep (RÝCHLOSŤ); } else if (millis () - on_timer <7000) {stepper2.setStep (-SPEED); stepper5.setStep (RÝCHLOSŤ); stepper6.setStep (-RYCHLOSŤ); stepper7.setStep (-RYCHLOSŤ); } 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); } ////////////////////////////////////////////////////// ((millis () - set_timer3 2000) {if (millis () - on_timer <3500) {stepper.setStep (SPEED); stepper2.setStep (RÝCHLOSŤ); stepper3.setStep (RÝCHLOSŤ); stepper4.setStep (RÝCHLOSŤ); stepper5.setStep (RÝCHLOSŤ); stepper6.setStep (RÝCHLOSŤ); stepper10.setStep (SPEED); stepper11.setStep (SPEED); } else if (millis () - on_timer <5000) {stepper.setStep (-SPEED); stepper2.setStep (-RYCHLOSŤ); stepper3.setStep (-RYCHLOSŤ); stepper4.setStep (-RYCHLOSŤ); stepper5.setStep (-RYCHLOSŤ); stepper6.setStep (-RYCHLOSŤ); stepper10.setStep (-RYCHLOSŤ); stepper11.setStep (-RYCHLOSŤ); } else if (millis () - on_timer <6500) {stepper.setStep (SPEED); stepper2.setStep (RÝCHLOSŤ); stepper3.setStep (RÝCHLOSŤ); stepper4.setStep (RÝCHLOSŤ); stepper5.setStep (RÝCHLOSŤ); stepper6.setStep (RÝCHLOSŤ); stepper10.setStep (SPEED); stepper11.setStep (SPEED); } else if (millis () - on_timer <8000) {stepper.setStep (-SPEED); stepper2.setStep (-RYCHLOSŤ); stepper3.setStep (-RYCHLOSŤ); stepper4.setStep (-RYCHLOSŤ); stepper5.setStep (-RYCHLOSŤ); stepper6.setStep (-RYCHLOSŤ); stepper10.setStep (-RYCHLOSŤ); stepper11.setStep (-RYCHLOSŤ); } 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 (RÝCHLOSŤ); 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 (-RYCHLOSŤ); stepper8.setStep (-RYCHLOSŤ); stepper9.setStep (-RYCHLOSŤ); stepper10.setStep (-RYCHLOSŤ); stepper11.setStep (-RYCHLOSŤ); stepper12.setStep (-RYCHLOSŤ); stepper13.setStep (-RYCHLOSŤ); } else if (millis () - on_timer <6500) {stepper3.setStep (SPEED); stepper4.setStep (RÝCHLOSŤ); stepper8.setStep (RÝCHLOSŤ); 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 (-RYCHLOSŤ); stepper8.setStep (-RYCHLOSŤ); stepper9.setStep (-RYCHLOSŤ); stepper10.setStep (-RYCHLOSŤ); stepper11.setStep (-RYCHLOSŤ); stepper12.setStep (-RYCHLOSŤ); stepper13.setStep (-RYCHLOSŤ); } 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 (); }

druhé kódovanie

Krok 6: Pred kódovaním …

Pred kódovaním …
Pred kódovaním …

Mali by ste pridať novú knižnicu týkajúcu sa krokových motorov.

Choďte teda na túto stránku a stiahnite si novú knižnicu.

blog.danggun.net/2092

Krok 7: Sériová komunikácia

Musíte urobiť dve arduino mega-telekomunikácie.

if (start_count == 0) {

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

V prvom rade potrebujeme toto kódovanie na Maine Arduino Mega.

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

Arduino Mega, ktorý prijíma sériovú komunikáciu, potrebuje toto kódovanie.

Prvé kódovanie je umiestnené tam, kde sa má pohybovať druhé aduino.

Odporúča: