Sommario:
- Forniture
- Passaggio 1: pianificare un grande framework
- Passaggio 2: creazione dell'hardware
- Passaggio 3: creazione della griglia
- Passaggio 4:
- Passaggio 5: codice
- Passaggio 6: prima di codificare…
- Passaggio 7: comunicazione seriale
Video: Griglia mobile con specchio infinito: 7 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:00
quei video stanno facendo video e stanno muovendo video.
Volevamo mostrare lo spazio ondeggiante attraverso griglie mobili e l'Infinity Mirror per mostrare il senso dello spazio in modo più efficace.
Il nostro lavoro consiste in due piastre acriliche, la parte anteriore e le piastre posteriori, che mostrano alle persone il modo in cui si stanno direttamente agitando, e le piastre posteriori hanno 25 motori passo-passo che effettivamente producono movimento.
L'opera è composta da un pannello frontale che mostrerà i barlumi dello spazio, un bastone di legno che esegue il movimento centrale, una guida per le aste e un tabellone che crea movimento attraverso 25 motori passo-passo.
I 25 picchi della rete connessa ai 25 motori passo passo producono pattern differenti a seconda dei valori di codifica impostati. Inoltre, l'azienda voleva massimizzare lo spazio combinando l'acrilico trasparente con la pellicola per semispecchi anteriore, lo specchietto retrovisore e lo specchio Infinity con illuminazione nera. Vari modelli di animazione sono realizzati in base a onde e drappeggi realizzati in base alle onde dell'acqua.
Forniture
Forniture
1. LED UV 12V 840cm
2. Gomma bianca 12mm 750cm
3. Arduino mega 2560 x2
4. Driver motore x25
5. Motore passo-passo x25
6. Cavo bipolare per motore passo-passo x25
7. Cilindro in legno x25
8.pvc (9mm) x25
9. Primavera x 25
10.acrilico 700mm*700mm
11. Pellicola a metà specchio 1524 mm * 1 M
12. Lenza da pesca
13. Power 12V 12.5A, 12V 75A
14. puleggia dentata (stampa 3d) x 25
Passaggio 1: pianificare un grande framework
Quando iniziamo, dobbiamo pianificare e disegnare una grande struttura. quindi, abbiamo preparato un file pdf per il telaio generale in acrilico e il file stl della puleggia dentata (cosa li abbiamo messi davanti al motore passo-passo per il filo del vento che può tirare un'asta di legno centrale).
con il telaio generale in acrilico e la puleggia sincronizzata, dobbiamo prima creare il file stl e la stampa 3D.
Passaggio 2: creazione dell'hardware
scatola1
1. Posizionare il nero acrilico 2T (n. 1) sul pavimento e attaccare il lato nero acrilico 5T (n. 2) sulla parte superiore. Aggiungi la griglia nera acrilica 5T (n. 3) e fissala usando un adesivo acrilico.
scatola2
2. Spruzzare acqua sulla lastra acrilica trasparente e ricoprire con pellicola semi-specchio. Un mezzo specchio fa rotolare una carta per non farla gorgogliare. Fissare il lato (2) e la trasparenza acrilica (1). Non fissare lateralmente la sporgenza acrilica combinata e gli specchi acrilici (n. 1). Fissalo temporaneamente con del nastro adesivo (per riparare la lenza o rinnovare l'interno).
Passaggio 3: creazione della griglia
1. Una colonna di legno ha una dimensione di 12 mm. Praticare un foro all'estremità per consentire l'ingresso della lenza.
2. Attacca le lastre acriliche all'altro lato di una colonna di legno perforata usando l'adesivo.
3. Metti un elastico attraverso il retro di un pilastro di legno e mettici dentro una molla.
4. Forma complessiva
Passaggio 4:
1. Numero di connessione del pin Arduino Mega 2560
2. dividere l'elettricità in due parti
3. Motore passo-passo e circuito di pilotaggio del motore
4. Due Arduino mega2560 sono collegati incrociando TX e RX per la comunicazione seriale.
Passaggio 5: codice
#includere
StepperMulti stepper(200, 2, 3, 4, 5); // numerazione del motore passo-passo 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 conteggio = 0; int init_set_speed
configurazione nulla()
Serial1.begin(115200); //comunicazione seriale 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 VELOCITÀ = 200; // loop void della velocità del motore() { ///////////////////////////////////// if (millis() - set_timer1 < 6000) { // Il motore passo-passo 13 si muove tra 1500 e 6000 secondi.< if (millis() - on_timer < 1500) { stepper13.setStep(SPEED); } else if (millis() - on_timer < 3000) { stepper13.setStep(-SPEED); //(-SPEED) significa rotazione inversa } else if (millis() - on_timer < 4500) { stepper13.setStep(SPEED); } else if (millis() - on_timer 1000) { Serial1.write(0x01); conteggio = 1; } } //////////////////////// if (millis() - set_timer2 1000) { if (millis() - on_timer < 2500) { stepper7.setStep (VELOCITÀ); 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); } /////////////////////////////////////////////// Se (millis() - set_timer3 2000) { if (millis() - on_timer < 3500) { stepper.setStep(SPEED); stepper2.setStep(VELOCITÀ); stepper3.setStep(SPEED); stepper4.setStep(SPEED); stepper5.setStep(SPEED); stepper6.setStep(SPEED); stepper10.setStep(VELOCITÀ); 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(VELOCITÀ); stepper3.setStep(SPEED); stepper4.setStep(SPEED); stepper5.setStep(SPEED); stepper6.setStep(SPEED); stepper10.setStep(VELOCITÀ); 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(VELOCITÀ); 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(VELOCITÀ); 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(); }
prima codifica
e..
#includere
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 conteggio = 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 VELOCITÀ = 200; ciclo vuoto() {
/////////////////////////////////////
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); conteggio = 1; } } //////////////////////// if (millis() - set_timer2 1000) { if (millis() - on_timer < 2500) { stepper7.setSte p(VELOCITÀ); 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); } /////////////////////////////////////////////// Se (millis() - set_timer3 2000) { if (millis() - on_timer < 3500) { stepper.setStep(SPEED); stepper2.setStep(VELOCITÀ); stepper3.setStep(SPEED); stepper4.setStep(SPEED); stepper5.setStep(SPEED); stepper6.setStep(SPEED); stepper10.setStep(VELOCITÀ); 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(VELOCITÀ); stepper3.setStep(SPEED); stepper4.setStep(SPEED); stepper5.setStep(SPEED); stepper6.setStep(SPEED); stepper10.setStep(VELOCITÀ); 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(VELOCITÀ); 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(VELOCITÀ); 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(); }
seconda codifica
Passaggio 6: prima di codificare…
Dovresti aggiungere una nuova libreria relativa ai motori passo-passo.
Quindi vai in questo sito e scarica una nuova libreria.
blog.danggun.net/2092
Passaggio 7: comunicazione seriale
Devi fare due mega-telecomunicazioni arduino.
if (start_count == 0) {
int Dati = Serial1.read(); Serial.println(Dati); if (Dati == 0x01) { start_count = 1; }
Prima di tutto, abbiamo bisogno di questa codifica su Maine Arduino Mega.
if (count == 0) { if (millis() - set_timer1 > 1000) { Serial1.write(0x01); conteggio = 1; }
Arduino Mega, che riceve comunicazioni seriali, necessita di questa codifica.
La prima codifica è posizionata dove deve muoversi il secondo aduino.
Consigliato:
Crea un orologio a specchio infinito: 15 passaggi (con immagini)
Crea un orologio a specchio infinito: in un progetto precedente ho costruito uno specchio a infinito, dove il mio obiettivo finale era trasformarlo in un orologio. (Crea uno specchio colorato dell'infinito) Non l'ho perseguito dopo averlo costruito perché, anche se sembrava bello, c'erano alcune cose con th
Specchio infinito con sensore LCD e IR: 5 passaggi
Specchio infinito con sensore LCD e IR: questo progetto ti mostrerà come realizzare uno specchio infinito. Il concetto di base è che i LED che si trovano sullo specchio creano luce che rimbalza dallo specchio posteriore a quello anteriore da cui fuoriesce un po' di luce in modo che possiamo vedere all'interno e quindi
Orologio a specchio infinito con potenziometri: 3 passaggi
Orologio a specchio infinito con potenziometri: mi sono imbattuto in uno specchio infinito e l'ho trovato davvero fantastico. Questo mi ha ispirato a realizzare uno specchio infinito, ma ne avevo bisogno per avere uno scopo. Quindi, ho deciso di creare un orologio a specchio infinito funzionante. Questo è uno specchio infinito che ti permette di
Crea uno specchio infinito colorato: 12 passaggi (con immagini)
Crea uno specchio infinito colorato: nel mio ultimo tutorial, ho realizzato uno specchio infinito con luci bianche. Questa volta ne realizzerò uno con luci colorate, utilizzando una striscia LED con LED indirizzabili. Seguirò molti degli stessi passaggi da quell'ultimo istruibile, quindi non sono g
Specchio infinito all'interno di un 2x4: 9 passaggi (con immagini)
Specchio infinito all'interno di un 2x4: in questo trucco, mostrerò come creare uno specchio infinito all'interno di un 2x4. In origine, è stato concepito come un sottobicchiere e rileva quando si posiziona una bevanda o una bottiglia d'acqua su di esso tramite un microinterruttore all'interno. Puoi vedere tutta la storia di questo edificio