Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-23 14:38
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
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
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
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:
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…
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:
Vytvořte zrcadlové hodiny nekonečna: 15 kroků (s obrázky)
Make a Infinity Mirror Clock: V předchozím projektu jsem postavil zrcadlo nekonečna, kde bylo mým konečným cílem udělat z něj hodiny. (Make a Colorful Infinity Mirror) Po jeho vybudování jsem se po tom nesnažil, protože, ačkoliv to vypadalo skvěle, bylo pár věcí s
Vytvořte 2stranné stolní zrcadlo nekonečna: 14 kroků (s obrázky)
Vytvořte 2stranné, stolní nekonečné zrcadlo: Většina zrcadel nekonečna, která jsem viděl, jsou jednostranná, ale chtěl jsem postavit trochu jiné. Tenhle bude oboustranný a navržený tak, aby jej bylo možné zobrazit na ploše nebo na poličce. Je to snadný, velmi cool projekt
Vytvořte zrcadlo nekonečna: 12 kroků (s obrázky)
Make a Infinity Mirror Cube: Když jsem při vytváření svého prvního zrcadla nekonečna hledal informace, narazil jsem na několik obrázků a videí z nekonečných kostek a rozhodně jsem si chtěl vytvořit jednu vlastní. Hlavní věc, která mě brzdila, bylo, že jsem to chtěl udělat jinak
Moderní stolní lampa se zrcadlem Infinity Mirror: 19 kroků (s obrázky)
Moderní LED stolní lampa Infinity Mirror: © 2017 techydiy.org Všechna práva vyhrazena Nesmíte kopírovat ani znovu distribuovat video nebo obrázky související s tímto instructable. V tomto instruktážním popisu popíšu, jak vytvořit moderní stylizované zrcadlo nekonečna, které také opravdu funguje stejně jako
DIY 18650 Nabíjecí mřížka lithium -iontových článků: 7 kroků (s obrázky)
Nabíjecí síť lithium -iontových článků DIY 18650: Pracoval jsem na motorizaci svého kola pomocí stejnosměrného motoru s převodovkou a nyní k tomu potřebuji baterii. Abych vytvořil baterii, rozhodl jsem se použít oblíbené lithium -iontové články 18650 ze dvou starých hoverboardových baterií. Protože články jsou