Sisällysluettelo:
- Tarvikkeet
- Vaihe 1: Suunnittele iso kehys
- Vaihe 2: Laitteiston valmistus
- Vaihe 3: Ruudukon tekeminen
- Vaihe 4:
- Vaihe 5: Koodi
- Vaihe 6: Ennen koodausta…
- Vaihe 7: Sarjaliikenne
Video: Ruudukon siirtäminen ääretön peili: 7 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:00
nämä videot tekevät videota ja liikkuvat videot.
Halusimme näyttää heiluvan tilan liikkuvien ristikkojen ja Infinity Mirrorin kautta, jotta avaruuden tunne olisi tehokkaampi.
Työmme koostuu kahdesta akryylilevystä, etu- ja takalevyistä, jotka osoittavat ihmisille, miten he sekoittavat suoraan, ja taustalevyissä on 25 askelmoottoria, jotka todella tuottavat liikettä.
Teos koostuu etupaneelista, jossa näkyy avaruuden loistoja, puinen sauva, joka suorittaa keskiliikkeen, ohjaimen tankoille ja taustalevyn, joka luo liikkeen 25 askelmoottorin kautta.
25 porrasmoottoriin yhdistetyn verkon 25 huippua tuottavat erilaisia kuvioita asetettujen koodausarvojen mukaisesti. Lisäksi yritys halusi maksimoida tilan yhdistämällä läpinäkyvän akryylin etupuolipeilikalvoon, takapeiliin ja mustaksi valaistuun Infinity-peiliin. Erilaisia animaatiokuvioita tehdään aaltojen ja vedosten perusteella.
Tarvikkeet
Tarvikkeet
1. UV LED 12V 840cm
2. Kumi valkoinen 12mm 750cm
3. Arduino mega 2560 x2
4. moottorin ohjain x25
5. askelmoottori x25
6. kaksisuuntainen kaapeli askelmoottorille x25
7. puusylinteri x25
8. PVC (9 mm) x25
9. kevät x 25
10. akryyli 700mm*700mm
11. puolipeili elokuva 1524mm * 1M
12. siima
13. Virta 12V 12.5A, 12V 75A
14. jakopyörä (3D -tulostus) x 25
Vaihe 1: Suunnittele iso kehys
Kun aloitamme, meidän on suunniteltava ja piirrettävä suuri kehys. niin, valmistelimme pdf-tiedoston akryylikehykselle ja ajoituspyörän stl-tiedostolle (mitä laitoimme ne askelmoottorin eteen tuulikierteelle, joka voi vetää keskipuuta.
Akryylikehyksen ja jakopyörän kanssa meidän on ensin tehtävä stl -tiedosto ja 3D -tulostus.
Vaihe 2: Laitteiston valmistus
laatikko 1
1. Aseta 2T akryylimusta (nro 1) lattialle ja kiinnitä 5T akryylimusta puoli (nro 2) päälle. Lisää 5T musta akryyliristikko (nro 3) ja kiinnitä se akryylisidoksella.
laatikko 2
2. Ripottele vettä läpinäkyvälle akryylilevylle ja päälle puolipeilikalvo. Puolipeili rullaa korttia, jotta se ei kuplisi. Kiinnitä sivu (2) ja akryylikalvo (1). Älä kiinnitä yhdistettyjä akryyliulokkeita ja akryylipeilejä (nro 1) sivusuunnassa. Kiinnitä se tilapäisesti teipillä (siiman korjaamiseksi tai sisätilan kunnostamiseksi).
Vaihe 3: Ruudukon tekeminen
1. Puupylväs on kooltaan 12 mm. Poraa reikä päähän, jotta siima pääsee sisään.
2. Kiinnitä akryylilevyt rei'itetyn puupylvään toiselle puolelle liimalla.
3. Laita kuminauha puupylvään takaosan läpi ja aseta siihen jousi.
4. yleinen muoto
Vaihe 4:
1. Arduino Mega 2560 -nastainen liitäntänumero
2. jaa sähkö kahteen osaan
3. askelmoottori ja moottorin ohjainpiiri
4. Kaksi Arduino mega2560: ta on kytketty risteämällä TX ja RX sarjaliikennettä varten.
Vaihe 5: Koodi
#sisältää
StepperMulti stepper (200, 2, 3, 4, 5); // askelmoottorin numerointi 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 -luku = 0; int init_set_speed
mitätön asennus ()
Sarja1.alku (115200); // sarjaliikenne 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 NOPEUS = 200; // moottorin nopeuden mitätöity silmukka () {/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////) - set_timer1 <6000) {// Askelmoottori 13 liikkuu 1500 ja 6000 sekunnin välillä. <if (millis () - on_timer <1500) {stepper13.setStep (SPEED); } else if (millis () - on_timer <3000) {stepper13.setStep (-SPEED); // (- SPEED) tarkoittaa käänteistä kiertoa} 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 (NOPEUS); stepper8.setStep (NOPEUS); stepper9.setStep (NOPEUS); stepper12.setStep (NOPEUS); } 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 (NOPEUS); stepper9.setStep (NOPEUS); stepper12.setStep (NOPEUS); } 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 (NOPEUS); } else if (millis () - on_timer <4000) {stepper2.setStep (-SPEED); stepper5.setStep (NOPEUS); stepper6.setStep (-SPEED); stepper7.setStep (-SPEED); } else if (millis () - on_timer <5500) {stepper2.setStep (SPEED); stepper5.setStep (-SPEED); stepper6.setStep (SPEED); stepper7.setStep (NOPEUS); } else if (millis () - on_timer <7000) {stepper2.setStep (-SPEED); stepper5.setStep (NOPEUS); 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); } ////////////////////////////////////////////////////////////////////////////////////////// millis () - set_timer3 2000) {if (millis () - on_timer <3500) {stepper.setStep (SPEED); stepper2.setStep (NOPEUS); stepper3.setStep (NOPEUS); stepper4.setStep (NOPEUS); stepper5.setStep (NOPEUS); stepper6.setStep (SPEED); stepper10.setStep (NOPEUS); stepper11.setStep (NOPEUS); } 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 (NOPEUS); stepper3.setStep (NOPEUS); stepper4.setStep (NOPEUS); stepper5.setStep (NOPEUS); stepper6.setStep (SPEED); stepper10.setStep (NOPEUS); stepper11.setStep (NOPEUS); } 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 (NOPEUS); stepper8.setStep (NOPEUS); stepper9.setStep (NOPEUS); stepper10.setStep (NOPEUS); stepper11.setStep (NOPEUS); stepper12.setStep (NOPEUS); stepper13.setStep (NOPEUS); } 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 (NOPEUS); stepper8.setStep (NOPEUS); stepper9.setStep (NOPEUS); stepper10.setStep (NOPEUS); stepper11.setStep (NOPEUS); stepper12.setStep (NOPEUS); stepper13.setStep (NOPEUS); } 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 (); }
frist -koodaus
ja..
#sisältää
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 -luku = 0; int init_set_speed = 10; void setup () Serial1.begin (115200); Sarja.alku (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 NOPEUS = 200; void loop () {
/////////////////////////////////////
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 (NOPEUS); stepper8.setStep (NOPEUS); stepper9.setStep (NOPEUS); stepper12.setStep (NOPEUS); } 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 (NOPEUS); stepper9.setStep (NOPEUS); stepper12.setStep (NOPEUS); } 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 (NOPEUS); } else if (millis () - on_timer <4000) {stepper2.setStep (-SPEED); stepper5.setStep (NOPEUS); stepper6.setStep (-SPEED); stepper7.setStep (-SPEED); } else if (millis () - on_timer <5500) {stepper2.setStep (SPEED); stepper5.setStep (-SPEED); stepper6.setStep (SPEED); stepper7.setStep (NOPEUS); } else if (millis () - on_timer <7000) {stepper2.setStep (-SPEED); stepper5.setStep (NOPEUS); 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); } ////////////////////////////////////////////////////////////////////////////////////////// millis () - set_timer3 2000) {if (millis () - on_timer <3500) {stepper.setStep (SPEED); stepper2.setStep (NOPEUS); stepper3.setStep (NOPEUS); stepper4.setStep (NOPEUS); stepper5.setStep (NOPEUS); stepper6.setStep (SPEED); stepper10.setStep (NOPEUS); stepper11.setStep (NOPEUS); } 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 (NOPEUS); stepper3.setStep (NOPEUS); stepper4.setStep (NOPEUS); stepper5.setStep (NOPEUS); stepper6.setStep (SPEED); stepper10.setStep (NOPEUS); stepper11.setStep (NOPEUS); } 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 (NOPEUS); stepper8.setStep (NOPEUS); stepper9.setStep (NOPEUS); stepper10.setStep (NOPEUS); stepper11.setStep (NOPEUS); stepper12.setStep (NOPEUS); stepper13.setStep (NOPEUS); } 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 (NOPEUS); stepper8.setStep (NOPEUS); stepper9.setStep (NOPEUS); stepper10.setStep (NOPEUS); stepper11.setStep (NOPEUS); stepper12.setStep (NOPEUS); stepper13.setStep (NOPEUS); } 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 (); }
toinen koodaus
Vaihe 6: Ennen koodausta…
Lisää uusi askelmoottoreihin liittyvä kirjasto.
Joten mene tälle sivustolle ja lataa uusi kirjasto.
blog.danggun.net/2092
Vaihe 7: Sarjaliikenne
Sinun on tehtävä kaksi arduino-mega-tietoliikennettä.
jos (aloitusluku == 0) {
int Data = Serial1.read (); Serial.println (Data); jos (Data == 0x01) {start_count = 1; }
Ensinnäkin tarvitsemme tämän koodauksen Maine Arduino Megassa.
if (count == 0) {if (millis () - set_timer1> 1000) {Serial1.write (0x01); count = 1; }
Arduino Mega, joka vastaanottaa sarjaliikennettä, tarvitsee tämän koodauksen.
Ensimmäinen koodaus sijoitetaan sinne, missä toisen aduinon on siirryttävä.
Suositeltava:
Helppo ääretön peili Arduino Gemma & Neo -pikselillä: 8 vaihetta (kuvilla)
Helppo ääretön peili Arduino Gemma & NeoPixeleillä: Katso! Katso syvälle lumoavaan ja petollisesti yksinkertaiseen äärettömyyspeiliin! Yksittäinen LED -valonauha loistaa sisäänpäin peilikerroksessa luodakseen loputtoman heijastuksen vaikutuksen. Tämä projekti soveltaa intro Arduinin taitoja ja tekniikoita
Ääretön peili LCD- ja IR -anturilla: 5 vaihetta
Ääretön peili LCD- ja IR -anturilla: Tämä projekti näyttää sinulle, kuinka voit tehdä ääretön peili. Perusajatuksena on, että peilissä olevat LEDit luovat valoa, joka heijastuu taustapeilistä etupeiliin, josta valoa pääsee ulos, jotta voimme nähdä sisälle ja niin
Tee kaksipuolinen työpöydän ääretön peili: 14 vaihetta (kuvilla)
Tee 2 -puolinen työpöydän ääretön peili: Suurin osa äärettömistä peileistä, jotka olen nähnyt, ovat yksipuolisia, mutta halusin rakentaa hieman erilaisen. Tämä on kaksipuolinen ja suunniteltu siten, että se voidaan näyttää työpöydällä tai hyllyllä. Se on helppo, erittäin hieno projekti tehdä
Äänen reaktiivinen ääretön peili: 5 vaihetta
Äänireaktiivinen äärettömyyspeili: Tässä ohjeessa näytän sinulle, kuinka voit tehdä tämän ääretön peili. Aloitetaan siis
Ääretön peili ja pöytä (arkityökaluilla): 7 vaihetta (kuvilla)
Ääretön peili ja pöytä (casual-työkaluilla): Hei kaikki, Hetki sitten törmäsin tähän ohjeeseen ja otin heti sen mukaan ja halusin tehdä oman, mutta en saanut käsiäni 1) Yksisuuntainen pleksilasi 2) CNC -reititin. Pienen etsinnän jälkeen löysin