Sisukord:

Arduino mängukontroller, mille tuled reageerivad teie ühtsuse mängule :: 24 sammu
Arduino mängukontroller, mille tuled reageerivad teie ühtsuse mängule :: 24 sammu

Video: Arduino mängukontroller, mille tuled reageerivad teie ühtsuse mängule :: 24 sammu

Video: Arduino mängukontroller, mille tuled reageerivad teie ühtsuse mängule :: 24 sammu
Video: BigTreeTech - SKR 3 - Основы 2024, Juuli
Anonim
Arduino mängukontroller, mille tuled reageerivad teie ühtsusmängule
Arduino mängukontroller, mille tuled reageerivad teie ühtsusmängule

Kõigepealt kirjutasin selle sõna sõnaga. See on esimene kord, kui kasutan juhendatavat, nii et kui ma ütlen: kirjutage kood välja nii, et tean, et ma viitan selle sammu ülaosas olevale pildile.

Selles projektis kasutan 2 arduinot, et käivitada 2 eraldi koodibitti, kuna mul oli probleeme selle töötamisega ainult ühega

Need on Uno ja Leonardo

Kokku on teil seda projekti vaja.

· 7 surunuppu

· 23 džemprijuhet

· 1 arduino Leonardo + USB -kaabel

· 4 takistit · 4 LED -i

· 1 arduino uno + USB -kaabel

· 2 leivaplaati

Samm: ühendage juhtnupud Arduino külge

Juhtnuppude ühendamine Arduinoga
Juhtnuppude ühendamine Arduinoga

Selle osa ühendamiseks on vaja järgmist:

· 7 surunuppu

· 14 hüppaja juhet

· 1 arduino Leonardo + USB -kaabel

· Leivalaud

Nuppe on üsna lihtne ühendada, kuid piltide kujul kuvamiseks võivad need kiiresti muutuda.

· Kõigepealt asetage nupud ülaltoodud pildil märgitud asenditesse.

· Teiseks soovite ühendada hüppaja arduino Leonardo maapealsest pesast leivaplaadi miinusreasse.

· Nüüd ühendate džemprid kõikjalt miinusrealt reale, mis on kooskõlas teie nupu parema tihvtiga. see toidab seda jõuga.

· Järgmisena soovite ühendada hüppajajuhtme reast, mis on kooskõlas teie nupu vasaku tihvtiga Leonardo digitaalsisendipesadega. Siin kasutasin nuppude jaoks pesa 2 - 3 - 4 - 5 - 6 - 7-8

Näitasin pildil ainult traati, mis läheb sisendisse 8, sest see näitab väga räpast pilti, kui näete kõiki üksteise ristuvaid juhtmeid.

Samm: Arduino Leonardo kodeerimine:

Arduino Leonardo kodeerimine
Arduino Leonardo kodeerimine

Nii et öelda teile põhjus, miks ma selleks Leonardot kasutan. Sellepärast, et sellel on teatud kiip, mida Uno ei tee, paneb arvuti selle USB -sisendseadmena ära tundma. Nagu klaviatuur. Mis võimaldab meil teha midagi, mis muudab meie elu selle projekti programmeerijatena palju lihtsamaks. Klaviatuuri emuleerimine. Me petame arvutit arvama, et me vajutame klaviatuuri teatud klahve, kui me tegelikult vajutame oma kontrolleri nuppe.

Nüüd lähen ma teile samm -sammult koodi mõtlema.

Kõigepealt ülaosas lisame klaviatuuri.h. See võimaldab meil kasutada klaviatuuri funktsioone, mida me oma koodis kasutame.

3. samm:

Pilt
Pilt

Seejärel peame määratlema digitaalsed sisendipesad, mida me sellel seadmel kasutama hakkame

Leonardo iga nupu jaoks.

Olen igaühe neist nimetanud ka võtme järgi, mida ma jäljendama hakkan.

4. samm:

Pilt
Pilt

Sealt asume seadistusfunktsiooni. See ütleb

arduino, mida see käivitamisel teeb.

kõigepealt kirjutame Serial.begin, mis avab jadaporti ja määrab andmeedastuskiiruseks 9600 bps

ja me määratleme, et kõik nimed on tihvtid sisenditeks.

5. samm:

Pilt
Pilt

Ja lõpuks kirjutame oma tsüklifunktsiooni, mis kontrollib, kas

nuppe vajutatakse ja öelge arduinole, kuidas sellele reageerida.

Esiteks kirjutame Keyboard.begin, mis ütleb arduinole, et ta peab klaviatuuri funktsioonide abil meie eest hoolitsema

6. samm:

Pilt
Pilt
Pilt
Pilt
Pilt
Pilt

Seejärel kirjutame iga nupu kohta if/else lause, mis läheb niimoodi

Mida ma arduinole siin ütlesin, on järgmine: kui kontrolleril vajutatakse vasakpoolset nuppu, pange arvuti arvama, et vajutame a -klahvi, ja kui see pole nii, siis arvake, et oleme võtmest lahti lasknud.

Põhimõtteliselt kordate seda koodiplokki iga kontrolleri nupu jaoks. muudatustega iga muutuja jaoks ja võtmetega, mida muutuja peab jäljendama

7. samm:

Pilt
Pilt

Võtmed, mida me arvutile käskisime siia lüüa, on W - A - S - D, mis

on peaaegu arvutimängude ja E-Q liikumise standard ning tühikuklahv, mida selles koodis tuntakse ära kui "", mis on nupud, mida ma oma mängus üles võtan-vallandan ja vallandan. Muutke need vabalt mis tahes klahvideks, mis teie arvates teie mängu/kontrolleri jaoks paremini toimivad.

Lõpuks ütleme arduinole, et ta lõpetaks kontrolli, milline Keyboard.end

8. samm: liikumise kodeerimine ühtsuses:

Kodeerimise liikumine ühtsuses
Kodeerimise liikumine ühtsuses

Kõigepealt lubage mul öelda, et teen selle 2d mängu jaoks

näited, mida näete, on selleks loodud. Peamiselt tähendab see seda, kus ma kasutan vektori2, kui töötate 3D -s, siis kasutate vektorit3. sest peaksite muretsema selle pärast, et 3D -s on liikumise lisadimensioon.

Põhjus, miks ma kasutasin klaviatuuri emuleerimist arduino poolel, on see, et Unityl on midagi sisseehitatud klaviatuuri klahvide äratundmiseks, mida saame kasutada.

Kui avate oma projekti ühtsuses, minge Redigeerimine -> Projekti seaded -> Sisend. Näete oma inspektorist, et see käivitab sisendihalduri. Kui telgedel klõpsates näete, et avaneb terve hulk sisendnimesid, mida tavaliselt kasutatakse arvutikontrollerite jaoks, nagu need, mida praegu teeme. Kaks sisendit, mida kavatseme kasutada, on horisontaalsed ja vertikaalsed, mis teie arvates arvasid, et see on W-A-S-D.

Esiteks soovite teha oma ühtsusstseenide hierarhiasse objekti, millest saab teie mängija. Minu puhul olen see lõbus väike mees. See võib olla ükskõik, mida sa vajad, aga oma mängu eesmärgil tegin ma selle mehe.

9. samm:

Pilt
Pilt

Sa tahad anda sellele mängijale 2 asja. Karbipõrgendaja 2d ja

a Rigidbody 2d ja muutke need ülaltoodud pildi sarnaseks.

10. samm:

Pilt
Pilt

Seejärel soovite minna oma projektide kausta ja luua a

C# skript. Millele panin nimeks PlayerMovement.

Selles skriptis määratlete 2 muutujat. Avalik ujuk, mida ma nimetan moveSpeediks. Mis määrab, kui kiiresti te lähete. Ja privaatne Rigidbody2D, mida ma nimetan RigidPlayeriks. Mis otsib teie mängijaid jäigalt.

Ärge unustage, et pääsete oma ühtsusredaktorisse, klõpsake oma mängijal ja lisage see uus skript, lohistades selle inspektorile ja määrake moveSpeedile numbriväärtus.

11. samm:

Pilt
Pilt

nüüd oma Start () -is tahate teha ühte asja ja see on

veenduge, et teie RigidPlayer leiaks teie maksja rigidbody 2d. Seda saate teha järgmise koodirida abil:

12. samm:

Pilt
Pilt

Seejärel liigume värskenduse juurde (). Siin me läheme

panna mängija liikuma.

me teeme seda üsna lihtsa if -avaldusega, milles vaadeldakse horisontaalse (AD) ja vertikaalse (SW) negatiivseid ja positiivseid võtmeid ning rakendame selle sunniviisilise numbrina, et panna oma jäik keha 2d, et oma mängija sisse lükata suund. See arv korrutatakse muutujaga moveSpeed.

13. samm:

Pilt
Pilt

Lõpuks soovite veenduda, et teie mängija lakkab liikumast

sa ei vajuta midagi. See meeldib sulle nii:

Nüüd, kui soovite kasutada oma kolme muud nuppu millegi jaoks, mida teete selle if -lausega: if (Input. GetKeyDown (Keycode. Space))

tühikuklahvi jaoks ja tühiku asemel pange teiste klahvide jaoks valitud tähtede täht.

14. samm: tulede ühendamine Arduinoga

Tuled ühendades Arduinoga
Tuled ühendades Arduinoga

·

Selle osa ühendamiseks on vaja järgmist:

· 9 hüppaja juhet

· 4 takistit

· 4 LED -i

· 1 arduino uno + USB -kaabel

· Leivalaud

Tuled ühendatakse Uno kaudu.

Lõpuks näeb see välja nagu ülaltoodud pilt:

Ühendate takistid LED -ide pika külje külge. Ja siis ühendate hüppaja digitaalse tihvti numbri küljest takistite külge. sel juhul kasutasin digitaalseid tihvtide pilusid 9 -10 -11 -12, need numbrid on asjakohased, kui jõuame tulede koodi juurde.

Sealt soovite ühendada hüppaja arduino Uno maapealsest pesast laua kohale, nagu on näha ülaltoodud pildi musta juhtmega.

Siis soovite, et 4 džemprit juhiksid iga LED -i lühikesesse otsa

Samm: Arduino Uno kodeerimine

Arduino Uno kodeerimine
Arduino Uno kodeerimine

Olgu, kõigepealt määratleme oma muutujad uuesti

Nii et kõigepealt, milliseid digitaalseid sisendeid oma tulede jaoks kasutame. Ja me teeme sümboli nimega myCol [20]

16. samm:

Pilt
Pilt

Seejärel tahame seadistuses Serial.binin uuesti teha. Pange kõik meie LED -id väljundisse ja lülitage need kõik käivitamisel välja.

17. samm:

Pilt
Pilt

Ja lõpuks soovite kirjutada oma silmuse funktsiooni.

See paneb Arduino lugema kõiki jada kaudu saabuvaid andmeid, kuni juhtub üks kahest sündmusest. Avastatakse kas rea etteande märk; selle identifitseerib lf, mis on seatud väärtusele 10 ja on esimene argument või on sisse loetud teatud hulk baite. See on kolmas argument ja selle näite puhul on seatud vaid üks bait. Andmed salvestatakse muutujale myCol, mille väärtuseks on määratud char ja piir 20. 20. ReadBytesUltil on see teine argument. Või teine viis selle selgitamiseks on Serial.readBytesUntil (terminatorCharacter, buffer, byteLimit);

Ja if -avaldused tagavad, et ühtsus annab märku, et teatud tuled süttivad. Sel juhul sain 4 erinevat värvi valgust, nii et panen ühtsuse saatma g rohelise LED -i süttimiseks, b sinise LED -i sisselülitamiseks, r punase LED -i sisselülitamiseks ja y kollase LED -i sisselülitamiseks.

18. samm: tulede kodeerimine ühtsuse poolel:

Kodeeritulede ühtsuse pool
Kodeeritulede ühtsuse pool

Okei 2 asja enne kui sellesse asume.

1. oma arduino kodeerimisprogrammis minge Tööriist -> Port -> ja kontrollige, milline COM teie uno on. Minu puhul selle COM3 (see on koodis oluline)

2. ühtsuses Ava Redigeerimine -> Projekti seaded -> Mängija, seejärel klõpsake inspektoril muid seadeid, minge Api ühilduvuse tasemele ja lülitage see. NET 2.0 alamvõrgust lihtsalt. NET 2.0 -le

Okei see on tehtud. Asume sellesse.

Paremklõpsake oma hierarhiat ja klõpsake nuppu Loo tühi.

See on tühi mänguobjekt, mis lihtsalt eksisteerib teie mängus, et hoida meie jaoks üks skript. Ma nimetasin seda objekti Initiks.

19. samm:

Pilt
Pilt

Seejärel minge vahekaardile oma projektid ja looge uus C# skript

ja nimetage seda saatmiseks.

Esimese asjana kirjutage need koodide jaotiste ridadele:

kasutades System. IO. Ports;

kasutades System. Threadingut;

see võimaldab meil kasutada muutujat SerialPort

20. samm:

Pilt
Pilt

selles skriptis teeme järgmised muutujad. Pange nüüd tähele, et mul on seal COM3, see võib teie jaoks teisiti olla, nagu me selle sammu alguses arutasime. Kui see on, asendage 3 numbriga, mille ta teile ütles.

21. samm:

Pilt
Pilt

Alguses ütleme, et kasutatav skript on OpenConnection

funktsioon, millest kirjutame natuke

värskendus on rohkem test kui midagi muud, kuid kui soovite selle lisada, siis see ühtsusele saadetavate testisõnumite jaoks. Sa võiksid seda ausalt ignoreerida.

Samm 22:

Pilt
Pilt

Okei selle OpenConnection funktsiooni jaoks. See on lihtsalt suur

avaldus if/else, mis hoiab ühenduse avatuna, kopeerige see nagu kirjutatud ja teil peaks kõik korras olema.

23. samm:

Pilt
Pilt

Pidage nüüd arduino koodist meeles, mille ma selle kontrollima panin

annab märku ühtsusest.

no siin see juhtub. Minu puhul ühendasin 4 tuld, nii et kirjutasin 4 funktsiooni, mis on äärmiselt lihtsad. Kõik, mida nad teevad, on, kui neile helistatakse, saadavad nad arduinole kirja. Kui arduino selle tähe saab, süttib sellele tähele vastav tuli.

24. samm:

Pilt
Pilt

Teil võib tekkida küsimus, kuidas ma saan selle nii nimetada

funktsiooni? Noh, sa teed seda ühe lihtsa reaga mis tahes muus oma mängu jaoks kasutatavas skriptis. Saadan. NimiFunktsioon siin ();. Näiteks minu mängus on mängija ülesandeks koguda 4 värvilist orbi. Nii et ma kirjutasin väikese skripti, mis tagab, et kui ta jõuab ühe lähedale ja vajutab paremat nuppu, võtab ta selle kätte ja see saadab arduinole signaali, et sel juhul on kollane orb üles võetud. Et see teaks, pean ma kollase LED -i sisse lülitama:

Selle ühe koodirida võite panna kõikjale, kuhu soovite. Kui soovite, et see süttiks mängu käivitamisel, pange see käivitusfunktsiooni. Kui soovite, et see süttiks, kui ta sureb, pange see teie ülesandeks mängijate surma jaoks. Katsetage natuke. Ma otsustan muuta tuled omamoodi ui elemendiks väljaspool mängu, et jälgida kogutud orbiide ilma ekraani segamata.

Soovitan: