תוכן עניינים:
2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-23 14:46
הסרטונים האלה יוצרים וידיאו ומרגשים.
רצינו להציג את החלל המתנדנד באמצעות רשתות נעות והמראה אינסוף כדי להראות את תחושת המרחב ביעילות רבה יותר.
העבודה שלנו מורכבת משתי לוחות אקריליק, החזית והפלטות האחוריות, המראות לאנשים את הדרך שבה הם מתסיסים באופן ישיר, ולחלקים האחוריים יש 25 מנועי צעד המייצרים למעשה תנועה.
העבודה מורכבת מלוח קדמי שיציג את נצנוצי החלל, מקל עץ המבצע את התנועה האמצעית, מדריך למוטות ולוח אחורי היוצר תנועה באמצעות מנועי 25 צעדים.
25 פסגות הרשת המחוברות למנועי 25 השלבים מייצרות דפוסים שונים בהתאם לערכי הקידוד שנקבעו. בנוסף, החברה רצתה למקסם את החלל על ידי שילוב אקריליק שקוף עם סרט חצי מראה קדמי, מראה אחורית ומראה אינפיניטי מוארת בשחור. דפוסי אנימציה שונים נעשים על סמך גלים ותיבות שנעשים על בסיס גלי המים.
אספקה
אספקה
1. UV LED 12V 840 ס מ
2. גומי לבן 12 מ"מ 750 ס"מ
3. Arduino mega 2560 x2
4. נהג מנוע x25
5. מנוע צעד x25
6. כבל דו קוטבי עבור מנוע צעד x25
7. גליל עץ x25
8. PVC (9 מ מ) x25
9. אביב x 25
10. אקריליק 700 מ"מ*700 מ"מ
11. סרט חצי מראה 1524 מ מ * 1 מ '
12. חוט דייג
13. כוח 12V 12.5A, 12V 75A
14. גלגלת תזמון (הדפס תלת מימד) x 25
שלב 1: תכנן מסגרת גדולה
כאשר אנו מתחילים, עלינו לתכנן ולצייר מסגרת גדולה. אז הכנו קובץ pdf למסגרת כוללת אקרילית וקובץ stl גלגלת תזמון (מה שמנו לפני מנוע צעד עבור חוט רוח שיכול למשוך מוט באמצע עץ).
עם המסגרת הכוללת של אקריליק וגלגלת התזמון, עלינו להכין קובץ stl תחילה והדפסה תלת מימדית.
שלב 2: ייצור חומרה
תיבה 1
1. הניחו 2T אקריליק שחור (מס '1) על הרצפה והצמידו צד שחור אקרילי 5T (מס' 2) מלמעלה. הוסף רשת שחורה אקרילית 5T (מס '3) והצמיד אותה באמצעות חיבור אקרילי.
תיבה 2
2. מפזרים מים על צלחת שקופה אקרילית ומעליהם סרט חצי מראה. חצי מראה מגלגלת כרטיס כדי שלא יבעבע. חבר את הצד (2) ואת השקיפות האקרילית (1). אין לאבטח את בליטת האקריליק המשולבת והמראות האקריליות (מס '1) לרוחב. לתקן אותו באופן זמני עם סרט (לתיקון מחבל הדייג או לשיפוץ פנים).
שלב 3: הכנת רשת
1. גודל עץ בגודל 12 מ מ. לקדוח חור בסוף כדי לאפשר לחבל הדייג להיכנס.
2. צרף צלחות אקריליק לצד השני של עמוד עץ מחורר באמצעות דבק.
3. שים רצועת גומי בחלק האחורי של עמוד עץ ושם בה קפיץ.
4. צורה כוללת
שלב 4:
1. מספר חיבור Arduino Mega 2560 Pin
2. חלקו את החשמל לשני חלקים
3. מנוע צעד ומעגל נהג מנוע
4. שני Arduino mega2560s מחוברים באמצעות חציית TX ו- RX לתקשורת טורית.
שלב 5: קוד
#לִכלוֹל
Stepper Multi stepper (200, 2, 3, 4, 5); // מספור מנוע צעד StepperMulti stepper2 (200, 6, 7, 8, 9); Stepper Multi stepper3 (200, 10, 11, 12, 13); Stepper Multi stepper4 (200, A0, A1, A2, A3); Stepper Multi stepper5 (200, A4, A5, A6, A7); Stepper Multi stepper6 (200, 22, 23, 24, 25); Stepper Multi stepper7 (200, 26, 27, 28, 29); Stepper Multi stepper8 (200, 30, 31, 32, 33); Stepper Multi stepper9 (200, 34, 35, 36, 37); Stepper Multi stepper10 (200, 38, 39, 40, 41); Stepper Multi stepper11 (200, 42, 43, 44, 45); Stepper Multi stepper12 (200, 46, 47, 48, 49); Stepper Multi stepper13 (200, 50, 51, 52, 53); uint32_t on_timer = millis (); uint32_t set_timer1 = מיליס (); uint32_t set_timer2 = מיליס (); uint32_t set_timer3 = מיליס (); uint32_t set_timer4 = מיליס (); uint32_t set_timer5 = מיליס (); uint32_t set_timer6 = מיליס (); uint32_t set_timer7 = מיליס (); uint32_t set_timer8 = מיליס (); uint32_t set_timer9 = מיליס (); uint32_t set_timer10 = מיליס (); int count = 0; int init_set_speed
הגדרת חלל ()
סדרתי 1. התחל (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; // לולאת חלל מהירות המנוע () {//////////////////////////////////////) - set_timer1 <6000) {// מנוע צעד 13 נע בין 1500 ל 6000 שניות. <if (millis () - on_timer <1500) {stepper13.setStep (SPEED); } אחרת אם (millis () - on_timer <3000) {stepper13.setStep (-SPEED); // (- SPEED) פירושו סיבוב הפוך} אחרת אם (millis () - on_timer <4500) {stepper13.setStep (SPEED); } אחרת אם (millis () - on_timer 1000) {Serial1.write (0x01); ספירה = 1; }} //////////////////////////// if (millis () - set_timer2 1000) {if (millis () - on_timer <2500) {stepper7.setStep (מְהִירוּת); stepper8.setStep (SPEED); stepper9.setStep (SPEED); stepper12.setStep (SPEED); } אחרת אם (millis () - on_timer <4000) {stepper7.setStep (-SPEED); stepper8.setStep (-SPEED); stepper9.setStep (-SPEED); stepper12.setStep (-SPEED); } אחרת אם (millis () - on_timer <5500) {stepper7.setStep (SPEED); stepper8.setStep (SPEED); stepper9.setStep (SPEED); stepper12.setStep (SPEED); } אחרת אם (millis () - on_timer <7000) {stepper7.setStep (-SPEED); stepper8.setStep (-SPEED); stepper9.setStep (-SPEED); stepper12.setStep (-SPEED); } אחר {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); } אחרת אם (millis () - on_timer <4000) {stepper2.setStep (-SPEED); stepper5.setStep (SPEED); stepper6.setStep (-SPEED); stepper7.setStep (-SPEED); } אחרת אם (millis () - on_timer <5500) {stepper2.setStep (SPEED); stepper5.setStep (-SPEED); stepper6.setStep (SPEED); stepper7.setStep (SPEED); } אחרת אם (millis () - on_timer <7000) {stepper2.setStep (-SPEED); stepper5.setStep (SPEED); stepper6.setStep (-SPEED); stepper7.setStep (-SPEED); } אחר {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); } /////////////////////////////////////////////// אם (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); } אחרת אם (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); } אחרת אם (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); } אחרת אם (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); } אחרת אם (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); } אחרת אם (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); } אחרת אם (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); } אחר {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); } /////////////////////////// stepper2.moveStep (); stepper3.moveStep (); stepper4.moveStep (); stepper5.moveStep (); stepper6.moveStep (); stepper7.moveStep (); stepper8.moveStep (); stepper9.moveStep (); stepper10.moveStep (); stepper11.moveStep (); stepper12.moveStep (); stepper13.moveStep (); }
קידוד פריסט
ו..
#לִכלוֹל
Stepper Multi stepper (200, 2, 3, 4, 5); Stepper Multi stepper2 (200, 6, 7, 8, 9); Stepper Multi stepper3 (200, 10, 11, 12, 13); Stepper Multi stepper4 (200, A0, A1, A2, A3); Stepper Multi stepper5 (200, A4, A5, A6, A7); Stepper Multi stepper6 (200, 22, 23, 24, 25); Stepper Multi stepper7 (200, 26, 27, 28, 29); Stepper Multi stepper8 (200, 30, 31, 32, 33); Stepper Multi stepper9 (200, 34, 35, 36, 37); Stepper Multi stepper10 (200, 38, 39, 40, 41); Stepper Multi stepper11 (200, 42, 43, 44, 45); Stepper Multi stepper12 (200, 46, 47, 48, 49); Stepper Multi stepper13 (200, 50, 51, 52, 53); uint32_t on_timer = millis (); uint32_t set_timer1 = מיליס (); uint32_t set_timer2 = מיליס (); uint32_t set_timer3 = מיליס (); uint32_t set_timer4 = מיליס (); uint32_t set_timer5 = מיליס (); uint32_t set_timer6 = מיליס (); uint32_t set_timer7 = מיליס (); uint32_t set_timer8 = מיליס (); uint32_t set_timer9 = מיליס (); uint32_t set_timer10 = מיליס (); int count = 0; int init_set_speed = 10; הגדרת void () 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; לולאת חלל () {
/////////////////////////////////////
if (millis () - set_timer1 <6000) {if (millis () - on_timer <1500) {stepper13.setStep (SPEED); } אחרת אם (millis () - on_timer <3000) {stepper13.setStep (-SPEED); } אחרת אם (millis () - on_timer <4500) {stepper13.setStep (SPEED); } אחרת אם (millis () - on_timer 1000) {Serial1.write (0x01); ספירה = 1; }} //////////////////////////// if (millis () - set_timer2 1000) {if (millis () - on_timer <2500) {stepper7.setSte ㄴ p (SPEED); stepper8.setStep (SPEED); stepper9.setStep (SPEED); stepper12.setStep (SPEED); } אחרת אם (millis () - on_timer <4000) {stepper7.setStep (-SPEED); stepper8.setStep (-SPEED); stepper9.setStep (-SPEED); stepper12.setStep (-SPEED); } אחרת אם (millis () - on_timer <5500) {stepper7.setStep (SPEED); stepper8.setStep (SPEED); stepper9.setStep (SPEED); stepper12.setStep (SPEED); } אחרת אם (millis () - on_timer <7000) {stepper7.setStep (-SPEED); stepper8.setStep (-SPEED); stepper9.setStep (-SPEED); stepper12.setStep (-SPEED); } אחר {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); } אחרת אם (millis () - on_timer <4000) {stepper2.setStep (-SPEED); stepper5.setStep (SPEED); stepper6.setStep (-SPEED); stepper7.setStep (-SPEED); } אחרת אם (millis () - on_timer <5500) {stepper2.setStep (SPEED); stepper5.setStep (-SPEED); stepper6.setStep (SPEED); stepper7.setStep (SPEED); } אחרת אם (millis () - on_timer <7000) {stepper2.setStep (-SPEED); stepper5.setStep (SPEED); stepper6.setStep (-SPEED); stepper7.setStep (-SPEED); } אחר {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); } /////////////////////////////////////////////// אם (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); } אחרת אם (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); } אחרת אם (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); } אחרת אם (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); } אחרת אם (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); } אחרת אם (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); } אחרת אם (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); } אחר {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); } /////////////////////////// stepper2.moveStep (); stepper3.moveStep (); stepper4.moveStep (); stepper5.moveStep (); stepper6.moveStep (); stepper7.moveStep (); stepper8.moveStep (); stepper9.moveStep (); stepper10.moveStep (); stepper11.moveStep (); stepper12.moveStep (); stepper13.moveStep (); }
קידוד שני
שלב 6: לפני קידוד…
עליך להוסיף ספרייה חדשה הקשורה למנועי צעד.
אז תיכנס לאתר הזה ותוריד ספרייה חדשה.
blog.danggun.net/2092
שלב 7: תקשורת סדרתית
אתה צריך לייצר שתי מגה-תקשורת ארדואינו.
אם (start_count == 0) {
int Data = Serial1.read (); Serial.println (נתונים); אם (נתונים == 0x01) {start_count = 1; }
קודם כל, אנחנו צריכים את הקידוד הזה על מיין ארדואינו מגה.
if (count == 0) {if (millis () - set_timer1> 1000) {Serial1.write (0x01); ספירה = 1; }
Arduino Mega, שמקבל תקשורת סדרתית, זקוק לקידוד זה.
הקידוד הראשון ממוקם למקום בו האדווינו השני צריך לזוז.
מוּמלָץ:
מראה אינסוף קלה עם Arduino Gemma ו- NeoPixels: 8 שלבים (עם תמונות)
מראה אינסוף קלה עם Arduino Gemma ו- NeoPixels: הנה! הביטו לעומק במראה האינסוף הקסומה והפשוטה באופן מטעה! רצועה אחת של נוריות זוהר פנימה על כריך מראה ליצירת אפקט של השתקפות אינסופית. פרויקט זה ייישם את הכישורים והטכניקות מתוך המבוא שלי Arduin
מראה אינסוף עם LCD וחיישן IR: 5 שלבים
מראה אינסוף עם LCD וחיישן IR: פרויקט זה הולך להראות לך כיצד תוכל ליצור מראה אינסוף. התפיסה הבסיסית היא שנורות הלדים שנמצאות על המראה יוצרות אור שמקפיץ מהמראה האחורית אל המראה הקדמית, שם קצת אור בורח כדי שנוכל לראות בפנים וכך
קסם אשליה של אינסוף מראה: 3 שלבים
קסם אשליות אינפיניטי מראה: היי חברים, תנו לנו להכין מראת אינפיניטי, שזה קסם אשליה
גלקסיה ביד שלך! תיבת מראה אינסוף: 3 שלבים (עם תמונות)
גלקסיה ביד שלך! תיבת מראה אינפיניטי: הדרכה זו עוסקת ביצירת צורה קטנה היוצרת הרבה השתקפויות בפנים. עם חורים בכל זווית לאור וחלון קטן לראות מבעד, תוכלו לצפות בתהליך האינסוף הזה בידכם! הרעיון נבע מצפייה במראה אינסוף
שעון מראה אינסוף עם פוטנציומטרים: 3 שלבים
שעון מראה אינסוף עם פוטנציומטרים: נתקלתי במראה אינסוף ומצאתי שזה ממש מגניב. זה נתן לי השראה ליצור מראה אינסופית, אבל הייתי צריך את זה כדי שיהיה לי מטרה. אז, החלטתי להכין שעון מראה אינסופי מתפקד. זוהי מראה אינסופית המאפשרת לכם