Turinys:

„Arduino“žaidimų valdiklis su žibintais, reaguojančiais į jūsų vienybės žaidimą :: 24 žingsniai
„Arduino“žaidimų valdiklis su žibintais, reaguojančiais į jūsų vienybės žaidimą :: 24 žingsniai

Video: „Arduino“žaidimų valdiklis su žibintais, reaguojančiais į jūsų vienybės žaidimą :: 24 žingsniai

Video: „Arduino“žaidimų valdiklis su žibintais, reaguojančiais į jūsų vienybės žaidimą :: 24 žingsniai
Video: Arduino Led valdymas 2024, Lapkritis
Anonim
„Arduino“žaidimų valdiklis su šviesomis, reaguojančiomis į jūsų vienybės žaidimą
„Arduino“žaidimų valdiklis su šviesomis, reaguojančiomis į jūsų vienybės žaidimą

Pirmiausia aš tai parašiau žodžiu. Tai pirmas kartas, kai naudoju instrukciją, todėl kiekvieną kartą, kai sakau: parašykite kodą taip, kad žinotumėte, jog turiu omenyje paveikslėlį šio veiksmo viršuje.

Šiame projekte aš naudoju 2 arduino, kad paleisčiau 2 atskirus kodo bitus, nes turėjau problemų, kad jis veiktų tik su vienu

Tai yra „Uno“ir „Leonardo“

iš viso to jums reikės norint įgyvendinti šį projektą.

· 7 mygtukai

· 23 trumpikliai

· 1 arduino Leonardo + USB kabelis

· 4 rezistoriai · 4 LED

· 1 arduino uno + USB kabelis

· 2 duonos lentos

1 žingsnis: Valdymo mygtukų prijungimas prie „Arduino“

Valdymo mygtukų prijungimas prie „Arduino“
Valdymo mygtukų prijungimas prie „Arduino“

Ko jums reikia norint sujungti šią dalį:

· 7 mygtukai

· 14 trumpiklių

· 1 arduino Leonardo + USB kabelis

· Bandomoji Lenta

Mygtukus yra gana paprasta prijungti, tačiau jie gali greitai tapti netvarka, kad būtų rodoma vaizdo forma.

· Pirmiausia padėkite mygtukus tose vietose, kurias pažymėjau aukščiau esančiame paveikslėlyje.

· Antra, norite prijungti megztinį iš arduino Leonardo žemės lizdo į minusinę duonos lentos eilę.

· Dabar prijunkite džemperius iš bet kurios minuso eilutės vietos iki eilutės, kuri atitinka jūsų dešiniojo mygtuko kaištį. tai maitins jį energija.

· Toliau norite prijungti trumpąjį laidą iš eilės, kuri atitinka kairįjį mygtuko kaištį, prie „Leonardo“skaitmeninių įvesties angų. Čia esantiems mygtukams naudojau 2 - 3 - 4 - 5 - 6 - 7- 8 lizdą

Aš parodžiau tik laidą, einantį į vaizdo įvestį 8, nes tai tampa labai netvarkingas vaizdas, rodantis visus laidus, kertančius vienas kitą.

2 žingsnis: „Arduino Leonardo“kodavimas:

„Arduino Leonardo“kodavimas
„Arduino Leonardo“kodavimas

Taigi norėčiau pasakyti, kodėl aš tam naudoju Leonardo. Dėl to, kad „Uno“neturi tam tikro lusto, kompiuteris jį atpažįsta kaip USB įvesties įrenginį. Panašiai kaip klaviatūra. Tai leidžia mums padaryti kažką, kas palengvina mūsų, kaip šio projekto programuotojų, gyvenimą. Klaviatūros emuliacija. Mes apgaudinėsime kompiuterį manydami, kad spaudžiame tam tikrus klaviatūros klavišus, kai iš tikrųjų spaudžiame savo valdiklio mygtukus.

Dabar aš eisiu, kaip jūs žingsnis po žingsnio galvojote apie kodą.

Pirmiausia viršuje įtraukiame klaviatūrą.h. Tai leis mums naudoti klaviatūros funkcijas, kurias naudosime savo kode.

3 žingsnis:

Vaizdas
Vaizdas

Tada turime apibrėžti skaitmeninius įvesties lizdus, kuriuos ketiname naudoti

Leonardo už kiekvieną mygtuką.

Aš taip pat pavadinau kiekvieną iš jų pagal raktą, kuriuo ketinu sekti.

4 žingsnis:

Vaizdas
Vaizdas

Iš ten mes einame į sąrankos funkciją. Tai pasakoja

arduino, ką jis daro paleidžiant.

pirmiausia parašome Serial.begin, kuris atidarys nuoseklųjį prievadą ir nustatys duomenų perdavimo spartą iki 9600 bps

ir mes apibrėžiame, kad visi įvardyti kaiščiai yra įėjimai.

5 žingsnis:

Vaizdas
Vaizdas

Ir galiausiai parašome savo ciklo funkciją, kuri patikrins, ar

spaudžiami mygtukai ir pasakykite arduino, kaip į tai reaguoti.

Pirmiausia parašome „Keyboard.begin“, kuris pasakys arduino, kad jam reikia mūsų ieškoti naudojant klaviatūros funkcijas

6 žingsnis:

Vaizdas
Vaizdas
Vaizdas
Vaizdas
Vaizdas
Vaizdas

Tada prie kiekvieno mygtuko parašome teiginį „if/else“, kuris yra toks

Taigi, ką aš pasakiau arduino, čia yra: Jei valdiklyje spaudžiamas mano kairysis mygtukas, priverskite kompiuterį manyti, kad mes spaudžiame „a“klavišą, o jei taip nėra, leiskite manyti, kad mes paleisime raktą.

Jūs iš esmės kartojate šį kodo bloką kiekvienam valdiklio mygtukui. su kiekvieno kintamojo pakeitimais ir raktais, kuriuos kintamasis turi imituoti

7 žingsnis:

Vaizdas
Vaizdas

Raktai, kuriuos liepėme kompiuteriui pataikyti, yra W - A - S - D

yra beveik judėjimo kompiuteriniuose žaidimuose ir E-Q standartas, o tarpo klavišas, kuris šiame kode yra atpažįstamas kaip „“, yra mygtukai, kuriuos naudoju, norėdamas pasiimti-atleisti ir suaktyvinti žaidimą. Nedvejodami pakeiskite juos į bet kokius, jūsų manymu, žaidimui/valdikliui tinkančius raktus.

Tada galiausiai liepiame arduino sustabdyti patikrinimą, kuris Keyboard.end

8 žingsnis: judėjimo kodavimas vienybėje:

Kodavimo judėjimas vienybėje
Kodavimo judėjimas vienybėje

Pirmiausia leiskite man pasakyti, kad tai darau 2d žaidimui

pavyzdžiai, kuriuos pamatysite, yra sukurti tam. Daugiausia reiškia, kur aš naudoju vektorių2, jei dirbate 3D, naudosite vektorių3. nes jums reikia nerimauti dėl papildomo 3D judesio aspekto.

Dabar priežastis, kodėl aš naudojau klaviatūros emuliaciją arduino pusėje, yra ta, kad „Unity“turi kažką sukurto, kad atpažintų klaviatūros klavišus, kuriuos galime naudoti.

Jei atidarote projektą vieningai, eikite į Redaguoti -> Projekto nustatymai -> Įvestis. Inspektoriuje galite pamatyti, kaip jis įjungia įvesties tvarkyklę. Kur spustelėjus ašis, galite pamatyti visą krūvą įvesties pavadinimų, kurie paprastai naudojami kompiuterių valdikliams, tokiems kaip dabar. Dvi įvestys, kurias naudosime, yra horizontalios ir vertikalios, kurios patikrins, ar atspėjote, ar tai W-A-S-D.

Pirmiausia norite sukurti objektą savo vienybės scenų hierarchijoje, kuris bus jūsų žaidėjas. Mano atveju, tai linksmas mažas vaikinas. Tai gali būti viskas, ko jums reikia, bet savo žaidimo tikslu aš padariau šį vaikiną.

9 veiksmas:

Vaizdas
Vaizdas

Jūs norite duoti šiam žaidėjui 2 dalykus. Dėžės susidūrėjas 2d ir

„Rigidbody 2d“ir redaguokite juos taip, kad būtų panašūs į aukščiau esantį vaizdą.

10 veiksmas:

Vaizdas
Vaizdas

Tada norite patekti į savo projektų aplanką ir sukurti

C# scenarijus. Kurį pavadinau „PlayerMovement“.

Šiame scenarijuje jūs apibrėžsite 2 kintamuosius. Viešas plūdė, kurią aš vadinu „moveSpeed“. Kuris nulems, kaip greitai eisi. Ir privatus „Rigidbody2D“, kurį aš vadinu „RigidPlayer“. Kuris ieškos jūsų žaidėjų tvirto kūno.

Nepamirškite patekti į savo vienybės redaktorių, spustelėkite savo grotuvą ir pridėkite šį naują scenarijų, vilkite jį į inspektorių ir nustatykite „moveSpeed“skaičiaus reikšmę.

11 veiksmas:

Vaizdas
Vaizdas

dabar savo „Start“() norite padaryti vieną dalyką ir tai padaryti

įsitikinkite, kad jūsų „RigidPlayer“gali rasti jūsų mokėtojo standųjį kūną 2d. Tai galite padaryti naudodami šią kodo eilutę:

12 žingsnis:

Vaizdas
Vaizdas

Tada pereiname prie atnaujinimo (). Štai kur mes einame

kad žaidėjas judėtų.

mes tai darome su gana paprastu teiginiu, kuriame bus apžvelgti neigiami ir teigiami raktai iš horizontalių (AD) ir vertikalių (SW) ir pritaikyti tai kaip skaičių, kad priverstinai uždėsime savo standųjį kūną 2d, kad įstumtume savo žaidėją kryptis. Šis skaičius bus padaugintas iš kintamojo „moveSpeed“.

13 žingsnis:

Vaizdas
Vaizdas

Galiausiai norite įsitikinti, kad jūsų grotuvas nustoja judėti

nieko nespaudi. Tau tai patinka:

Dabar, jei norite naudoti bet kuriuos kitus 3 mygtukus, kad tai padarytumėte naudodami šį if: if (Input. GetKeyDown (Keycode. Space))

tarpo klavišą ir vietoj tarpo įdėkite kitų klavišų raidę, kurią pasirinkote naudoti kitiems klavišams.

14 žingsnis: prijunkite šviesas prie „Arduino“

Šviesų prijungimas prie Arduino
Šviesų prijungimas prie Arduino

·

Ko jums reikia norint sujungti šią dalį:

· 9 jungiamieji laidai

· 4 rezistoriai

· 4 šviesos diodai

· 1 arduino uno + USB kabelis

· Bandomoji Lenta

Žibintų prijungimas bus atliekamas per „Uno“.

Galų gale jis atrodys taip, kaip aukščiau pateiktas vaizdas:

Prijunkite rezistorius prie ilgosios šviesos diodų pusės. Tada prijunkite trumpiklį nuo skaitmeninio kaiščio numerio ant uno prie rezistorių. šiuo atveju naudojau skaitmeninius kaiščių lizdus 9 -10 -11 -12, šie skaičiai bus svarbūs, kai gausime žibintų kodą.

Iš ten norite prijungti megztinį nuo „arduino Uno“antžeminio lizdo iki lentos vietos, kaip matyti iš juodos vielos aukščiau esančiame paveikslėlyje.

Tada norite, kad 4 trumpikliai būtų nukreipti į trumpą kiekvieno šviesos diodo galą

15 žingsnis: „Arduino Uno“kodavimas

„Arduino Uno“kodavimas
„Arduino Uno“kodavimas

Gerai, pirmiausia mes vėl nustatysime savo kintamuosius

Taigi pirmiausia kokius skaitmeninius įvestis naudojame žibintams. Ir mes padarysime anglišką pavadinimą „myCol“[20]

16 žingsnis:

Vaizdas
Vaizdas

Tada sąrankoje norime vėl atlikti „Serial.bin“. Įjunkite visus mūsų šviesos diodus ir išjunkite juos paleidžiant.

17 žingsnis:

Vaizdas
Vaizdas

Ir galiausiai norite parašyti savo ciklo funkciją.

Dėl to „Arduino“skaitys visus serijinius duomenis, kol įvyks vienas iš dviejų įvykių. Aptiktas eilutės tiekimo simbolis; tai identifikuojama pagal lf, kuris nustatytas į 10 ir yra pirmasis argumentas, arba buvo perskaityta tam tikra baitų dalis. Tai yra trečiasis argumentas ir šiame pavyzdyje nustatytas tik vienas baitas. Duomenys saugomi kintamajame „myCol“, kuris nustatytas kaip „char“ir 20. Arba kitas būdas tai paaiškinti yra Serial.readBytesUntil (terminatorCharacter, buffer, byteLimit);

Ir jei teiginiai užtikrins, kad kai vienybė duos signalą, užsidegs tam tikros lemputės. Šiuo atveju aš gavau 4 skirtingų spalvų lemputes, todėl vienybę siunčiu g, kad žalias šviesos diodas įsijungtų, b - mėlynas, r - raudonas, o y - geltonas šviesos diodas.

18 žingsnis: Šviesos kodavimo vienybės pusė:

Kodavimo žibintų vienybės pusė
Kodavimo žibintų vienybės pusė

Pirmiausia, prieš pradėdami tai daryti, du dalykai.

1. savo arduino kodavimo programoje eikite į Įrankiai -> Uostas -> ir patikrinkite, kuris COM yra jūsų un. Mano atveju jos COM3 (tai bus svarbu kode)

2. vienybėje Eikite į Redaguoti -> Projekto nustatymai -> Žaidėjas, tada inspektoriuje spustelėkite kitus nustatymus, eikite į Api suderinamumo lygį ir perjunkite jį iš. NET 2.0 potinklio į tiesiog. NET 2.0

Gerai, kad padaryta. Įeikime į tai.

Dešiniuoju pelės mygtuku spustelėkite savo hierarchiją ir spustelėkite Sukurti tuščią.

Tai bus tuščias žaidimo objektas, kuris tiesiog egzistuos jūsų žaidime, kad mums būtų pateiktas vienas scenarijus. Aš pavadinau šį objektą Init.

19 žingsnis:

Vaizdas
Vaizdas

Tada eikite į savo projektų skirtuką ir sukurkite naują C# scenarijų

ir pavadinkite tai siuntimu.

Pirmas dalykas, kurį jūs darote, yra parašyti šias eilutes kodo naudojimo skiltyse:

naudojant System. IO. Ports;

naudojant „System. Threading“;

todėl galime naudoti kintamąjį „SerialPort“

20 žingsnis:

Vaizdas
Vaizdas

šiame scenarijuje mes sudarysime šiuos kintamuosius. Dabar atkreipkite dėmesį, kad aš gavau COM3, tai jums gali būti kitaip, kaip aptarėme šio žingsnio pradžioje. Jei tai yra, pakeiskite 3 numeriu, kurį jis jums pasakė.

21 žingsnis:

Vaizdas
Vaizdas

Pradžioje nurodome naudoti scenarijų „OpenConnection“

funkcija, kurią mes šiek tiek parašysime

atnaujinimas yra daugiau testas nei bet kas, bet jei norite jį įtraukti, tai bus tikrinami pranešimai, siunčiami „unity“. Galite sąžiningai į tai nekreipti dėmesio.

22 žingsnis:

Vaizdas
Vaizdas

Gerai dabar šiai „OpenConnection“funkcijai. Tai tik didelis

jei/kitas teiginys, kuris palaiko ryšį, tiesiog nukopijuokite jį kaip parašytą ir jums viskas bus gerai.

23 žingsnis:

Vaizdas
Vaizdas

Dabar prisiminkite iš „arduino“kodo, kurį aš patikrinau

signalizuoja, kad vienybė jai pasiųs.

nu čia tai atsitinka. Mano atveju aš prijungiau 4 šviesas, todėl parašiau 4 funkcijas, kurios yra labai paprastos. Viskas, ką jie daro, yra tada, kai jiems paskambina, jie siunčia laišką arduino. Kai arduino gauna tą raidę, ji uždega šviesą, atitinkančią tą raidę.

24 žingsnis:

Vaizdas
Vaizdas

Jums gali kilti klausimas, kaip priversti jį taip pavadinti

funkcija? Na, jūs tai darote naudodami vieną paprastą eilutę bet kuriame kitame savo žaidime naudojamame c# scenarijuje. Siunčiamas. VardasFunkcija čia ();. Pavyzdžiui, mano žaidime žaidėjui pavesta surinkti 4 spalvotus rutuliukus. Taigi aš parašiau nedidelį scenarijų, kuris užtikrina, kad kai jis priartėja prie vieno ir paspaudžia dešinį mygtuką, jis jį paima ir jis siunčia arduino signalą, kad šiuo atveju buvo paimta geltona rutulė. Kad tai žinotų, gerai, aš turiu įjungti geltoną šviesos diodą:

Galite įdėti šią kodo eilutę bet kur, kur norite. Jei norite, kad jis užsidegtų žaidimo pradžioje, įjunkite jį į pradžios funkciją. Jei norite, kad jis užsidegtų, kai jis miršta, įtraukite tai į jūsų funkciją žaidėjų mirtimi. Eksperimentuokite šiek tiek. Aš pasirenku, kad žibintai taptų savotišku ui elementu už žaidimo ribų, kad galėčiau sekti gautus rutulius, kuriuos turite surinkti, neperkraudami ekrano.

Rekomenduojamas: