Obsah:

Pohyblivá mřížka se zrcadlem nekonečna: 7 kroků
Pohyblivá mřížka se zrcadlem nekonečna: 7 kroků

Video: Pohyblivá mřížka se zrcadlem nekonečna: 7 kroků

Video: Pohyblivá mřížka se zrcadlem nekonečna: 7 kroků
Video: HTC One (M8) [Londýn 2014] 2024, Červenec
Anonim
Image
Image

ta videa dělají video a pohyblivé video.

Chtěli jsme ukázat houpající se prostor prostřednictvím pohyblivých mřížek a Infinity Mirror, abychom efektivněji ukázali smysl pro prostor.

Naše práce se skládá ze dvou akrylových desek, přední a zadní desky, které ukazují lidem způsob, jakým přímo agitují, a zadní desky mají 25 krokových motorů, které ve skutečnosti produkují pohyb.

Dílo se skládá z předního panelu, který ukáže záblesky vesmíru, dřevěné tyče, která provádí střední pohyb, vodítka pro tyče a zadní desky, která vytváří pohyb pomocí 25 krokových motorů.

25 vrcholů mřížky připojených k 25 krokovým motorům vytváří různé vzory podle nastavených hodnot kódování. Kromě toho chtěla společnost maximalizovat prostor kombinací průhledného akrylátu s předním polozrcadlovým filmem, zadním zrcátkem a černě osvětleným zrcátkem Infinity. Různé vzory animace jsou vytvořeny na základě vln a fádů, které jsou vytvořeny na základě vln vody.

Zásoby

Zásoby

1. UV LED 12V 840 cm

2. Pryžová bílá 12 mm 750 cm

3. Arduino mega 2560 x2

4. Ovladač motoru x25

5. Krokový motor x25

6. Bipolární kabel pro krokový motor x25

7. Válec na dřevo x25

8. PVC (9 mm) x25

9. Jaro x 25

10. akrylát 700 mm*700 mm

11. Poloviční zrcadlová fólie 1524 mm * 1 mil

12. Vlasec

13. Napájení 12V 12,5A, 12V 75A

14. rozvodová kladka (3D tisk) x 25

Krok 1: Naplánujte si velký rámec

Naplánujte si velký rámec
Naplánujte si velký rámec

Když začínáme, musíme naplánovat a nakreslit velký rámec. Připravili jsme tedy soubor pdf pro celkový akrylový rám a soubor rozvodové řemenice stl (to, co jsme je dali před krokový motor pro větrnou nit, která může táhnout středovou dřevěnou tyč).

s celkovým akrylovým rámem a rozvodovou kladkou potřebujeme nejprve vytvořit soubor stl a 3D tisk.

Krok 2: Výroba hardwaru

Výroba hardwaru
Výroba hardwaru
Výroba hardwaru
Výroba hardwaru
Výroba hardwaru
Výroba hardwaru

box1

1. Umístěte 2T akrylovou černou (č. 1) na podlahu a nahoře připevněte 5T akrylovou černou stranu (č. 2). Přidejte 5T akrylovou černou mřížku (č. 3) a připevněte ji pomocí akrylové vazby.

box2

2. Posypte vodou akrylovou průhlednou desku a nahoře polozrcadlovou fólií. Poloviční zrcadlo roluje kartu, aby nebublala. Připojte stranu (2) a akrylovou průhlednost (1). Nezajistěte kombinovaný akrylový výstupek a akrylová zrcadla (č. 1) bočně. Dočasně jej zafixujte páskou (pro opravu mimo vlasec nebo renovaci interiéru).

Krok 3: Vytvoření mřížky

Vytváření mřížky
Vytváření mřížky
Vytváření mřížky
Vytváření mřížky
Vytváření mřížky
Vytváření mřížky

1. Dřevěný sloupek má velikost 12 mm. Na konci vyvrtejte otvor, aby dovolilo rybářskému vlasci vstoupit.

2. Připevněte akrylové desky na druhou stranu děrovaného dřevěného sloupku pomocí lepidla.

3. Protáhněte zadní část dřevěného sloupku gumičkou a vložte do něj pružinu.

4. Celkový tvar

Krok 4:

obraz
obraz
obraz
obraz
obraz
obraz

1. Číslo připojení Arduino Mega 2560 Pin

2. rozdělte elektřinu na dvě části

3. Krokový motor a obvod ovladače motoru

4. Dva Arduino mega2560 jsou propojeny křížením TX a RX pro sériovou komunikaci.

Krok 5: Kód

#zahrnout

StepperMulti stepper (200, 2, 3, 4, 5); // číslování krokového motoru 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 = milis (); int count = 0; int init_set_speed

neplatné nastavení ()

Serial1.begin (115200); // sériová komunikace 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 RYCHLOST = 200; // smyčka otáček motoru () {///////////////////////////////////////////// if (milis () - set_timer1 <6000) {// Krokový motor 13 se pohybuje mezi 1500 a 6000 sekundami. <if (millis () - on_timer <1500) {stepper13.setStep (SPEED); } else if (millis () - on_timer <3000) {stepper13.setStep (-SPEED); // (- SPEED) znamená obrácené otáčení} 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 (RYCHLOST); stepper8.setStep (RYCHLOST); stepper9.setStep (RYCHLOST); stepper12.setStep (RYCHLOST); } else if (millis () - on_timer <4000) {stepper7.setStep (-SPEED); stepper8.setStep (-RYCHLOST); stepper9.setStep (-RYCHLOST); stepper12.setStep (-RYCHLOST); } else if (millis () - on_timer <5500) {stepper7.setStep (SPEED); stepper8.setStep (RYCHLOST); stepper9.setStep (RYCHLOST); stepper12.setStep (RYCHLOST); } else if (millis () - on_timer <7000) {stepper7.setStep (-SPEED); stepper8.setStep (-RYCHLOST); stepper9.setStep (-RYCHLOST); stepper12.setStep (-RYCHLOST); } 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 (-RYCHLOST); stepper6.setStep (RYCHLOST); stepper7.setStep (RYCHLOST); } else if (millis () - on_timer <4000) {stepper2.setStep (-SPEED); stepper5.setStep (RYCHLOST); stepper6.setStep (-RYCHLOST); stepper7.setStep (-RYCHLOST); } else if (millis () - on_timer <5500) {stepper2.setStep (SPEED); stepper5.setStep (-RYCHLOST); stepper6.setStep (RYCHLOST); stepper7.setStep (RYCHLOST); } else if (millis () - on_timer <7000) {stepper2.setStep (-SPEED); stepper5.setStep (RYCHLOST); stepper6.setStep (-RYCHLOST); stepper7.setStep (-RYCHLOST); } 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 (RYCHLOST); stepper3.setStep (RYCHLOST); stepper4.setStep (RYCHLOST); stepper5.setStep (RYCHLOST); stepper6.setStep (RYCHLOST); stepper10.setStep (RYCHLOST); stepper11.setStep (RYCHLOST); } else if (millis () - on_timer <5000) {stepper.setStep (-SPEED); stepper2.setStep (-RYCHLOST); stepper3.setStep (-RYCHLOST); stepper4.setStep (-RYCHLOST); stepper5.setStep (-RYCHLOST); stepper6.setStep (-RYCHLOST); stepper10.setStep (-RYCHLOST); stepper11.setStep (-RYCHLOST); } else if (millis () - on_timer <6500) {stepper.setStep (SPEED); stepper2.setStep (RYCHLOST); stepper3.setStep (RYCHLOST); stepper4.setStep (RYCHLOST); stepper5.setStep (RYCHLOST); stepper6.setStep (RYCHLOST); stepper10.setStep (RYCHLOST); stepper11.setStep (RYCHLOST); } else if (millis () - on_timer <8000) {stepper.setStep (-SPEED); stepper2.setStep (-RYCHLOST); stepper3.setStep (-RYCHLOST); stepper4.setStep (-RYCHLOST); stepper5.setStep (-RYCHLOST); stepper6.setStep (-RYCHLOST); stepper10.setStep (-RYCHLOST); stepper11.setStep (-RYCHLOST); } 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 (RYCHLOST); stepper8.setStep (RYCHLOST); stepper9.setStep (RYCHLOST); stepper10.setStep (RYCHLOST); stepper11.setStep (RYCHLOST); stepper12.setStep (RYCHLOST); stepper13.setStep (RYCHLOST); } else if (millis () - on_timer <5000) {stepper3.setStep (-SPEED); stepper4.setStep (-RYCHLOST); stepper8.setStep (-RYCHLOST); stepper9.setStep (-RYCHLOST); stepper10.setStep (-RYCHLOST); stepper11.setStep (-RYCHLOST); stepper12.setStep (-RYCHLOST); stepper13.setStep (-RYCHLOST); } else if (millis () - on_timer <6500) {stepper3.setStep (SPEED); stepper4.setStep (RYCHLOST); stepper8.setStep (RYCHLOST); stepper9.setStep (RYCHLOST); stepper10.setStep (RYCHLOST); stepper11.setStep (RYCHLOST); stepper12.setStep (RYCHLOST); stepper13.setStep (RYCHLOST); } else if (millis () - on_timer <8000) {stepper3.setStep (-SPEED); stepper4.setStep (-RYCHLOST); stepper8.setStep (-RYCHLOST); stepper9.setStep (-RYCHLOST); stepper10.setStep (-RYCHLOST); stepper11.setStep (-RYCHLOST); stepper12.setStep (-RYCHLOST); stepper13.setStep (-RYCHLOST); } 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 kódování

a..

#zahrnout

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 = milis (); int count = 0; int init_set_speed = 10; neplatné nastavení () 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 RYCHLOST = 200; prázdná smyč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 (RYCHLOST); stepper8.setStep (RYCHLOST); stepper9.setStep (RYCHLOST); stepper12.setStep (RYCHLOST); } else if (millis () - on_timer <4000) {stepper7.setStep (-SPEED); stepper8.setStep (-RYCHLOST); stepper9.setStep (-RYCHLOST); stepper12.setStep (-RYCHLOST); } else if (millis () - on_timer <5500) {stepper7.setStep (SPEED); stepper8.setStep (RYCHLOST); stepper9.setStep (RYCHLOST); stepper12.setStep (RYCHLOST); } else if (millis () - on_timer <7000) {stepper7.setStep (-SPEED); stepper8.setStep (-RYCHLOST); stepper9.setStep (-RYCHLOST); stepper12.setStep (-RYCHLOST); } 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 (-RYCHLOST); stepper6.setStep (RYCHLOST); stepper7.setStep (RYCHLOST); } else if (millis () - on_timer <4000) {stepper2.setStep (-SPEED); stepper5.setStep (RYCHLOST); stepper6.setStep (-RYCHLOST); stepper7.setStep (-RYCHLOST); } else if (millis () - on_timer <5500) {stepper2.setStep (SPEED); stepper5.setStep (-RYCHLOST); stepper6.setStep (RYCHLOST); stepper7.setStep (RYCHLOST); } else if (millis () - on_timer <7000) {stepper2.setStep (-SPEED); stepper5.setStep (RYCHLOST); stepper6.setStep (-RYCHLOST); stepper7.setStep (-RYCHLOST); } 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 (RYCHLOST); stepper3.setStep (RYCHLOST); stepper4.setStep (RYCHLOST); stepper5.setStep (RYCHLOST); stepper6.setStep (RYCHLOST); stepper10.setStep (RYCHLOST); stepper11.setStep (RYCHLOST); } else if (millis () - on_timer <5000) {stepper.setStep (-SPEED); stepper2.setStep (-RYCHLOST); stepper3.setStep (-RYCHLOST); stepper4.setStep (-RYCHLOST); stepper5.setStep (-RYCHLOST); stepper6.setStep (-RYCHLOST); stepper10.setStep (-RYCHLOST); stepper11.setStep (-RYCHLOST); } else if (millis () - on_timer <6500) {stepper.setStep (SPEED); stepper2.setStep (RYCHLOST); stepper3.setStep (RYCHLOST); stepper4.setStep (RYCHLOST); stepper5.setStep (RYCHLOST); stepper6.setStep (RYCHLOST); stepper10.setStep (RYCHLOST); stepper11.setStep (RYCHLOST); } else if (millis () - on_timer <8000) {stepper.setStep (-SPEED); stepper2.setStep (-RYCHLOST); stepper3.setStep (-RYCHLOST); stepper4.setStep (-RYCHLOST); stepper5.setStep (-RYCHLOST); stepper6.setStep (-RYCHLOST); stepper10.setStep (-RYCHLOST); stepper11.setStep (-RYCHLOST); } 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 (RYCHLOST); stepper8.setStep (RYCHLOST); stepper9.setStep (RYCHLOST); stepper10.setStep (RYCHLOST); stepper11.setStep (RYCHLOST); stepper12.setStep (RYCHLOST); stepper13.setStep (RYCHLOST); } else if (millis () - on_timer <5000) {stepper3.setStep (-SPEED); stepper4.setStep (-RYCHLOST); stepper8.setStep (-RYCHLOST); stepper9.setStep (-RYCHLOST); stepper10.setStep (-RYCHLOST); stepper11.setStep (-RYCHLOST); stepper12.setStep (-RYCHLOST); stepper13.setStep (-RYCHLOST); } else if (millis () - on_timer <6500) {stepper3.setStep (SPEED); stepper4.setStep (RYCHLOST); stepper8.setStep (RYCHLOST); stepper9.setStep (RYCHLOST); stepper10.setStep (RYCHLOST); stepper11.setStep (RYCHLOST); stepper12.setStep (RYCHLOST); stepper13.setStep (RYCHLOST); } else if (millis () - on_timer <8000) {stepper3.setStep (-SPEED); stepper4.setStep (-RYCHLOST); stepper8.setStep (-RYCHLOST); stepper9.setStep (-RYCHLOST); stepper10.setStep (-RYCHLOST); stepper11.setStep (-RYCHLOST); stepper12.setStep (-RYCHLOST); stepper13.setStep (-RYCHLOST); } 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ódování

Krok 6: Před kódováním…

Před kódováním …
Před kódováním …

Měli byste přidat novou knihovnu související s krokovými motory.

Přejděte tedy na tento web a stáhněte si novou knihovnu.

blog.danggun.net/2092

Krok 7: Sériová komunikace

Musíte udělat dvě arduino mega-telekomunikace.

if (start_count == 0) {

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

Nejprve potřebujeme toto kódování na Maine Arduino Mega.

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

Arduino Mega, který přijímá sériovou komunikaci, toto kódování potřebuje.

První kódování je umístěno tam, kde se musí pohybovat druhé aduino.

Doporučuje: