Съдържание:
- Консумативи
- Стъпка 1: Планирайте голяма рамка
- Стъпка 2: Създаване на хардуер
- Стъпка 3: Създаване на решетка
- Стъпка 4:
- Стъпка 5: Код
- Стъпка 6: Преди кодиране …
- Стъпка 7: Серийна комуникация
Видео: Подвижна решетка с безкрайно огледало: 7 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:50
тези видеоклипове правят видео и движат видео.
Искахме да покажем люлеещото се пространство чрез подвижни решетки и безкрайното огледало, за да покажем усещането за пространство по -ефективно.
Нашата работа се състои от две акрилни плочи, предната и задната плочи, които показват на хората начина, по който те се възбуждат директно, а задните плочи имат 25 стъпалови двигателя, които всъщност произвеждат движение.
Работата се състои от преден панел, който ще покаже проблясъците на пространството, дървена пръчка, която изпълнява средното движение, водач за прътите и табла, която създава движение чрез 25 стъпалови двигателя.
25-те върха на мрежата, свързани към 25-те стъпалови двигателя, произвеждат различни модели според зададените стойности на кодиране. В допълнение, компанията искаше да увеличи пространството чрез комбиниране на прозрачен акрил с фолио за полуогледала, задно огледало и огледало Infinity със светлина. Различни модели на анимация са направени въз основа на вълни и вълни, които са направени въз основа на вълните на водата.
Консумативи
Консумативи
1. UV LED 12V 840cm
2. Гума бяла 12мм 750см
3. Arduino mega 2560 x2
4. Драйвер на двигателя x25
5. Стъпков двигател x25
6. Биполярен кабел за стъпков двигател x25
7. Дървен цилиндър x25
8.pvc (9mm) x25
9. Пролет x 25
10. акрил 700 мм*700 мм
11. Половин огледален филм 1524 мм * 1 М
12. Риболовна линия
13. Захранване 12V 12.5A, 12V 75A
14. шайба за синхронизация (3d печат) x 25
Стъпка 1: Планирайте голяма рамка
Когато започнем, трябва да планираме и начертаем голяма рамка. така че, ние подготвихме pdf файл за акрилна цялостна рамка и stl файл на шайбата за синхронизация (това, което ги поставихме пред стъпаловиден двигател за вятърна резба, която може да издърпа среден дървен прът).
с акрилната цялостна рамка и ролката за синхронизация, първо трябва да направим stl файл и 3d печат.
Стъпка 2: Създаване на хардуер
кутия1
1. Поставете 2T акрилно черно (№ 1) на пода и прикрепете 5T акрилно черно (№ 2) отгоре. Добавете 5T акрилна черна решетка (№ 3) и я прикрепете, като използвате акрилна връзка.
кутия2
2. Поръсете вода върху прозрачна акрилна плоча и отгоре с полуогледален филм. Половин огледало търкаля карта, за да я предпази от бълбукане. Прикрепете страничната част (2) и акрилната прозрачност (1). Не фиксирайте странично комбинираните акрилни издатини и акрилни огледала (№ 1). Временно го фиксирайте с тиксо (за ремонт извън въдицата или обновяване на интериора).
Стъпка 3: Създаване на решетка
1. Дървена колона е с размер 12 мм. Пробийте дупка в края, за да позволите на въдицата да влезе.
2. Прикрепете акрилни плочи към другата страна на перфорирана дървена колона с помощта на лепило.
3. Поставете гумена лента през задната част на дървен стълб и поставете пружина в нея.
4. Обща форма
Стъпка 4:
1. Ардуино мега 2560 пинов номер за връзка
2. разделете електричеството на две части
3. Стъпков двигател и верига на двигателя
4. Два Arduino mega2560s са свързани чрез пресичане на TX и RX за серийна комуникация.
Стъпка 5: Код
#включва
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 брой = 0; int init_set_speed
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; // скорост на двигателя void loop () {/////////////////////////////////////// if (millis () - set_timer1 <6000) {// Стъпков двигател 13 се движи между 1500 и 6000 секунди. <if (millis () - on_timer <1500) {stepper13.setStep (SPEED); } else if (millis () - on_timer <3000) {stepper13.setStep (-SPEED); // (- SPEED) означава обратно завъртане} else if (millis () - on_timer <4500) {stepper13.setStep (SPEED); } иначе if (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); } 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); } /////////////////////////////////////////////////// ако (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); } 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 (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 (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 (); }
първо кодиране
и..
#включва
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 брой = 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; void loop () {
/////////////////////////////////////
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); } иначе if (millis () - on_timer 1000) {Serial1.write (0x01); брой = 1; }} ////////////////////////// if (millis () - set_timer2 1000) {if (millis () - on_timer <2500) {stepper7.setSte ㄴ p (СКОРОСТ); 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); } /////////////////////////////////////////////////// ако (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); } 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 (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 (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 (); }
второ кодиране
Стъпка 6: Преди кодиране …
Трябва да добавите нова библиотека, свързана със стъпкови двигатели.
Затова отидете на този сайт и изтеглете нова библиотека.
blog.danggun.net/2092
Стъпка 7: Серийна комуникация
Трябва да направите две мега-телекомуникации arduino.
if (start_count == 0) {
int Данни = Serial1.read (); Serial.println (данни); if (Данни == 0x01) {start_count = 1; }
На първо място, имаме нужда от това кодиране на Maine Arduino Mega.
if (count == 0) {if (millis () - set_timer1> 1000) {Serial1.write (0x01); брой = 1; }
Arduino Mega, който получава серийни комуникации, се нуждае от това кодиране.
Първото кодиране се поставя там, където трябва да се премести второто aduino.
Препоръчано:
Лесно безкрайно огледало с Arduino Gemma & Neo Пиксели: 8 стъпки (със снимки)
Лесно безкрайно огледало с Arduino Gemma и NeoPixels: Вижте! Погледнете дълбоко в омайващото и измамно просто огледало на безкрайността! Една лента от светодиоди свети навътре върху огледален сандвич, за да създаде ефект на безкрайно отражение. Този проект ще приложи уменията и техниките от моето въведение Arduin
Безкрайно огледало с LCD и IR сензор: 5 стъпки
Infinity Mirror с LCD и IR сензор: Този проект ще ви покаже как можете да направите огледало Infinity. Основната концепция е, че светодиодите, които са на огледалото, създават светлина, която отскача от задното огледало към предното огледало, където излиза малко светлина, така че да можем да видим вътре и така
Направете двустранно, настолно безкрайно огледало: 14 стъпки (със снимки)
Направете двустранно, настолно безкрайно огледало: Повечето от безкрайните огледала, които съм виждал, са едностранни, но исках да направя едно малко по -различно. Тази ще бъде двустранна и проектирана така, че да може да се показва на работния плот или на рафт. Това е лесен, много готин проект за създаване
Звуково реактивно безкрайно огледало: 5 стъпки
Звуково реактивно огледало за безкрайност: В тази инструкция ще ви покажа как можете да направите това огледало за безкрайност. Така че нека започнем
Безкрайно огледало и маса (с ежедневни инструменти): 7 стъпки (със снимки)
Infinity Mirror and Table (With Casual Tools): Здравейте всички, Преди малко попаднах на този инструктаж и веднага ме взеха с него и исках да си го направя, но не можах да се добера до 1) Однопосочно огледало от плексиглас, нито 2) CNC рутер. След малко търсене наоколо измислих