Реклама

Да ли ти је досадно? Могло би се изградити и ласерска купола. Знате - један иде пев пев, пушта црвени сноп у много различитих праваца, а можда чак и баца у машину за дим? Да, један од њих.

Шта ће вам требати

  • Ардуино
  • 2 сервоса
  • Ласерски модул, као што је онај из овај сензорски комплет
  • Пиезо зујалица или други мали излазни уређај
  • Металне жице и кабловске везе за причвршћивање
  • Дуги женски> мушки скочни каблови, плус редовни каблови за прескакање

По жељи, потребна је машина за дим, ласер је прилично ниске снаге, тако да нећете моћи видети сноп без дима чак ни у мрачној соби.

компоненте

Направите план

Основна идеја куполе је да се ласерски модул постави на један серво ради хоризонталне ротације; затим монтирајте овај пакет на други серво уређај постављен под углом од 90 степени да бисте омогућили вертикално кретање. Имамо пиезо за пружање пев пев звучни ефекти, и добро бацам у машину за дим.

Серво тестирање

Овисно о вашем серву, жице се могу обојати различито, али углавном:

  • Црвена је позитивна жица, а на оба моја сервосанта била је центар три - бити спојен на + 5В шину.
  • instagram viewer
  • Смеђа или црна је негативна боја коју треба повезати са ГНД-ом на Ардуину.
  • Бела или наранџаста је сигнална жица која треба да се повеже на дигитални И / О пински прикључак који подржава ПВМ (9 и 10 у доњем примеру).

Након што повежете два серво уређаја, додајте следећи пример кода. Један серво назвао сам „хори“ за контролу хоризонталног кретања, а други „верт“. Свако би требало да обави читав распон кретања (у мом случају око 60 степени).

#инцлуде Серво верт, хори; // створити серво објект за контролу серво // може се створити највише осам серво објеката инт пос = 0; // променљива за складиштење серво положаја. подешавање празнине () {хори.аттацх (9); верт.аттацх (10); // причвршћује серво на пин 9,10 на серво објекте верт.врите (0); хори.врите (0); } воид петља () {фор (пос = 0; поз <180; пос + = 10) // иде од 0 степени до 180 степени {// у корацима од 10 степени верт.врите (пос); хори.врите (пос); // реци серву да иде на позицију у променљивој 'пос' кашњењу (100); // чека 100мс да серво дође до позиције} фор (пос = 180; пос> = 1; пос- = 10) // враћа се са 180 степени на 0 степени {верт.врите (пос); // реци серву да иде на позицију у променљивој 'пос' хори.врите (пос); кашњење (100); // чека 100мс да серво дође до позиције} }

Све у реду? Крећемо даље.

Тестирање ласера ​​и Пев Пев Звук

Ласерски модул је баш као ЛЕД, али има отпорник уграђен у модул, тако да га можемо директно прикључити на дигитални И / О - врло је једноставно. Ако користите исти ласерски модул као и ја," иде на ГНД, тхе С иде на пин 12. Измените горњи узорак да бисте добили пин 12 на излазу:

инт ласер = 12; пинМоде (ласер, ОУТПУТ); 

Затим трепните иглу и искључите сваку петљу користећи стандардни дигиталВрите () метод.

Користићемо само ПВМ за покретање пиезо зујања на удобном нивоу звука - можете експериментисати са коришћењем библиотеке тонова, ако желите, али једноставан звук је све што ми треба. Црну жицу повежите са уземљењем, а црвену жицу 11. Дефинишите своје зујање на одговарајућем пину, подесите на излазни режим и активирајте помоћу аналогВрите (зујалица, 100) (или било који број који желите до 254); и аналогВрите (зујалица, 0) да искључите.

Комплетан узорак кода је модификован да прогута два серво-а, активира ласер и репродукује досадни звук, можете наћи овде.

Све би ваше компоненте требало да раде - сада то морамо да повежемо.

Стварање куполе

Помоћу кабловских веза, причврстите један серво на други; заправо није важно што, само се побрините да се један помиче по хоризонтали, а други да се креће по вертикали. Током тестирања можете извући сечиво ротора и поново седиште ако угао није у реду.

сервос

Употријебите неку круту жицу за моделирање како бисте фиксирали ласерски модул на сечиво другог сервоа, тако:

модул са жицом за ласер

Коначно сам закачио целу ногу на столу са још више каблова и мало дрвета.

причврстити на стол

Програмирање куполе

Не знам за вас, али моја идеја о ласерској куполи потиче из небројеног броја научно-фантастичних филмова и епизода звезданих стаза. Неко ће неко проћи поред куполе и мало пев-пев снимке ће летети у несметаном обрасцу, увек милисекунди преспорима, тако да наш главни глумац заправо не буде погођен. То покушавам да поновим, мада слободно преиначите главну рутину како би одговарао вашој идеји о томе шта треба да се направи.

Ево псеудо кода који сам на крају користио за главну петљу:

  • Насумично одредите време између снимака и време између сваког појединог снимка.
  • Случајно одредите почетни и крајњи положај за сваки серво, верт и хори.
  • Насумично подесите број снимака.
  • Израчунајте број степени промене после сваког снимка као разлику између почетне и крајње позиције подељене са бројем хитаца.
  • Померите серво на почетне положаје и причекајте мало да стигну тамо (100мс)
  • Петљајте док се не направе сви снимци, сваки пут померајући серво-ове мало како је раније израчунато; померити и пуцати, померати и пуцати.
  • Понављање.

Такође сам додао засебну ватра () метода да мало боље структуирамо код. Подесите опсег свих случајно () функције за убрзање или успоравање сваког параметра; или повећати број снимака за више вибрације плесног клуба. Померите се према доље за видео кода у акцији!

#инцлуде Серво верт, хори; // креирајте серво објект за контролу серво инт пос = 0; // променљива за складиштење серво положаја. инт ласер = 12; инт звук = 11; подешавање празнине () {хори.аттацх (9); верт.аттацх (10); // причвршћује серво на пин 9 на серво објект пинМоде (ласер, ОУТПУТ); пинМоде (зујање, ИЗЛАЗ); } воид петља () {инт тимеБет БетвеенБурстс = случајни (200,1000); инт тимеБетвеенСхотс = насумично (50,200); инт вертСтарт = случајни (1,180); инт вертЕнд = случајни (1,180); инт хориСтарт = случајни (1,180); инт хориЕнд = случајни (1,180); инт нумСхотс = случајни (5,20); инт вертЦханге = (вертЕнд - вертСтарт) / нумСхотс; // колико померити окомиту ос по сваком снимку инт хориЦханге = (хориЕнд - хориСтарт) / нумСхотс; верт.врите (вертСтарт); // нека прво крене у почетни положај, причекајте мало хори.врите (хориСтарт); кашњење (100); фор (инт схот = 0; пуцањ

У акцији

Мислим да нема практичне употребе за ову малу играчку, али то је јако забавно и постоји пуно варијабли које можете уплести да бисте постигли жељени ефекат. Можда ће вам добро доћи за домаћи ЛЕГО филм?

Јамес има диплому о вештачкој интелигенцији и сертификат је ЦомпТИА А + и Нетворк +. Он је водећи програмер МакеУсеОф-а и своје слободно време проводи играјући ВР паинтбалл и таблегамес. Градио је рачунаре још од детета.