Table des matières:

Grille mobile avec miroir infini : 7 étapes
Grille mobile avec miroir infini : 7 étapes

Vidéo: Grille mobile avec miroir infini : 7 étapes

Vidéo: Grille mobile avec miroir infini : 7 étapes
Vidéo: Elle Était Coincée Donc Ce Policier L'aide 2024, Juillet
Anonim
Image
Image

ces vidéos font des vidéos et des vidéos animées.

Nous voulions montrer l'espace oscillant à travers des grilles mobiles et le miroir Infinity pour montrer plus efficacement la sensation d'espace.

Notre travail se compose de deux plaques acryliques, l'avant et les plaques arrière, qui montrent aux gens comment ils s'agitent directement, et les plaques arrière ont des moteurs à 25 pas qui produisent réellement un mouvement.

L'œuvre se compose d'un panneau avant qui montrera les lueurs de l'espace, d'un bâton en bois qui exécute le mouvement du milieu, d'un guide pour les tiges et d'un panneau arrière qui crée un mouvement grâce à 25 moteurs pas à pas.

Les 25 pics du réseau connecté aux 25 moteurs pas à pas produisent des motifs différents selon les valeurs de codage définies. De plus, la société souhaitait maximiser l'espace en combinant de l'acrylique transparent avec un film demi-miroir avant, un rétroviseur et un miroir Infinity éclairé en noir. Divers modèles d'animation sont créés à partir de vagues et de ternes qui sont basés sur les vagues de l'eau.

Fournitures

Fournitures

1. UV LED 12V 840cm

2. Caoutchouc blanc 12mm 750cm

3. Arduino méga 2560 x2

4. Pilote de moteur x25

5. Moteur pas à pas x25

6. Câble bipolaire pour moteur pas à pas x25

7. cylindre en bois x25

8.pvc (9mm) x25

9. Printemps x 25

10. acrylique 700mm * 700mm

11. Demi film miroir 1524mm * 1M

12. Ligne de pêche

13. Puissance 12V 12.5A, 12V 75A

14. poulie de distribution (impression 3d) x 25

Étape 1: Planifiez un grand cadre

Planifiez un grand cadre
Planifiez un grand cadre

Lorsque nous commençons, nous devons planifier et dessiner un grand cadre. nous avons donc préparé un fichier pdf pour le cadre global en acrylique et le fichier stl de la poulie de distribution (ce que nous les avons mis devant le moteur pas à pas pour le fil de vent qui peut tirer une tige en bois moyen).

avec le cadre global en acrylique et la poulie de synchronisation, nous devons d'abord créer un fichier stl et une impression 3d.

Étape 2: fabrication du matériel

Faire du matériel
Faire du matériel
Faire du matériel
Faire du matériel
Faire du matériel
Faire du matériel

boîte1

1. Placez le noir acrylique 2T (No. 1) sur le sol et fixez le côté acrylique noir 5T (No. 2) sur le dessus. Ajoutez une grille noire en acrylique 5T (n ° 3) et fixez-la à l'aide d'un liant acrylique.

boîte2

2. Saupoudrer d'eau sur une plaque acrylique transparente et recouvrir d'un film semi-miroir. Un demi-miroir fait rouler une carte pour l'empêcher de bouillonner. Fixez le côté (2) et le transparent acrylique (1). Ne fixez pas la saillie acrylique combinée et les miroirs acryliques (n° 1) latéralement. Fixez-le temporairement avec du ruban adhésif (pour réparer la ligne de pêche ou rénover l'intérieur).

Étape 3: Créer une grille

Faire une grille
Faire une grille
Faire une grille
Faire une grille
Faire une grille
Faire une grille

1. Une colonne en bois mesure 12 mm. Percez un trou au bout pour permettre à la ligne de pêche d'entrer.

2. Fixez les plaques acryliques de l'autre côté d'une colonne en bois perforé à l'aide d'un adhésif.

3. Placez un élastique à l'arrière d'un pilier en bois et placez-y un ressort.

4. forme globale

Étape 4:

Image
Image
Image
Image
Image
Image

1. Numéro de connexion à broches Arduino Mega 2560

2. diviser l'électricité en deux parties

3. Moteur pas à pas et circuit de commande de moteur

4. Deux méga2560 Arduino sont connectés en croisant TX et RX pour la communication série.

Étape 5: Coder

#comprendre

StepperMulti stepper (200, 2, 3, 4, 5); // numérotation du moteur pas à 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(); nombre entier = 0; int init_set_speed

void setup()

Serial1.begin(115200); //communication série 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); } entier VITESSE = 200; // boucle vide de vitesse du moteur() { //////////////////////////////////// if (millis() - set_timer1 < 6000) { // Le moteur pas à pas 13 se déplace entre 1500 et 6000 secondes.< if (millis() - on_timer < 1500) { stepper13.setStep(SPEED); } else if (millis() - on_timer < 3000) { stepper13.setStep(-SPEED); //(-SPEED) signifie rotation inverse } else if (millis() - on_timer < 4500) { stepper13.setStep(SPEED); } else if (millis() - on_timer 1000) { Serial1.write(0x01); compte = 1; } } /////////////////////// if (millis() - set_timer2 1000) { if (millis() - on_timer < 2500) { stepper7.setStep (LA VITESSE); 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 (VITESSE); 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 (VITESSE); 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(SPEED); stepper3.setStep(SPEED); stepper4.setStep(SPEED); stepper5.setStep (VITESSE); 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(SPEED); stepper3.setStep(SPEED); stepper4.setStep(SPEED); stepper5.setStep (VITESSE); 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(SPEED); stepper8.setStep(SPEED); stepper9.setStep(SPEED); 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(SPEED); stepper8.setStep(SPEED); stepper9.setStep(SPEED); 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(); }

premier codage

et..

#comprendre

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(); nombre entier = 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); } entier VITESSE = 200; boucle vide() {

/////////////////////////////////////

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); compte = 1; } } /////////////////////// if (millis() - set_timer2 1000) { if (millis() - on_timer < 2500) { stepper7.setSte p(VITESSE); 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 (VITESSE); 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 (VITESSE); 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(SPEED); stepper3.setStep(SPEED); stepper4.setStep(SPEED); stepper5.setStep (VITESSE); 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(SPEED); stepper3.setStep(SPEED); stepper4.setStep(SPEED); stepper5.setStep (VITESSE); 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(SPEED); stepper8.setStep(SPEED); stepper9.setStep(SPEED); 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(SPEED); stepper8.setStep(SPEED); stepper9.setStep(SPEED); 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(); }

deuxième codage

Étape 6: Avant de coder…

Avant de coder…
Avant de coder…

Vous devez ajouter une nouvelle bibliothèque liée aux moteurs pas à pas.

Alors vous allez sur ce site et téléchargez une nouvelle bibliothèque.

blog.danggun.net/2092

Étape 7: Communication série

Vous devez faire deux méga-télécommunications arduino.

if (start_count == 0) {

int Données = Serial1.read(); Serial.println(Données); if (Données == 0x01) { start_count = 1; }

Tout d'abord, nous avons besoin de ce codage sur Maine Arduino Mega.

if (count == 0) { if (millis() - set_timer1 > 1000) { Serial1.write(0x01); compte = 1; }

Arduino Mega, qui reçoit les communications série, a besoin de ce codage.

Le premier codage est placé là où le deuxième aduino doit se déplacer.

Conseillé: