Све је почело са малом игром из мрачног доба која се звала „Марио“, још од времена када сам био малени мали момак који је скакао по паткама да би спасио моју принцезу, док није постао мужеван и згодан принц који је лутао у Перзији (Принц Перзије) борећи се против мрака да бих спасио свој свет, био сам велики љубитељ играња видео игара и одрастао сам играјући их. Али понекад им досади и осећам се мање умешаним у то. Данас напредне играће конзоле омогућавају виртуелно играње и помажу нам да осетимо игру много боље него што то могу тастатура или миш.
Будући да сам ентузијаст Ардуина, уморио сам се играјући познату игру под називом „Ангри Бирдс“ помоћу тастатуре и миша и одлучио сам да направим свој контролер игара помоћу Флек сензора и потенциометра. Када се повуче флекс сензор, повући ће се и птица на катапулту, а помоћу потенциометра можете подесити правац у којем треба да се лансира. Тада када пустите флекс сензор, птица ће бити лансирана. Прилично сам уживао радећи то, па ако намеравате да направите нешто врло слично, овај водич ће вам бити од помоћи. Овај водич ће вам бити од помоћи и код управљања показивачем миша помоћу потенциометра.
Захтеви за софтвер и хардвер:
Софтвер:
- Ардуино ИДЕ
- Обрада ИДЕ-а
- Ангри Бирдс игра на рачунару
Хардвер:
- Ардуино (било која верзија)
- Потенциометар
- Флек Сенсор
- 47К охм отпорник
- Повезивање жица
- Бреадбоард
Концепт иза:
Тхе Ардуино одбора чита вредности од Потентиометер и Флек сенор и преноси их на лаптоп / рачунар преко УСБ ЦОМ порт преко нормално Сериал.врите () функцију. Затим ове информације читамо помоћу Обрада и контролишемо курсор миша помоћу класе Робот у Јави коју подржава обрада ИДЕ. Програмирали смо ИДЕ за обраду на такав начин да ће се, када се повуче Флек сензор, кликнути миш и на основу тога колико се повуче показивач миша ће се померити у Кс смеру. Затим ћемо на основу вредности из потенциометра померити курсор миша у смеру И, на овај начин можемо поставити смер у којем птица треба да се лансира.
Кружни дијаграм:
Круг за играње Ангри Бирд-а помоћу Флек сензора и потенциометра је једноставан.
Једноставно смо повезали потенциометар и флекс сензор на аналогне улазе (А0, А1) Ардуина. Излаз Флек сензора се такође повлачи надоле помоћу 47К падајућег отпора.
Можете га директно повезати на дасци или их залемити на Перф плочу и саставити на рукавицама или нечему другом како бисте учинили креативнијим. Једноставно сам користио плочу за повезивање како бих успоставио везе како је приказано доле:
Ардуино програм:
Комплетни Ардуино код дат је на крају упутства. У наставку је објашњено неколико важних редова.
Иницијализујемо програм за рад са брзином преноса од 9600 бода и почињемо да читамо вредности са Флек сензора и потенциометра. Као што знамо функција сериал.врите () може истовремено да пошаље само један бајт података. Будући да је један бајт 8 битова и 2 ^ 8 = 256. Моћи ћемо да пошаљемо вредности од 0 до 256. Тако да морамо компресовати вредности излаза Флек сензора и излаза потенциометра у 0 до 256.
Да бисмо то урадили, користимо функцију мап () у Ардуину. Све вредности са флекс сензора претварају се са 5 на 100, па ће се, када савијемо сензор, повећати са 5, а када се отпусти вратити на 5. За помињање кликова мишем користе се вредности 1 и 0. Када се пошаље 1, миш се притисне, а када се пошаље 0, миш се отпушта.
ако (ФлекВалуе> = 65 && ФлекВалуе <= 120) // мој флекс сензор варира од 65 до 120, можда се разликујете {ФлекВалуе = мап (ФлекВалуе, 120,65,0,100); // на основу савијања претвара се у 0 на 100 ако се (ФлекВалуе> = 5) // 1 и 0 користи за клик мишем, па почните од 5 {Мцлицк = труе; Сериал.врите (1); // 1 шаље се да се мишем кликне леви клик Сериал.врите (ФлекВалуе); // Вредност флекса је удаљеност за померање миша у смеру Кс} елсе {Мцлицк = фалсе; Сериал.врите (0);}}
Слично томе, вредности из потенциометра се претварају из 101 у 200, певају функцију мап () и шаљу се на ЦОМ порт портала Лаптопс тужећи функцију Сериал.врите (), као што је приказано доле.
иф (потВалуе <= 200) {потВалуе = мап (потВалуе, 0,200,101,201); // Заузврат претворено у 101 до 201 Сериал.врите (потВалуе); // Вредност пота је удаљеност за померање миша у И смеру}
Остатак програма је објашњен помоћу коментара.
Обрада кода:
Обрада је развојна апликација отвореног кода и може се лако преузети и користити за развој занимљивих пројеката помоћу Ардуина или других микроконтролера. Већ смо урадили неколико пројеката користећи Процессинг и можете их погледати кликом на доње везе.
- Уради сам ФМ радио користећи обраду
- Контрола виртуелне стварности / геста помоћу Ардуина
- Приватна соба за ћаскање помоћу Ардуина.
- Ардуино радарски систем који користи АПП за обраду и ултразвучни сензор
- Откривање и праћење лица у реалном времену помоћу Ардуина
- Уради сам брзинометар користећи Ардуино и обраду
- Пинг Понг игра помоћу Ардуино акцелерометра
- Двоножни робот који користи Ардуино
- Уради сам Ардуино термална камера
У овом пројекту користили смо ИДЕ за обраду за читање вредности ЦОМ порта и контролу показивача миша на основу вредности примљених преко ЦОМ порта. Комплетну обраду код за ову Ангри Бирд Гаме Цонтроллер можете преузети са линка испод:
- Обрада кода за овај контролер игре Ангри Бирд (десни клик и 'Сачувај везу као')
Ардуино програм можете пронаћи на крају овог водича. Код за обраду је модификован тако да одговара нашој сврси из кода који је дао иогги на својој ГитХуб страници.
Подаци који долазе из ЦОМ порта требају се читати у истој брзини пријеноса података у којој су послати из Ардуина. Такође проверите са којим ЦОМ портом је повезан ваш Ардуино помоћу менаџера уређаја. Мој Ардуино је повезан са ЦОМ3 и то је био 0 тх Луке у мом компјутеру и Брзина преноса у Ардуино је 9600 тако да је код гласи
порт = нови серијски (овај, Сериал.лист (), 9600);
Једном кад почнемо да читамо вредности, разликујемо га препознавањем на основу његове вредности о томе како смо послали из Ардуина. Вредности се поново мапирају од 0 до 100, тако да ћемо моћи да контролишемо миш заснован на тој вредности.
иф (порт.аваилабле ()> 0) {дата = порт.реад (); принтлн (подаци); // Прочитајте податке са ЦОМ порта и сачувајте их у дата} иф (дата> = 101 && дата <= 201) // Ако је вредност ако је од 101 до 201, онда мора бити из потенциометра {Турн = инт (мап (подаци, 101,201,0,100)); // Користите ту вредност за окретање катапулта} иф (подаци> = 5 && подаци <= 100) // Ако је вредност ако је од 5 до 100, онда мора бити од Флек Сенсор {Пулл = инт (мап (подаци, 5.100, 0,100));} // Користите ту вредност за извлачење катапулта ако је (податак == 1) клик = тачно; // Користите ту вредност да бисте притиснули тастер миша ако (подаци == 0) цлицк = фалсе; // Помоћу те вредности отпустите тастер миша
Једном када категоризујемо податке, можемо да контролишемо миш помоћу роботске Јава класе у обради. Команда робот.моусеМове (црнтКс-Пулл, црнтИ + Турн); може се користити за померање миша у било који жељени положај и линије робот.моусеПресс (ИнпутЕвент.БУТТОН1_ДОВН_МАСК); и робот.моусеРелеасе (ИнпутЕвент.БУТТОН1_ДОВН_МАСК); може се користити за притискање или отпуштање тастера миша.
иф (цлицк == фалсе) // када се Флек Сеснор не повуче {црнтКс = (инт) п.гетКс (); црнтИ = (инт) п.гетИ (); иф (Пулл> 50) робот.моусеРелеасе (ИнпутЕвент.БУТТОН1_ДОВН_МАСК); // Отпустите тастер миша} иф (клик == тачно) // када се повуче Флек Сеснор {робот.моусеПресс (ИнпутЕвент.БУТТОН1_ДОВН_МАСК); // Притисните тастер миша робот.моусеМове (црнтКс-Пулл, црнтИ + Турн); // Премештање миша на основу вредности Флек и ПОТ}}
ИДЕ за обраду када се покрене такође ће приказати мали дијалошки оквир у којем можете пронаћи вредности Пулл, Турн и статус Моусе Цлицк као што је приказано испод
Овај детаљ се може користити за отклањање грешака у програму или исправљање било којих потребних података.
Рад:
Да би овај пројекат Ангри Бирд успео користећи приложени код, саставите свој хардвер у складу са шемом кола и отпремите задати Ардуино код. Затим забележите на који ЦОМ порт је повезан ваш Ардуино и извршите потребне промене у коду за обраду и покрените скицу за обраду.
Сада једноставно покрените игру љуте птице и поставите курсор близу катапулта и повуците флекс сензор да повучете птицу и подесите смер помоћу потенциометра. Једном када је смер подешен, отпустите Флек сензор
ЕЕЕЕВВВВВЕЕЕЕЕЕЕЕЕ !!!!!!!!!!……………
Ваша птица ће бити бачена право у ваздух и БООММ !! На свињце. Комплетан рад можете пронаћи у видео запису датом у наставку.
Надам се да вам се свидео пројекат и успели сте да направите нешто слично. Ако сумњате, можете ме контактирати у одељку за коментаре или поставити своје питање на форум за техничка питања.
Сад је време да се залетимо у те касице и вратимо јаја наших птица !!!!