Мазмұны:

Arduino ойын контроллері сіздің бірлік ойынына жауап беретін шамдармен :: 24 қадам
Arduino ойын контроллері сіздің бірлік ойынына жауап беретін шамдармен :: 24 қадам

Бейне: Arduino ойын контроллері сіздің бірлік ойынына жауап беретін шамдармен :: 24 қадам

Бейне: Arduino ойын контроллері сіздің бірлік ойынына жауап беретін шамдармен :: 24 қадам
Бейне: Управление 32 сервомоторами с помощью PCA9685 и Arduino: V3 2024, Қараша
Anonim
Arduino ойын контроллері сіздің бірлігіңізге жауап беретін шамдармен
Arduino ойын контроллері сіздің бірлігіңізге жауап беретін шамдармен

Біріншіден, мен бұл нәрсені сөзбен жаздым. Мен бірінші рет нұсқаулықты қолданамын, сондықтан мен: кодты жазыңыз, сол қадамның жоғарғы жағындағы кескінге сілтеме жасайтынымды біліңіз.

Бұл жобада мен 2 бөлек кодты іске қосу үшін 2 arduino -ны қолданамын, себебі мен оны тек бірімен жұмыс істей алмай қиналдым.

Бұл Юно мен Леонардо

бұл сізге бұл жобаны іске қосу үшін қажет нәрсе.

· 7 түйме

· 23 секіргіш сым

· 1 arduino Leonardo + usb кабелі

· 4 резистор · 4 жарықдиодты

· 1 arduino uno + usb кабелі

· 2 нан тақтасы

1 -қадам: басқару түймелерін Arduino -ға қосу

Ардуиноға басқару түймелерін қосу
Ардуиноға басқару түймелерін қосу

Бұл бөлікті бекіту үшін сізге не қажет:

· 7 түйме

· 14 секіргіш сым

· 1 arduino Leonardo + usb кабелі

· Нан тақтасы

Түймелерді қосу өте қарапайым, бірақ тез кескін түрінде көрсету үшін тәртіпсіздікке айналуы мүмкін.

· Алдымен түймелерді жоғарыдағы суретте мен белгілеген орындарға қойыңыз.

· Екіншіден, сіз секіргішті Леонардо ардуиносындағы слоттан нан тақтасының минус қатарына қосқыңыз келеді.

· Енді сіз минус жолдың кез келген жерінен секіргіштерді түйменің оң жақ түйреуішіне сәйкес келетін қатарға қосасыз. бұл оған қуат береді.

· Әрі қарай, сіз басқыштың сол жақ түйреуішіне сәйкес келетін қатардағы қосқыш сымды Леонардоның сандық кіріс ұяларына қосқыңыз келеді. Бұл жердегі түймелер үшін мен 2 - 3 - 4 - 5 - 6 - 7-8 ұяшығын қолдандым

Мен тек суретке 8 -ге кіретін сымды көрсеттім, себебі ол барлық сымдардың бір -бірінен өтетінін көрсетеді.

2 -қадам: Ардуино Леонардоны кодтау:

Ардуино Леонардоны кодтау
Ардуино Леонардоны кодтау

Сізге бұл үшін Леонардоны қолданатын себебімді айту үшін. Себебі Uno -да белгілі бір микросхема бар, бұл оны компьютерді USB енгізу құрылғысы ретінде тани алмайды. Бұл пернетақта сияқты. Бұл бізге осы жобаның бағдарламашысы ретінде өмірімізді айтарлықтай жеңілдететін нәрсе жасауға мүмкіндік береді. Пернетақта эмуляциясы. Біз компьютерді алдағы уақытта контроллердегі батырмаларды басқанда пернетақтадағы кейбір пернелерді басамыз деп ойлаймыз.

Енді мен сіз кодты біртіндеп ойластырғаныңызды айтамын.

Біріншіден, біз жоғарыда Keyboard.h қосамыз. Бұл біздің кодта қолданылатын пернетақта функцияларын пайдалануға мүмкіндік береді.

3 -қадам:

Кескін
Кескін

Содан кейін біз қолданатын цифрлық кіріс ұяларын анықтауымыз керек

Әр түйме үшін Леонардо.

Мен олардың әрқайсысына мен еліктегім келетін кілттің атын бердім.

4 -қадам:

Кескін
Кескін

Ол жерден біз орнату функциясына кіреміз. Бұл айтады

arduino іске қосылғанда не істейді.

алдымен біз Serial.begin жазамыз, ол сериялық портты ашады және деректер жылдамдығын 9600 бит / с дейін орнатады

және біз олардың барлығын түйін деп атаймыз.

5 -қадам:

Кескін
Кескін

Ақырында біз цикл функциясын жазамыз, ол тексереді

түймелер басылады және arduino -ға бұған қалай жауап беру керектігін айтады.

Алдымен біз Keyboard.begin жазамыз, ол arduinoға пернетақта функцияларын қолдана отырып, бізді іздеуі керектігін айтады

6 -қадам:

Кескін
Кескін
Кескін
Кескін
Кескін
Кескін

Содан кейін біз әр түйме үшін if/else операторын жазамыз

Мен мұнда arduino -ға айттым: егер контроллерде менің сол жақ батырмам басылса, компьютер бізді «а» пернесін басамыз деп ойлайды, егер олай болмаса, бізді пернені жіберіп қойдық деп ойлаңыз.

Сіз бұл код блогын контроллердегі әр түйме үшін қайталайсыз. әр айнымалыға және айнымалының эмуляциясы қажет кілттерге өзгерістер енгізіледі

7 -қадам:

Кескін
Кескін

Біз компьютерге осында басуды айтқан пернелер - W - A - S - D

бұл дербес компьютерлік ойындар мен E-Q-қозғалысының стандарты, және бұл кодта бос орын «мен ойнау кезінде өшіру мен өшіру үшін қолданылатын түймелер» деп танылады. Оларды ойынға/контроллерге жақсы жұмыс істейтін кез келген кілттерге ауыстыруға болады.

Соңында біз arduino -ға Keyboard.end тексеруді тоқтатуды айтамыз

8 -қадам: Бірлікте кодтау қозғалысы:

Бірліктегі кодтау қозғалысы
Бірліктегі кодтау қозғалысы

Біріншіден, мен мұны 2 -ші ойын үшін жасап жатқанымды айтайын

сіз көретін мысалдар сол үшін жасалған. Мен вектор2 -ді қайда қолданатынымды білдіреді, егер сіз 3d -де жұмыс жасасаңыз, сіз вектор3 -ті қолданасыз. өйткені сіз 3d -де қозғалыстың қосымша өлшемі туралы алаңдауыңыз керек.

Енді мен arduino жағында пернетақтаның эмуляциясын қолдандым, себебі Unity -де біз қолдана алатын пернетақтадағы пернелерді тануға арналған бір нәрсе бар.

Егер сіз жобаңызды бірлесе ашсаңыз, Өңдеу -> Жоба параметрлері -> Енгізу тармағына өтіңіз. Сіз инспекторыңызда кіріс менеджерінің жүктелетінін көре аласыз. Егер сіз осьті бассаңыз, әдетте біз жасайтын компьютерлік контроллерлер үшін қолданылатын кіріс атауының толық жиынтығын көре аласыз. Біз қолданатын 2 кіріс-бұл көлденең және тік, сіз оны W-A-S-D деп есептейсіз.

Алдымен сіз бірлік сахналарында сіздің ойыншы болатын иерархияға объект жасағыңыз келеді. Менің жағдайда бұл көңілді кішкентай бала. Бұл сізге қажет нәрсе болуы мүмкін, бірақ мен бұл жігітті ойынның мақсаты үшін жасадым.

9 -қадам:

Кескін
Кескін

Сіз бұл ойыншыға 2 нәрсе бергіңіз келеді. 2d және

a Rigidbody 2d және оларды жоғарыдағы суреттегідей етіп өңдеңіз.

10 -қадам:

Кескін
Кескін

Содан кейін сіз өзіңіздің жобалар қалтасына кіріп, а

C# сценарийі. Мен оны PlayerMovement деп атадым.

Бұл сценарийде сіз 2 айнымалы мәнді анықтайсыз. Мен MoveSpeed деп аталатын жалпыға ортақ флот. Бұл сіздің қаншалықты жылдам жүретініңізді анықтайды. Мен RigidPlayer деп атайтын жеке Rigidbody2D. Бұл сіздің ойыншыларды қатты адам ретінде іздейді.

Бірлік редакторына кіруді ұмытпаңыз, ойнатқышты тексерушіге сүйреп апарып, жаңа сценарийді қосыңыз және moveSpeed үшін сан мәнін орнатыңыз.

11 -қадам:

Кескін
Кескін

енді Start () ішінде сіз бір нәрсені жасағыңыз келеді - бұл

сіздің RigidPlayer сіздің төлеуші rigidbody 2d таба алатынына көз жеткізіңіз. Сіз мұны келесі код жолымен жасайсыз:

12 -қадам:

Кескін
Кескін

Содан кейін біз жаңартуға көшеміз (). Міне, біз қайда барамыз

ойыншыны қозғалысқа келтіру үшін.

Біз мұны көлденең (AD) және тік (SW) теріс және оң кілттерге қарайтын және мұны ойыншыға итермелеу үшін қатаң денемізге 2d қоятын күш ретінде қолданатын өте қарапайым if мәлімдемесімен жасаймыз. бағыт. Бұл сан moveSpeed айнымалысына көбейтіледі.

13 -қадам:

Кескін
Кескін

Ақырында, сіз ойыншының қозғалысын тоқтатқанына көз жеткізгіңіз келеді

сіз ештеңені баспайсыз. Сізге бұл ұнайды:

Егер сіз басқа 3 түймені кез келген нәрсе үшін қолданғыңыз келсе, мұны if операторымен орындаңыз: if (Input. GetKeyDown (Keycode. Space))

бос орын үшін және бос орын орнына басқа пернелер үшін пайдалануды таңдаған басқа пернелердің әрпін қойыңыз.

14 -қадам: Ардуиноға жарық қосу

Ардуиноға жарық қосу
Ардуиноға жарық қосу

·

Бұл бөлікті бекіту үшін сізге не қажет:

· 9 өтпелі сымдар

· 4 резистор

· 4 светодиод

· 1 arduino uno + usb кабелі

· Нан тақтасы

Жарықтарды қосу Uno арқылы жүзеге асады.

Бұл жоғарыдағы суретке ұқсайды:

Сіз резисторларды светодиодтың ұзын жағына қосасыз. Содан кейін сіз сандық түйреуіштің санынан секіргішті резисторға қосасыз. Бұл жағдайда мен 9 -10 -11 -12 цифрлық пин слоттарын қолдандым, бұл сандар шамдардың кодына жеткенде маңызды болады.

Осы жерден сіз жоғарыдағы суреттегі қара сыммен көрсетілгендей, Arduino Uno жердегі ұясынан тақтадағы жерге секіргішті қосқыңыз келеді.

Содан кейін сіз 4 жарықтандырғыштың барлығын әр жарық диодының қысқа ұшына апарғыңыз келеді

15 -қадам: Arduino Uno кодтау

Arduino Uno кодтау
Arduino Uno кодтау

Жақсы, алдымен біз айнымалыларды анықтаймыз

Алдымен біз шамдар үшін қандай сандық кірістерді қолданамыз. Біз myCol деп аталатын таңбаны жасамақпыз [20]

16 -қадам:

Кескін
Кескін

Содан кейін орнатуда біз Serial.begin қайта жасағымыз келеді. Барлық жарықдиодты жарықдиодты қосыңыз және іске қосу кезінде олардың барлығын өшіріңіз.

17 -қадам:

Кескін
Кескін

Ақырында сіз цикл функциясын жазғыңыз келеді.

Бұл Arduino -ға екі оқиғаның біреуі болғанша сериялық кіретін кез келген деректерді оқуға әкеледі. Жолдың берілу таңбасы анықталады; Бұл lf арқылы анықталады, ол 10 -ға орнатылады және бірінші аргумент немесе белгілі бір байт саны оқылады. Бұл үшінші аргумент және бұл мысал тек бір байтқа орнатылған. Деректер myCol айнымалысында сақталады, ол char және 20 шегіне орнатылады. ReadBytesUnill дейін бұл екінші аргумент. Немесе оны түсіндірудің басқа әдісі - Serial.readBytesUntil (terminatorCharacter, buffer, byteLimit);

Егер if операторлары бірлік сигнал бергенде белгілі бір шамдардың қосылатынына көз жеткізеді. Бұл жағдайда менде 4 түрлі түсті шамдар бар, сондықтан мен жасыл жарық диодты қосу үшін g, көк жарық диодты қосу үшін b, қызыл жарықдиодты қосу үшін r және сары жарықдиодты қосу үшін бірлік жіберемін.

18 -қадам: Шамдарды кодтау бірлігі жағы:

Бірлік жағында кодтау шамдары
Бірлік жағында кодтау шамдары

Бұған кіріспес бұрын алдымен 2 нәрсені ескеріңіз.

1. arduino кодтау бағдарламасында Tool -> Port -> тармағына өтіңіз және сіздің UNO қай COM қосылғанын тексеріңіз. Менің жағдайда оның COM3 (бұл кодта маңызды болады)

2. бірлікте Өңдеу -> Жоба параметрлері -> Ойыншыға өтіңіз, содан кейін инспекторда Api үйлесімділік деңгейіне өтіңіз және оны. NET 2.0 ішкі желісінен жай ғана. NET 2.0 -ге ауыстырыңыз.

Ой, бұл жасалды. Оған енейік.

Иерархияңызды тінтуірдің оң жақ түймесімен нұқыңыз және бос құруды басыңыз.

Бұл біз үшін бір сценарийді сақтау үшін сіздің ойыныңызда болатын бос ойын нысаны болады. Мен бұл объектіні Init деп атадым.

19 -қадам:

Кескін
Кескін

Содан кейін сіздің жобалар қойындысына өтіп, жаңа C# сценарийін жасаңыз

және оны Жіберу деп атаңыз.

Сіз жасай алатын бірінші нәрсе - бұл кодты пайдалану бөлімдеріндегі жолдарға жазу:

System. IO. Ports пайдалану;

System. Threading қолдану;

бұл SerialPort айнымалысын қолдануға мүмкіндік береді

20 -қадам:

Кескін
Кескін

бұл сценарийде біз келесі айнымалыларды жасаймыз. Енді менде COM3 бар екенін ескеріңіз, бұл сіз үшін басқаша болуы мүмкін, біз осы қадамның басында талқылағанбыз. Егер ол 3 -ті сізге айтқан санмен алмастырса.

21 -қадам:

Кескін
Кескін

Басында біз сценарийді OpenConnection деп айтамыз

біз біраз уақыттан кейін жазатын функция

жаңарту - бұл кез келген нәрсе, бірақ егер сіз оны бірлікке жіберілетін хабарларды тексеру үшін қосқыңыз келсе. Сіз мұны адал түрде елемеуіңіз мүмкін.

22 -қадам:

Кескін
Кескін

Осы OpenConnection функциясын қолданыңыз. Бұл жай ғана үлкен

if/else байланысын ашық ұстайтын мәлімдеме оны жазылғандай көшіріңіз және сіз жақсы болуыңыз керек.

23 -қадам:

Кескін
Кескін

Енді мен тексерген arduino кодынан есте сақтаңыз

оған бірлік жіберетінін көрсетеді.

жақсы, бұл жерде болады. Менің жағдайда менде 4 шам қосылды, сондықтан мен өте қарапайым 4 функцияны жаздым. Олар тек шақырылған кезде arduino -ға хат жібереді. Ардуино бұл әріпті алған кезде, ол осы әріпке сәйкес келетін шамды жанады.

24 -қадам:

Кескін
Кескін

Сіз мұны қалай атай аламын деп ойлайтын шығарсыз

функция? Сіз мұны ойынға пайдаланатын кез келген басқа с# сценарийлерінде бір қарапайым жолмен жасайсыз. Sending. NameFunctionhere ();. Мысалы, менің ойынымда ойыншыға 4 түсті шарды жинау тапсырылады. Мен кішкене сценарий жаздым, ол оның біреуіне жақындап, оң жақ батырманы басқанда, ол оны алады және бұл жағдайда ардуиноға сары шарды алғанын білдіреді. Білу үшін мен сары жарық диодты қосуым керек:

Сіз бұл кодтың бір жолын қалаған жеріңізге қоя аласыз. Егер сіз ойын басталған кезде оның жануын қаласаңыз, оны старт функциясына қойыңыз. Ол өлгенде жанып тұрғанын қалайсыз ба, оны ойыншылардың өліміне арналған функцияңызға қойыңыз. Аздап тәжірибе жасаңыз. Мен экранды бұзбай жинау керек шарларды қадағалау үшін шамдарды ойыннан тыс интерфейс элементіне айналдыруды таңдаймын.

Ұсынылған: