Taula de continguts:
- Subministraments
- Pas 1: planifiqueu un gran marc
- Pas 2: fabricació de maquinari
- Pas 3: Fer graella
- Pas 4:
- Pas 5: Codi
- Pas 6: Abans de codificar…
- Pas 7: Comunicació en sèrie
Vídeo: Reixeta mòbil amb mirall infinit: 7 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:12
Aquests vídeos estan fent vídeos i movent-los.
Volíem mostrar l’espai basculant a través de les quadrícules en moviment i el Mirall infinit per mostrar el sentit de l’espai amb més eficàcia.
El nostre treball consisteix en dues plaques acríliques, la frontal i les plaques posteriors, que mostren a les persones la forma en què s’agiten directament, i les plaques posteriors tenen motors de 25 passos que realment produeixen moviment.
L’obra consisteix en un panell frontal que mostrarà els reflexos de l’espai, un pal de fusta que executa el moviment central, una guia per a les barres i un tauler que crea moviment a través de motors de 25 esglaons.
Els 25 pics de la xarxa connectats als motors de 25 passos produeixen diferents patrons segons els valors de codificació establerts. A més, l’empresa volia maximitzar l’espai combinant acrílic transparent amb pel·lícula de mig retrovisor frontal, retrovisor i mirall Infinity il·luminat en negre. Diversos patrons d’animació es fan a partir d’ones i matolls que es fan a partir de les ones de l’aigua.
Subministraments
Subministraments
1. LED UV 12V 840cm
2. Cautxú blanc 12 mm 750cm
3. Arduino mega 2560 x2
4. Controlador de motor x25
5. Motor de pas x25
6. Cable bipolar per motor pas a pas x25
7. Cilindre de fusta x25
8 pvc (9 mm) x25
9. Primavera x 25
10. acrílic 700 mm * 700 mm
11. Mitja pel·lícula de mirall 1524mm * 1M
12. Línia de pesca
13. Potència 12V 12.5A, 12V 75A
14. politja de distribució (impressió 3D) x 25
Pas 1: planifiqueu un gran marc
Quan comencem, hem de planificar i dibuixar un gran marc. per tant, vam preparar un fitxer pdf per al marc general d’acrílic i el fitxer stl de la politja de distribució (el que els posem davant del motor pas per fil de vent que pugui treure una vareta de fusta mitjana).
amb el marc general d’acrílic i la politja de distribució, hem de fer primer el fitxer STL i la impressió 3D.
Pas 2: fabricació de maquinari
quadre1
1. Col·loqueu 2T negre acrílic (núm. 1) al terra i fixeu el costat negre acrílic 5T (núm. 2) a la part superior. Afegiu una reixeta negra acrílica de 5T (núm. 3) i enganxeu-la mitjançant un acrílic.
caixa2
2. Escampeu aigua sobre una placa transparent d’acrílic i la part superior amb una pel·lícula semi-mirall. Un mig mirall fa rodar una carta per evitar que bulli. Col·loqueu el lateral (2) i la transparència acrílica (1). No assegureu lateralment la protuberància acrílica i els miralls acrílics (núm. 1). Fixeu-lo temporalment amb cinta adhesiva (per reparar la línia de pesca o renovar l'interior).
Pas 3: Fer graella
1. Una columna de fusta té una mida de 12 mm. Feu un forat al final per permetre l’entrada de la línia de pesca.
2. Col·loqueu plaques acríliques a l’altre costat d’una columna de fusta perforada amb adhesiu.
3. Col·loqueu una goma per la part posterior d’un pilar de fusta i poseu-hi una molla.
4. Forma general
Pas 4:
1. Número de connexió Pin Mega 2560 d'Arduino
2. divideix l’electricitat en dues parts
3. Motor de motor i circuit de controlador de motor
4. Dues mega2560 Arduino es connecten creuant TX i RX per a la comunicació en sèrie.
Pas 5: Codi
#incloure
StepperMulti stepper (200, 2, 3, 4, 5); // numeració del motor pas a pas 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
configuració nul·la ()
Serial1.begin (115200); // comunicació serial 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; // bucle de buit de velocitat del motor () {/////////////////////////////////////// if (millis () - set_timer1 <6000) {// Motor pas a pas 13 es mou entre 1500 i 6000 segons. <if (millis () - on_timer <1500) {stepper13.setStep (SPEED); } else if (millis () - on_timer <3000) {stepper13.setStep (-SPEED); // (- SPEED) significa rotació inversa} else if (millis () - on_timer <4500) {stepper13.setStep (SPEED); } else if (millis () - on_timer 1000) {Serial1.write (0x01); comptar = 1; }} //////////////////////// if (millis () - set_timer2 1000) {if (millis () - on_timer <2500) {stepper7.setStep (VELOCITAT); stepper8.setStep (SPEED); stepper9.setStep (VELOCITAT); 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 (VELOCITAT); 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); } /////////////////////////////////////////////// si (millis () - set_timer3 2000) {if (millis () - on_timer <3500) {stepper.setStep (SPEED); stepper2.setStep (VELOCITAT); stepper3.setStep (VELOCITAT); stepper4.setStep (VELOCITAT); 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 (VELOCITAT); stepper3.setStep (VELOCITAT); stepper4.setStep (VELOCITAT); 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 (VELOCITAT); stepper8.setStep (SPEED); stepper9.setStep (VELOCITAT); 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 (VELOCITAT); stepper8.setStep (SPEED); stepper9.setStep (VELOCITAT); 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 (); }
codificació frist
i..
#incloure
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; bucle buit () {
/////////////////////////////////////
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); comptar = 1; }} //////////////////////// if (millis () - set_timer2 1000) {if (millis () - on_timer <2500) {stepper7.setSte ㄴ p (VELOCITAT); stepper8.setStep (SPEED); stepper9.setStep (VELOCITAT); 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 (VELOCITAT); 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); } /////////////////////////////////////////////// si (millis () - set_timer3 2000) {if (millis () - on_timer <3500) {stepper.setStep (SPEED); stepper2.setStep (VELOCITAT); stepper3.setStep (VELOCITAT); stepper4.setStep (VELOCITAT); 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 (VELOCITAT); stepper3.setStep (VELOCITAT); stepper4.setStep (VELOCITAT); 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 (VELOCITAT); stepper8.setStep (SPEED); stepper9.setStep (VELOCITAT); 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 (VELOCITAT); stepper8.setStep (SPEED); stepper9.setStep (VELOCITAT); 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 (); }
segona codificació
Pas 6: Abans de codificar…
Heu d'afegir una nova biblioteca relacionada amb els motors de pas.
Així que aneu a aquest lloc i descarregueu una nova biblioteca.
blog.danggun.net/2092
Pas 7: Comunicació en sèrie
Heu de fer dues mega-telecomunicacions arduino.
if (start_count == 0) {
int Dades = Serial1.read (); Serial.println (dades); if (Dades == 0x01) {start_count = 1; }
Primer de tot, necessitem aquesta codificació a Maine Arduino Mega.
if (count == 0) {if (millis () - set_timer1> 1000) {Serial1.write (0x01); comptar = 1; }
Arduino Mega, que rep comunicacions en sèrie, necessita aquesta codificació.
La primera codificació es col·loca allà on s’ha de moure el segon aduino.
Recomanat:
Feu un rellotge de mirall infinit: 15 passos (amb imatges)
Feu un rellotge de mirall infinit: en un projecte anterior vaig construir un mirall infinit, on el meu objectiu final era convertir-lo en un rellotge. (Feu un mirall infinit de colors) No ho vaig perseguir després de construir-lo perquè, tot i que semblava genial, hi havia algunes coses
Mirall infinit amb sensor LCD i IR: 5 passos
Mirall infinit amb sensor LCD i IR: aquest projecte us mostrarà com podeu fer un mirall infinit. El concepte bàsic és que els LED que es troben al mirall creen llum que rebota des del mirall posterior fins al mirall frontal, on escapa una mica de llum perquè puguem veure-ho a l'interior i així
Feu un mirall infinit d'escriptori a dues cares: 14 passos (amb imatges)
Feu un mirall d’infinit d’escriptori a dues cares: la majoria dels miralls d’infinit que he vist són d’una cara, però en volia crear un de diferent. Aquest serà de dues cares i dissenyat de manera que es pugui mostrar en un escriptori o un prestatge. És un projecte molt fàcil de fer
Com fer el cor de mirall infinit amb leds Arduino i RGB: 8 passos (amb imatges)
Com fer el cor de mirall infinit amb leds Arduino i RGB: un cop a una festa, jo i la dona vam veure un mirall infinit, i la mirada va quedar fascinada i va continuar dient que en vull. Un bon marit sempre escolta i recorda, així que vaig decidir construir-ne un com a regal de Sant Valentí
Mirall hexagonal infinit amb llums LED i cable làser: 5 passos (amb imatges)
Mirall Hexagon Infinity amb llums LED i cable làser: si voleu crear una peça d’il·luminació única, aquest és un projecte molt divertit. A causa de la complexitat, alguns dels passos realment requereixen certa precisió, però hi ha algunes direccions diferents que podeu seguir, segons l’aspecte general