Inhoudsopgave:
- Benodigdheden
- Stap 1: Plan een groot raamwerk
- Stap 2: Hardware maken
- Stap 3: Raster maken
- Stap 4:
- Stap 5: Coderen
- Stap 6: Voor het coderen…
- Stap 7: Seriële communicatie
Video: Bewegend raster met oneindige spiegel - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:15
die video's maken video en bewegende video.
We wilden de wuivende ruimte laten zien door middel van bewegende rasters en de Infinity Mirror om het gevoel van ruimte effectiever te laten zien.
Ons werk bestaat uit twee acrylplaten, de voorkant en de achterplaten, die mensen laten zien hoe ze direct in beweging zijn, en de achterplaten hebben 25 stappenmotoren die daadwerkelijk beweging produceren.
Het werk bestaat uit een frontpaneel dat de sprankjes van de ruimte laat zien, een houten stok die de middenbeweging uitvoert, een geleider voor de stangen en een bord dat beweging creëert door 25 stappenmotoren.
De 25 pieken van het net aangesloten op de 25 stappenmotoren produceren verschillende patronen volgens de ingestelde codeerwaarden. Bovendien wilde het bedrijf de ruimte maximaliseren door transparant acryl te combineren met een halfspiegelfilm aan de voorkant, een achteruitkijkspiegel en een zwart verlichte Infinity-spiegel. Verschillende animatiepatronen zijn gemaakt op basis van golven en drabs die zijn gemaakt op basis van de golven van water.
Benodigdheden
Benodigdheden
1. UV-LED 12V 840cm
2. Rubber wit 12mm 750cm
3. Arduino mega 2560 x2
4. Motorbestuurder x25
5. stappenmotor x25
6. Bipolaire kabel voor stappenmotor x25
7. Wood cilinder x25
8.pvc (9mm) x25
9. Spring x 25
10. acryl 700 mm * 700 mm;
11. Halve spiegelfilm 1524 mm * 1M
12. Vislijn:
13. Vermogen 12V 12.5A, 12V 75A
14. timing katrol (3d print) x 25
Stap 1: Plan een groot raamwerk
Als we beginnen, moeten we een groot kader plannen en tekenen. dus hebben we een pdf-bestand gemaakt voor een acryl algemeen frame en een stl-bestand van de timingpoelie (wat we voor de stappenmotor hebben geplaatst voor winddraad die een middenhouten staaf kan trekken).
met het acryl algehele frame en de timing katrol, moeten we eerst een stl-bestand maken en 3D-printen.
Stap 2: Hardware maken
doos1
1. Plaats 2T acryl zwart (nr. 1) op de vloer en bevestig 5T acryl zwarte zijde (nr. 2) bovenop. Voeg 5T acryl zwart raster (nr. 3) toe en bevestig het met acrylbinding.
doos2
2. Sprinkle water op acryl transparante plaat en top met semi-spiegelfilm. Een halve spiegel rolt een kaart om te voorkomen dat deze gaat borrelen. Bevestig de zijkant (2) en de acryl transparant (1). Zet het gecombineerde acryluitsteeksel en acrylspiegels (nr. 1) niet zijdelings vast. Zet het tijdelijk vast met tape (voor reparatie van de vislijn of renovatie van het interieur).
Stap 3: Raster maken
1. Een houten kolom is 12 mm groot. Boor een gat in het uiteinde zodat de vislijn erin kan.
2. Bevestig acrylplaten met lijm aan de andere kant van een geperforeerde houten kolom.
3. Steek een rubberen band door de achterkant van een houten pilaar en plaats er een veer in.
4. Algemene vorm:
Stap 4:
1. Arduino Mega 2560 Pin-verbindingsnummer:
2.verdeel de elektriciteit in twee delen:
3. Stappenmotor en motorbesturingscircuit
4. Twee Arduino mega2560's zijn verbonden door TX en RX te kruisen voor seriële communicatie.
Stap 5: Coderen
#erbij betrekken
StepperMultistepper(200, 2, 3, 4, 5); // stappenmotor nummering StepperMulti stepper2(200, 6, 7, 8, 9); StepperMultistepper3(200, 10, 11, 12, 13); StepperMultistepper4(200, A0, A1, A2, A3); StepperMultistepper5(200, A4, A5, A6, A7); StepperMultistepper6(200, 22, 23, 24, 25); StepperMultistepper7(200, 26, 27, 28, 29); StepperMultistepper8(200, 30, 31, 32, 33); StepperMultistepper9(200, 34, 35, 36, 37); StepperMultistepper10(200, 38, 39, 40, 41); StepperMultistepper11(200, 42, 43, 44, 45); StepperMultistepper12(200, 46, 47, 48, 49); StepperMultistepper13(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(); aantal int = 0; int init_set_speed
ongeldige setup()
Serieel1.begin(115200); //seriële communicatie 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 SNELHEID = 200; // motor snelheid void loop() { ///////////////////////////////////// if (millis() - set_timer1 < 6000) { // Stappenmotor 13 beweegt tussen 1500 en 6000 seconden. < if (millis () - on_timer < 1500) { stepper13.setStep (SPEED); } else if (millis() - on_timer < 3000) { stepper13.setStep(-SPEED); //(-SPEED) betekent omgekeerde rotatie} else if (millis() - on_timer <4500) { stepper13.setStep (SPEED); } else if (millis() - on_timer 1000) { Serial1.write(0x01); aantal = 1; } } /////////////////////// if (millis() - set_timer2 1000) { if (millis() - on_timer < 2500) { stepper7.setStep (SNELHEID); stepper8.setStep (SNELHEID); stepper9.setStep (SNELHEID); stepper12.setStep (SNELHEID); } else if (millis() - on_timer < 4000) { stepper7.setStep(-SPEED); stepper8.setStep(-SNELHEID); stepper9.setStep(-SNELHEID); stepper12.setStep(-SNELHEID); } else if (millis() - on_timer < 5500) { stepper7.setStep (SPEED); stepper8.setStep (SNELHEID); stepper9.setStep (SNELHEID); stepper12.setStep (SNELHEID); } else if (millis() - on_timer < 7000) { stepper7.setStep(-SPEED); stepper8.setStep(-SNELHEID); stepper9.setStep(-SNELHEID); stepper12.setStep(-SNELHEID); } 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(-SNELHEID); stepper6.setStep (SNELHEID); stepper7.setStep (SNELHEID); } else if (millis() - on_timer < 4000) { stepper2.setStep(-SPEED); stepper5.setStep (SNELHEID); stepper6.setStep(-SNELHEID); stepper7.setStep(-SNELHEID); } else if (millis() - on_timer < 5500) { stepper2.setStep (SPEED); stepper5.setStep(-SNELHEID); stepper6.setStep (SNELHEID); stepper7.setStep (SNELHEID); } else if (millis() - on_timer < 7000) { stepper2.setStep(-SPEED); stepper5.setStep (SNELHEID); stepper6.setStep(-SNELHEID); stepper7.setStep(-SNELHEID); } 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); } /////////////////////////////////////////////// indien (millis() - set_timer3 2000) { if (millis() - on_timer < 3500) { stepper.setStep (SPEED); stepper2.setStep (SNELHEID); stepper3.setStep (SNELHEID); stepper4.setStep (SNELHEID); stepper5.setStep (SNELHEID); stepper6.setStep (SNELHEID); stepper10.setStep (SNELHEID); stepper11.setStep (SNELHEID); } else if (millis() - on_timer < 5000) { stepper.setStep(-SPEED); stepper2.setStep(-SNELHEID); stepper3.setStep(-SNELHEID); stepper4.setStep(-SNELHEID); stepper5.setStep(-SNELHEID); stepper6.setStep(-SNELHEID); stepper10.setStep(-SNELHEID); stepper11.setStep(-SNELHEID); } else if (millis() - on_timer <6500) { stepper.setStep(SPEED); stepper2.setStep (SNELHEID); stepper3.setStep (SNELHEID); stepper4.setStep (SNELHEID); stepper5.setStep (SNELHEID); stepper6.setStep (SNELHEID); stepper10.setStep (SNELHEID); stepper11.setStep (SNELHEID); } else if (millis() - on_timer < 8000) { stepper.setStep(-SPEED); stepper2.setStep(-SNELHEID); stepper3.setStep(-SNELHEID); stepper4.setStep(-SNELHEID); stepper5.setStep(-SNELHEID); stepper6.setStep(-SNELHEID); stepper10.setStep(-SNELHEID); stepper11.setStep(-SNELHEID); } 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 (SNELHEID); stepper8.setStep (SNELHEID); stepper9.setStep (SNELHEID); stepper10.setStep (SNELHEID); stepper11.setStep (SNELHEID); stepper12.setStep (SNELHEID); stepper13.setStep (SNELHEID); } else if (millis() - on_timer < 5000) { stepper3.setStep(-SPEED); stepper4.setStep(-SNELHEID); stepper8.setStep(-SNELHEID); stepper9.setStep(-SNELHEID); stepper10.setStep(-SNELHEID); stepper11.setStep(-SNELHEID); stepper12.setStep(-SNELHEID); stepper13.setStep(-SPEED); } else if (millis() - on_timer <6500) { stepper3.setStep(SPEED); stepper4.setStep (SNELHEID); stepper8.setStep (SNELHEID); stepper9.setStep (SNELHEID); stepper10.setStep (SNELHEID); stepper11.setStep (SNELHEID); stepper12.setStep (SNELHEID); stepper13.setStep (SNELHEID); } else if (millis() - on_timer < 8000) { stepper3.setStep(-SPEED); stepper4.setStep(-SNELHEID); stepper8.setStep(-SNELHEID); stepper9.setStep(-SNELHEID); stepper10.setStep(-SNELHEID); stepper11.setStep(-SNELHEID); stepper12.setStep(-SNELHEID); 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(); }
eerste codering
en..
#erbij betrekken
StepperMultistepper(200, 2, 3, 4, 5); StepperMultistepper2(200, 6, 7, 8, 9); StepperMultistepper3(200, 10, 11, 12, 13); StepperMultistepper4(200, A0, A1, A2, A3); StepperMultistepper5(200, A4, A5, A6, A7); StepperMultistepper6(200, 22, 23, 24, 25); StepperMultistepper7(200, 26, 27, 28, 29); StepperMultistepper8(200, 30, 31, 32, 33); StepperMultistepper9(200, 34, 35, 36, 37); StepperMultistepper10(200, 38, 39, 40, 41); StepperMultistepper11(200, 42, 43, 44, 45); StepperMultistepper12(200, 46, 47, 48, 49); StepperMultistepper13(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(); aantal int = 0; int init_set_speed = 10; void setup() Serial1.begin(115200); Serieel.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 SNELHEID = 200; lege lus() {
/////////////////////////////////////
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); aantal = 1; } } /////////////////////// if (millis() - set_timer2 1000) { if (millis() - on_timer < 2500) { stepper7.setSte ㄴp(SNELHEID); stepper8.setStep (SNELHEID); stepper9.setStep (SNELHEID); stepper12.setStep (SNELHEID); } else if (millis() - on_timer < 4000) { stepper7.setStep(-SPEED); stepper8.setStep(-SNELHEID); stepper9.setStep(-SNELHEID); stepper12.setStep(-SNELHEID); } else if (millis() - on_timer < 5500) { stepper7.setStep (SPEED); stepper8.setStep (SNELHEID); stepper9.setStep (SNELHEID); stepper12.setStep (SNELHEID); } else if (millis() - on_timer < 7000) { stepper7.setStep(-SPEED); stepper8.setStep(-SNELHEID); stepper9.setStep(-SNELHEID); stepper12.setStep(-SNELHEID); } 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(-SNELHEID); stepper6.setStep (SNELHEID); stepper7.setStep (SNELHEID); } else if (millis() - on_timer < 4000) { stepper2.setStep(-SPEED); stepper5.setStep (SNELHEID); stepper6.setStep(-SNELHEID); stepper7.setStep(-SNELHEID); } else if (millis() - on_timer < 5500) { stepper2.setStep (SPEED); stepper5.setStep(-SNELHEID); stepper6.setStep (SNELHEID); stepper7.setStep (SNELHEID); } else if (millis() - on_timer < 7000) { stepper2.setStep(-SPEED); stepper5.setStep (SNELHEID); stepper6.setStep(-SNELHEID); stepper7.setStep(-SNELHEID); } 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); } /////////////////////////////////////////////// indien (millis() - set_timer3 2000) { if (millis() - on_timer < 3500) { stepper.setStep (SPEED); stepper2.setStep (SNELHEID); stepper3.setStep (SNELHEID); stepper4.setStep (SNELHEID); stepper5.setStep (SNELHEID); stepper6.setStep (SNELHEID); stepper10.setStep (SNELHEID); stepper11.setStep (SNELHEID); } else if (millis() - on_timer < 5000) { stepper.setStep(-SPEED); stepper2.setStep(-SNELHEID); stepper3.setStep(-SNELHEID); stepper4.setStep(-SNELHEID); stepper5.setStep(-SNELHEID); stepper6.setStep(-SNELHEID); stepper10.setStep(-SNELHEID); stepper11.setStep(-SNELHEID); } else if (millis() - on_timer <6500) { stepper.setStep(SPEED); stepper2.setStep (SNELHEID); stepper3.setStep (SNELHEID); stepper4.setStep (SNELHEID); stepper5.setStep (SNELHEID); stepper6.setStep (SNELHEID); stepper10.setStep (SNELHEID); stepper11.setStep (SNELHEID); } else if (millis() - on_timer < 8000) { stepper.setStep(-SPEED); stepper2.setStep(-SNELHEID); stepper3.setStep(-SNELHEID); stepper4.setStep(-SNELHEID); stepper5.setStep(-SNELHEID); stepper6.setStep(-SNELHEID); stepper10.setStep(-SNELHEID); stepper11.setStep(-SNELHEID); } 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 (SNELHEID); stepper8.setStep (SNELHEID); stepper9.setStep (SNELHEID); stepper10.setStep (SNELHEID); stepper11.setStep (SNELHEID); stepper12.setStep (SNELHEID); stepper13.setStep (SNELHEID); } else if (millis() - on_timer < 5000) { stepper3.setStep(-SPEED); stepper4.setStep(-SNELHEID); stepper8.setStep(-SNELHEID); stepper9.setStep(-SNELHEID); stepper10.setStep(-SNELHEID); stepper11.setStep(-SNELHEID); stepper12.setStep(-SNELHEID); stepper13.setStep(-SPEED); } else if (millis() - on_timer <6500) { stepper3.setStep(SPEED); stepper4.setStep (SNELHEID); stepper8.setStep (SNELHEID); stepper9.setStep (SNELHEID); stepper10.setStep (SNELHEID); stepper11.setStep (SNELHEID); stepper12.setStep (SNELHEID); stepper13.setStep (SNELHEID); } else if (millis() - on_timer < 8000) { stepper3.setStep(-SPEED); stepper4.setStep(-SNELHEID); stepper8.setStep(-SNELHEID); stepper9.setStep(-SNELHEID); stepper10.setStep(-SNELHEID); stepper11.setStep(-SNELHEID); stepper12.setStep(-SNELHEID); 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(); }
tweede codering
Stap 6: Voor het coderen…
U moet een nieuwe bibliotheek met betrekking tot stappenmotoren toevoegen.
Dus je gaat naar deze site en downloadt een nieuwe bibliotheek.
blog.danggun.net/2092
Stap 7: Seriële communicatie
Je moet twee arduino mega-telecommunicaties maken.
if (start_count == 0) {
int Data = Serial1.read(); Serieel.println(Data); if (Data == 0x01) { start_count = 1; }
Allereerst hebben we deze codering nodig op Maine Arduino Mega.
if (count == 0) { if (millis() - set_timer1 > 1000) { Serial1.write (0x01); aantal = 1; }
Arduino Mega, die seriële communicatie ontvangt, heeft deze codering nodig.
De eerste codering wordt geplaatst waar de tweede aduino moet bewegen.
Aanbevolen:
Halloween-pompoen met een bewegend animatronic-oog - Deze pompoen kan zijn ogen rollen! 10 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Halloween-pompoen met een bewegend animatronic-oog | Deze pompoen kan zijn oog rollen!: In deze Instructable leer je hoe je een Halloween-pompoen maakt die iedereen bang maakt als zijn oog beweegt. Stel de triggerafstand van de ultrasone sensor in op de juiste waarde (stap 9) en je pompoen zal iedereen die het aandurft om snoep te nemen versteenen
Een slimme spiegel bouwen met Raspberry Pi 4: 10 stappen
Hoe een slimme spiegel te bouwen met Raspberry Pi 4: In deze gids zullen we zien hoe we een slimme spiegel kunnen bouwen met behulp van gerecyclede onderdelen zoals een fotolijst, een oude monitor en een fotoglas. Voor de elektronische componenten die ik hier heb gekocht www.lcsc .com
Hoe maak je een doe-het-zelf slimme spiegel: 12 stappen (met afbeeldingen)
Hoe maak je een doe-het-zelf slimme spiegel: een "slimme spiegel" is een tweerichtingsspiegel met een display erachter dat meestal wordt gebruikt om nuttige informatie weer te geven, zoals de tijd en datum, het weer, je kalender en allerlei andere dingen! Mensen gebruiken ze voor allerlei doeleinden
Circuit Leer NANO: één PCB. Makkelijk te leren. Oneindige mogelijkheden. 12 stappen (met afbeeldingen)
Circuit Leer NANO: één PCB. Makkelijk te leren. Oneindige mogelijkheden.: Beginnen in de wereld van elektronica en robotica kan in het begin behoorlijk ontmoedigend zijn. Er zijn in het begin veel dingen om te leren (circuitontwerp, solderen, programmeren, de juiste elektronische componenten kiezen, enz.)
Oneindige grap: 7 stappen (met afbeeldingen)
Infinite Jest: een roterende machine die wordt bestuurd door een robothandschoen. Oneindig plezier