Sadržaj:
- Supplies
- Korak 1: Planirajte veliki okvir
- Korak 2: Izrada hardvera
- Korak 3: Izrada mreže
- Korak 4:
- Korak 5: Kodirajte
- Korak 6: Prije kodiranja…
- Korak 7: Serijska komunikacija
Video: Pokretna rešetka s beskonačnim ogledalom: 7 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:05
ti video zapisi prave video zapise i pokretni video zapis.
Željeli smo prikazati njišući prostor kroz pokretne rešetke i beskonačno ogledalo kako bismo efektnije prikazali osjećaj prostora.
Naš rad sastoji se od dvije akrilne ploče, prednje i stražnje ploče, koje ljudima pokazuju način na koji se izravno miješaju, a stražnje ploče imaju 25 koračnih motora koji zapravo proizvode kretanje.
Rad se sastoji od prednje ploče koja će prikazivati odsjaj prostora, drvenog štapa koji izvodi srednji pokret, vodiča za šipke i stražnje ploče koja stvara kretanje kroz motore sa 25 koraka.
25 vrhova mrežno spojenih na 25 koračnih motora proizvodi različite uzorke prema postavljenim vrijednostima kodiranja. Osim toga, kompanija je htjela povećati prostor kombinovanjem prozirnog akrila sa prednjim ogledalom, stražnjim ogledalom i crno osvijetljenim Infinity ogledalom. Razni uzorci animacije izrađeni su na temelju valova i talasa koji su napravljeni na temelju valova vode.
Supplies
Supplies
1. UV LED 12V 840cm
2. Guma bijela 12mm 750cm
3. Arduino mega 2560 x2
4. Upravljački program motora x25
5.koračni motor x25
6. Bipolarni kabel za koračni motor x25
7. Drveni cilindar x25
8.pvc (9 mm) x25
9. Proljeće x 25
10. akril 700mm*700mm
11. Polovica zrcalne folije 1524mm * 1M
12. Ribolovna linija
13. Napajanje 12V 12.5A, 12V 75A
14. razvodna remenica (3d ispis) x 25
Korak 1: Planirajte veliki okvir
Kad počnemo, moramo planirati i nacrtati veliki okvir. pa smo pripremili pdf datoteku za akrilni cjelokupni okvir i stl datoteku remenice mjernog remena (ono što smo stavili ispred koračnog motora za navoj za vjetar koji može povući šipku srednjeg drva).
s ukupnim akrilnim okvirom i remenicom za mjerenje vremena, prvo moramo napraviti stl datoteku i 3d ispis.
Korak 2: Izrada hardvera
box1
1. Postavite 2T akrilnu crnu (br. 1) na pod i pričvrstite 5T akrilnu crnu stranu (br. 2) na vrh. Dodajte 5T akrilnu crnu rešetku (br. 3) i pričvrstite je pomoću akrilne veze.
box2
2. Poprskajte vodu na prozirnoj akrilnoj ploči i odozgo sa poluzrcalnim filmom. Polu ogledalo kotrlja kartu kako ne bi zablistala. Pričvrstite bočnu stranu (2) i akrilnu prozirnicu (1). Ne pričvršćujte kombinirano akrilno ispupčenje i akrilna ogledala (br. 1) bočno. Privremeno ga popravite trakom (za popravak s ribolovne linije ili obnovu unutrašnjosti).
Korak 3: Izrada mreže
1. Drveni stub je veličine 12 mm. Na kraju izbušite rupu kako bi ribarska linija ušla.
2. Ljepilom pričvrstite akrilne ploče na drugu stranu perforiranog drvenog stupa.
3. Stavite gumicu kroz stražnju stranu drvenog stupa i stavite oprugu u nju.
4. Ukupni oblik
Korak 4:
1. Arduino Mega 2560 pin priključni broj
2. podijelite električnu energiju na dva dijela
3. Krug koračnog motora i upravljačkog programa motora
4. Dva Arduino mega2560 povezana su ukrštanjem TX i RX radi serijske komunikacije.
Korak 5: Kodirajte
#include
StepperMulti stepper (200, 2, 3, 4, 5); // numeriranje koračnog motora 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 broj = 0; int init_set_speed
void setup ()
Serial1.begin (115200); // serijska komunikacija 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 SPEED = 200; // brzina motora void loop () {/////////////////////////////////////// if (millis () - set_timer1 <6000) {// Koračni motor 13 se kreće između 1500 i 6000 sekundi. <if (millis () - on_timer <1500) {stepper13.setStep (SPEED); } else if (millis () - on_timer <3000) {stepper13.setStep (-SPEED); // (- SPEED) znači obrnuta rotacija} else if (millis () - on_timer <4500) {stepper13.setStep (SPEED); } else if (millis () - on_timer 1000) {Serial1.write (0x01); count = 1; }} ////////////////////////// if (millis () - set_timer2 1000) {if (millis () - on_timer <2500) {stepper7.setStep (BRZINA); 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); } ///////////////////////////////////////////////////// ako (millis () - set_timer3 2000) {if (millis () - on_timer <3500) {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 <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 (SPEED); stepper3.setStep (SPEED); stepper4.setStep (SPEED); stepper5.setStep (SPEED); stepper6.setStep (SPEED); stepper10.setStep (SPEED); 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 (SPEED); 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 (SPEED); 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 (); }
prvo kodiranje
i..
#include
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 broj = 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 SPEED = 200; void loop () {{100} {101}
/////////////////////////////////////
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); count = 1; }} ////////////////////////// if (millis () - set_timer2 1000) {if (millis () - on_timer <2500) {stepper7.setSte ㄴ p (BRZINA); 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); } ///////////////////////////////////////////////////// ako (millis () - set_timer3 2000) {if (millis () - on_timer <3500) {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 <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 (SPEED); stepper3.setStep (SPEED); stepper4.setStep (SPEED); stepper5.setStep (SPEED); stepper6.setStep (SPEED); stepper10.setStep (SPEED); 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 (SPEED); 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 (SPEED); 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 (); }
drugo kodiranje
Korak 6: Prije kodiranja…
Trebali biste dodati novu biblioteku vezanu za koračne motore.
Zato idite na ovu web lokaciju i preuzmite novu biblioteku.
blog.danggun.net/2092
Korak 7: Serijska komunikacija
Morate napraviti dvije arduino mega-telekomunikacije.
if (start_count == 0) {
int Data = Serial1.read (); Serial.println (Podaci); if (Podaci == 0x01) {start_count = 1; }
Prije svega, potrebno nam je ovo kodiranje na Maine Arduino Mega.
if (count == 0) {if (millis () - set_timer1> 1000) {Serial1.write (0x01); count = 1; }
Arduino Mega, koji prima serijsku komunikaciju, treba ovo kodiranje.
Prvo kodiranje postavljeno je tamo gdje se drugi aduino mora kretati.
Preporučuje se:
Pokretna gunpla: Gundam: 5 koraka
Pokretna gunpla: Gundam: Nakon što su modeli napravljeni, oni se ne pomiču. Stoga sam odlučio stvoriti način za kretanje Gundam modela. Osnovni plastični modeli nakon sastavljanja mogu stajati samo u postavljenim položajima. Htela sam da od modela napravim više od statue. Zaključio sam da ako
Platformer sa beskonačnim nivoima na GameGo -u sa Makecode Arcade: 5 koraka (sa slikama)
Platformer sa beskonačnim nivoima na GameGo -u Sa Makecode Arcade: GameGo je retro prenosiva igraća konzola kompatibilna sa Microsoft Makecode -om koju je razvilo TinkerGen STEM obrazovanje. Zasnovan je na STM32F401RET6 ARM Cortex M4 čipu i napravljen je za STEM edukatore ili samo ljude koji se vole zabavljati stvarajući retro video igre
Vortex sat: ručni sat s ogledalom u beskonačnosti: 10 koraka (sa slikama)
Vortex Watch: Infinity Mirror ručni sat: Cilj ovog projekta bio je stvoriti nosivu verziju beskonačnog zrcalnog sata. Koristi svoje RGB LED diode za označavanje vremena dodjeljujući sate, minute i sekunde crvenom, zelenom i plavom svjetlu i preklapajući ove nijanse t
Pokretna mahovina: 5 koraka
Pokretna mahovina: Napravite iluziju da se mahovina kreće po kutiji pa kad je mazite, dolazi prema vama i kreće se kao da diše. Korištenje magneta i Arduina sa senzorom u pokretu napravilo je iluziju
Zidni sat s beskonačnim ogledalom u IKEA Okviru za slike: 4 koraka
Infinity Mirror zidni sat u IKEA Okviru za slike: Zdravo, oduvijek sam želio napraviti zidni sat. U trgovinama poput IKEA -e ima puno prekrasnih zidnih satova. Imao sam problema s ovim komercijalnim satovima. Preglasni su za mene (kontinuirani tic-tac je dosadan), ne vidim kazaljke na satu