Innehållsförteckning:
- Tillbehör
- Steg 1: Planera en stor ram
- Steg 2: Gör hårdvara
- Steg 3: Gör rutnät
- Steg 4:
- Steg 5: Kod
- Steg 6: Innan kodning…
- Steg 7: Seriell kommunikation
Video: Moving Grid With Infinity Mirror: 7 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:38
dessa videor gör video och rörlig video.
Vi ville visa det gungande rummet genom rörliga rutor och Infinity Mirror för att visa rymdkänslan mer effektivt.
Vårt arbete består av två akrylplattor, framsidan och bakplattorna, som visar människor hur de rör sig direkt, och bakplattorna har 25 stegmotorer som faktiskt producerar rörelse.
Verket består av en frontpanel som visar rymdens glimtar, en träpinne som utför mellersta rörelsen, en guide för stavarna och en bakplatta som skapar rörelse genom 25 stegsmotorer.
De 25 topparna på nätet som är anslutna till 25-stegsmotorerna producerar olika mönster enligt de inställda kodningsvärdena. Dessutom ville företaget maximera utrymmet genom att kombinera transparent akryl med främre halvspegelfilm, backspegel och svartbelyst Infinity-spegel. Olika animationsmönster görs baserat på vågor och drabs som är gjorda baserade på vattenvågor.
Tillbehör
Tillbehör
1. UV LED 12V 840cm
2. gummi vit 12mm 750cm
3. Arduino mega 2560 x2
4. Motorförare x25
5. stegmotor x25
6. Bipolär kabel för stegmotor x25
7. Träcylinder x25
8. PVC (9 mm) x25
9. våren x 25
10. akryl 700mm*700mm
11. Halv spegelfilm 1524mm * 1M
12. fiskelinje
13. Power 12V 12.5A, 12V 75A
14. timing remskiva (3d -tryck) x 25
Steg 1: Planera en stor ram
När vi börjar måste vi planera och rita en stor ram. så, vi förberedde en pdf-fil för akryl övergripande ram och timing remskiva stl fil (vad vi lägger dem framför stegmotor för vindtråd som kan dra en mid-wood stav).
Med den övergripande akrylramen och remskivan måste vi först göra en STL -fil och 3D -utskrift.
Steg 2: Gör hårdvara
låda 1
1. Lägg 2T akrylsvart (nr 1) på golvet och fäst 5T akrylsvart sida (nr 2) ovanpå. Lägg till 5T svart akrylnät (nr 3) och fäst det med akrylbindning.
box2
2. Strö vatten på transparent akrylplatta och toppa med halvspegelfilm. En halv spegel rullar ett kort så att det inte bubblar. Fäst sidan (2) och akryltransparensen (1). Säkra inte det kombinerade akrylspetsen och akrylspeglarna (nr 1) i sidled. Fixa det tillfälligt med tejp (för reparation av fiskelinan eller renovera interiören).
Steg 3: Gör rutnät
1. En träpelare är 12 mm stor. Borra ett hål i slutet för att låta fiskelinan komma in.
2. Fäst akrylplattor på andra sidan av en perforerad träpelare med hjälp av lim.
3. Stick ett gummiband genom baksidan av en träpelare och sätt en fjäder i det.
4. övergripande form
Steg 4:
1. Arduino Mega 2560 Pin Connection Number
2. dela in elen i två delar
3. stegmotor och motordrivkrets
4. Två Arduino mega2560s är anslutna genom att korsa TX och RX för seriell kommunikation.
Steg 5: Kod
#omfatta
StepperMulti stepper (200, 2, 3, 4, 5); // stegmotornummerering 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 count = 0; int init_set_speed
void setup ()
Serial1.start (115200); // seriell kommunikation 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; // motorhastighets void loop () {/////////////////////////////////////////// if (millis () - set_timer1 <6000) {// Stepmotor 13 rör sig mellan 1500 och 6000 sekunder. <if (millis () - on_timer <1500) {stepper13.setStep (SPEED); } annars if (millis () - on_timer <3000) {stepper13.setStep (-SPEED); // (- SPEED) betyder omvänd rotation} annars if (millis () - on_timer <4500) {stepper13.setStep (SPEED); } annars if (millis () - on_timer 1000) {Serial1.write (0x01); count = 1; }} //////////////////////////// if (millis () - set_timer2 1000) {if (millis () - on_timer <2500) {stepper7.setStep (FART); stepper8.setStep (SPEED); stepper9.setStep (SPEED); stepper12.setStep (SPEED); } annars if (millis () - on_timer <4000) {stepper7.setStep (-SPEED); stepper8.setStep (-SPEED); stepper9.setStep (-SPEED); stepper12.setStep (-SPEED); } annars if (millis () - on_timer <5500) {stepper7.setStep (SPEED); stepper8.setStep (SPEED); stepper9.setStep (SPEED); stepper12.setStep (SPEED); } annars if (millis () - on_timer <7000) {stepper7.setStep (-SPEED); stepper8.setStep (-SPEED); stepper9.setStep (-SPEED); stepper12.setStep (-SPEED); } annat {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); } annars if (millis () - on_timer <4000) {stepper2.setStep (-SPEED); stepper5.setStep (SPEED); stepper6.setStep (-SPEED); stepper7.setStep (-SPEED); } annars if (millis () - on_timer <5500) {stepper2.setStep (SPEED); stepper5.setStep (-SPEED); stepper6.setStep (SPEED); stepper7.setStep (SPEED); } annars if (millis () - on_timer <7000) {stepper2.setStep (-SPEED); stepper5.setStep (SPEED); stepper6.setStep (-SPEED); stepper7.setStep (-SPEED); } annat {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); } /////////////////////////////////////////////// om (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); } annars 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); } annars 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); } annars 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); } annat {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); } annars 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); } annars 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); } annars 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); } annat {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 kodning
och..
#omfatta
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 count = 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 () {
/////////////////////////////////////
if (millis () - set_timer1 <6000) {if (millis () - on_timer <1500) {stepper13.setStep (SPEED); } annars if (millis () - on_timer <3000) {stepper13.setStep (-SPEED); } annars if (millis () - on_timer <4500) {stepper13.setStep (SPEED); } annars if (millis () - on_timer 1000) {Serial1.write (0x01); count = 1; }} //////////////////////////// if (millis () - set_timer2 1000) {if (millis () - on_timer <2500) {stepper7.setSte ㄴ p (SPEED); stepper8.setStep (SPEED); stepper9.setStep (SPEED); stepper12.setStep (SPEED); } annars if (millis () - on_timer <4000) {stepper7.setStep (-SPEED); stepper8.setStep (-SPEED); stepper9.setStep (-SPEED); stepper12.setStep (-SPEED); } annars if (millis () - on_timer <5500) {stepper7.setStep (SPEED); stepper8.setStep (SPEED); stepper9.setStep (SPEED); stepper12.setStep (SPEED); } annars if (millis () - on_timer <7000) {stepper7.setStep (-SPEED); stepper8.setStep (-SPEED); stepper9.setStep (-SPEED); stepper12.setStep (-SPEED); } annat {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); } annars if (millis () - on_timer <4000) {stepper2.setStep (-SPEED); stepper5.setStep (SPEED); stepper6.setStep (-SPEED); stepper7.setStep (-SPEED); } annars if (millis () - on_timer <5500) {stepper2.setStep (SPEED); stepper5.setStep (-SPEED); stepper6.setStep (SPEED); stepper7.setStep (SPEED); } annars if (millis () - on_timer <7000) {stepper2.setStep (-SPEED); stepper5.setStep (SPEED); stepper6.setStep (-SPEED); stepper7.setStep (-SPEED); } annat {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); } /////////////////////////////////////////////// om (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); } annars 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); } annars 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); } annars 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); } annat {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); } annars 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); } annars 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); } annars 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); } annat {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 (); }
andra kodning
Steg 6: Innan kodning…
Du bör lägga till ett nytt bibliotek relaterat till stegmotorer.
Så du går in på den här webbplatsen och laddar ner ett nytt bibliotek.
blog.danggun.net/2092
Steg 7: Seriell kommunikation
Du måste göra två arduino megatelekommunikationer.
if (start_count == 0) {
int Data = Serial1.read (); Serial.println (data); om (Data == 0x01) {start_count = 1; }
Först och främst behöver vi denna kodning på Maine Arduino Mega.
if (count == 0) {if (millis () - set_timer1> 1000) {Serial1.write (0x01); count = 1; }
Arduino Mega, som tar emot seriell kommunikation, behöver denna kodning.
Den första kodningen placeras där den andra aduino måste flytta.
Rekommenderad:
Gör en Infinity Mirror Clock: 15 steg (med bilder)
Gör en Infinity Mirror Clock: I ett tidigare projekt byggde jag en infinity mirror, där mitt slutliga mål för det var att göra det till en klocka. (Gör en färgglad Infinity Mirror) Jag gjorde inte det efter att ha byggt det eftersom det, trots att det såg coolt ut, fanns det några saker med
Gör en ENKEL Infinity Mirror Cube - INGEN 3D -utskrift och INGEN programmering: 15 steg (med bilder)
Gör en ENKEL Infinity Mirror Cube | INGEN 3D -utskrift och INGEN programmering: Alla gillar en bra oändlig kub, men de ser ut som om de skulle vara svåra att göra. Mitt mål för denna instruerbara är att visa dig steg-för-steg hur du gör en. Inte bara det, men med instruktionerna som jag ger dig kommer du att kunna göra en
Easy Infinity Mirror med Arduino Gemma & NeoPixels: 8 steg (med bilder)
Easy Infinity Mirror With Arduino Gemma & NeoPixels: Se! Titta djupt in i den förtrollande och bedrägligt enkla oändliga spegeln! En enda remsa av lysdioder lyser inåt på en spegelsmörgås för att skapa effekten av oändlig reflektion. Detta projekt kommer att tillämpa färdigheter och tekniker från mitt intro Arduin
Infinity Mirror Illusion Magic: 3 steg
Infinity Mirror Illusion Magic: Hej vänner, låt oss göra en Infinity -spegel, vilket är en illusionsmagi
En galax i din hand! Infinity Mirror Box: 3 steg (med bilder)
En galax i din hand! Infinity Mirror Box: Denna handledning handlar om att göra en liten form som skapar många reflektioner inuti. Med hål i varje vinkel för ljus och ett litet fönster att se igenom kan du se denna oändliga process i handen! Idén kom från att titta på oändlighet mirr