INHOUDSOPGAWE:

Arduino -spelbeheerder met ligte wat reageer op u eenheidspeletjie :: 24 stappe
Arduino -spelbeheerder met ligte wat reageer op u eenheidspeletjie :: 24 stappe

Video: Arduino -spelbeheerder met ligte wat reageer op u eenheidspeletjie :: 24 stappe

Video: Arduino -spelbeheerder met ligte wat reageer op u eenheidspeletjie :: 24 stappe
Video: Review of 20A DC 10-60V PWM Motor Speed Controller 2024, Desember
Anonim
Arduino -spelbeheerder met ligte wat reageer op u eenheidspeletjie
Arduino -spelbeheerder met ligte wat reageer op u eenheidspeletjie

Eerstens het ek hierdie ding in woord geskryf. Dit is die eerste keer dat ek instruksies gebruik, dus as ek sê: skryf kode uit, so weet dat ek na die prentjie bo -aan die stap verwys.

In hierdie projek gebruik ek 2 arduino's om 2 aparte stukkies kode uit te voer, aangesien ek probleme ondervind het om dit net met een te laat werk

Dit is die Uno en die Leonardo

in totaal is dit wat u nodig het om hierdie projek op die bord te sit.

· 7 drukknoppies

· 23 springdrade

· 1 arduino Leonardo + usb -kabel

· 4 weerstande · 4 LED’s

· 1 arduino uno + usb -kabel

· 2 broodborde

Stap 1: Sluit die beheerknoppies aan op Arduino

Sluit die beheerknoppies aan op Arduino
Sluit die beheerknoppies aan op Arduino

Wat u nodig het om hierdie deel aan te sluit:

· 7 drukknoppies

· 14 springdrade

· 1 arduino Leonardo + usb -kabel

· Broodbord

Die knoppies is redelik eenvoudig om aan te sluit, maar kan vinnig 'n gemors word om in beeldvorm te vertoon.

· Plaas eers die drukknoppies in die posisies wat ek op die prent hierbo gemerk het.

· Tweedens wil u 'n trui uit die grondgleuf op die arduino Leonardo in die minus -ry van die broodbord aansluit.

· Nou kan u springers van oral op die minus -ry aansluit by die ry wat in lyn is met die regter pen van u druk op die knoppie. dit sal krag daaraan voed.

· Vervolgens wil u 'n jumperdraad van 'n ry wat in lyn is met die linker pen van u drukknop, aan die digitale inganggleuwe van Leonardo koppel. Vir die knoppies hier het ek slot 2 - 3 - 4 - 5 - 6 - 7- 8 gebruik

Ek het net gewys hoe die draad na ingang 8 op die beeld gaan, want dit word 'n baie morsige prentjie om vir jou al die drade te wys wat mekaar kruis.

Stap 2: Kodering van die Arduino Leonardo:

Kodering van die Arduino Leonardo
Kodering van die Arduino Leonardo

Om u te vertel waarom ek Leonardo hiervoor gebruik. Dit is omdat dit 'n sekere chip het wat die Uno nie het nie, wat die rekenaar laat herken as 'n usb -invoertoestel. Net soos 'n sleutelbord. Dit stel ons in staat om iets te doen wat ons lewens as programmeerders vir hierdie projek baie makliker maak. Sleutelbordemulasie. Ons sal die rekenaar mislei om te dink dat ons sekere sleutels op die sleutelbord druk terwyl ons in werklikheid op die knoppies op ons beheerder druk.

Nou gaan ek stap, jy het die kode stap vir stap gedink.

Eerstens, bo -aan, sluit ons Keyboard in. H. Dit sal ons toelaat om die sleutelbordfunksies wat ons in ons kode gaan gebruik, te gebruik.

Stap 3:

Beeld
Beeld

Dan moet ons die digitale invoergleuwe definieer wat ons op die

Leonardo vir elke knoppie.

Ek het elkeen ook vernoem na die sleutel wat ek gaan navolg.

Stap 4:

Beeld
Beeld

Van daar af kom ons in die opstelfunksie. Dit vertel die

arduino wat dit doen by die aanvang.

eers skryf ons die Serial.begin wat die seriële poort oopmaak en die datatempo op 9600 bps stel

en ons definieer dat almal penne genoem word as insette.

Stap 5:

Beeld
Beeld

En uiteindelik skryf ons ons lusfunksie wat sal kyk of

knoppies word ingedruk en vertel die arduino hoe om daarop te reageer.

Eerstens skryf ons Keyboard.begin, wat vir arduino sal vertel dat hy na ons moet kyk met behulp van sleutelbordfunksies

Stap 6:

Beeld
Beeld
Beeld
Beeld
Beeld
Beeld

Dan skryf ons vir elke knoppie 'n if/else -stelling wat so lyk

Wat ek hier vir arduino gesê het, is: as my linkerknoppie op die kontroleerder ingedruk word, laat die rekenaar dink dat ons op die "a" -toets druk, en as dit nie die geval is nie, laat ons dink dat ons die sleutel losgelaat het.

U herhaal basies hierdie blok kode vir elke knoppie op u beheerder. met veranderings vir elke veranderlike en die sleutels wat die veranderlike moet navolg

Stap 7:

Beeld
Beeld

Die sleutels wat ons vir die rekenaar gesê het om hier te slaan, is W - A - S - D wat

Dit is amper die standaard vir beweging in rekenaarspeletjies en E-Q-en die spasiebalk, wat in hierdie kode erken word as '' die knoppies wat ek gebruik om op te tel-om dit in my spel af te maak en af te vuur. Verander dit gerus na die sleutels wat u voel beter werk vir u spel/kontroleerder.

Dan sê ons laastens vir die arduino om die tjek wat Keyboard.end eindig, te stop

Stap 8: Koderingsbeweging in eenheid:

Koderingsbeweging in eenheid
Koderingsbeweging in eenheid

Laat ek u eers vertel dat ek dit vir 'n 2d -speletjie maak

die voorbeelde wat u gaan sien, is daarvoor gebou. Beteken hoofsaaklik waar ek vector2's gebruik, as u in 3d werk, gebruik u vector3's. omdat u u moet bekommer oor die ekstra dimensie van beweging in 3d.

Die rede waarom ek Keyboard -emulasie aan die arduino -kant gebruik het, is omdat Unity iets ingebou het om sleutels op die sleutelbord te herken wat ons kan gebruik.

As u u projek in eenheid oopmaak, gaan na Edit -> Project settings -> Input. U kan by u inspekteur sien dat dit die invoerbestuurder opstart. As u op Axes klik, kan u 'n hele klomp invoername sien oopmaak wat gewoonlik gebruik word vir rekenaarbeheerders soos dié wat ons nou maak. Die twee insette wat ons gaan gebruik, is horisontaal en vertikaal, wat seker maak dat u dit raai W-A-S-D.

Eerstens wil u 'n voorwerp maak in u eenheidstoneelhiërargie wat u speler sal wees. In my geval, hierdie prettige outjie. Dit kan alles wees wat u nodig het, maar vir die doel van my spel het ek hierdie man gemaak.

Stap 9:

Beeld
Beeld

U wil hierdie speler 2 dinge gee. 'N Boksbotser 2d en

a Rigidbody 2d en wysig dit soos in die prent hierbo.

Stap 10:

Beeld
Beeld

Dan wil u in u gids met projekte gaan en 'n

C# script. Wat ek PlayerMovement genoem het.

In hierdie skrif gaan u 2 veranderlikes definieer. 'N Openbare dryf wat ek moveSpeed noem. Dit sal bepaal hoe vinnig u gaan. En 'n privaat Rigidbody2D wat ek RigidPlayer noem. Dit sal na u spelers se rigiede liggaam soek.

Moenie vergeet om by u eenheidsredakteur te klik nie, klik op u speler om hierdie nuwe skrif by te voeg deur dit na die inspekteur te sleep en 'n getalwaarde vir moveSpeed in te stel.

Stap 11:

Beeld
Beeld

nou in u Start () wil u een ding doen en dit is om

maak seker dat u RigidPlayer u betaler rigidbody 2d kan vind. U doen dit met die volgende reël kode:

Stap 12:

Beeld
Beeld

Dan gaan ons oor na die opdatering (). Hier is waarheen ons op pad is

om die speler te laat beweeg.

ons doen dit met 'n redelik eenvoudige as -verklaring wat na die negatiewe en positiewe sleutels van die horisontale (AD) en vertikale (SW) kyk en dit as 'n getal toepas om ons te dwing, ons gaan ons starbody 2d aantrek om ons speler in te druk 'n rigting. Die getal word vermenigvuldig met die moveSpeed -veranderlike.

Stap 13:

Beeld
Beeld

Uiteindelik wil u seker maak dat u speler nie meer beweeg nie

jy druk niks. Dit hou jy so van:

As u nou u drie ander knoppies vir enigiets wil gebruik, doen u dit met hierdie if -verklaring: if (Input. GetKeyDown (Keycode. Space))

vir die spasiebalk en plaas in plaas van spasie die letter van die ander sleutels wat u gekies het om vir die ander sleutels te gebruik.

Stap 14: Sluit ligte aan op Arduino

Sluit ligte aan op Arduino
Sluit ligte aan op Arduino

·

Wat u nodig het om hierdie deel aan te sluit:

· 9 springdrade

· 4 weerstande

· 4 led’s

· 1 arduino uno + usb -kabel

· Broodbord

Die aansluiting vir die ligte word deur die Uno gedoen.

Dit sal uiteindelik soos hierdie prent hierbo lyk:

U maak die weerstande aan die lang kant van die LED's vas. En dan sluit u 'n trui aan van 'n digitale pennommer op die uno na die weerstande. in hierdie geval het ek digitale pengleuf 9 -10 -11 -12 gebruik, hierdie getalle sal relevant wees as ons by die kode vir die ligte kom.

Van daar af wil u 'n trui uit die grondgleuf op u Arduino Uno aan die plek op u bord koppel, soos gesien met die swart draad op die prent hierbo.

Dan wil u 4 springers hê wat aan die kort kant van elke LED lei

Stap 15: Kodering van die Arduino Uno

Kodering van die Arduino Uno
Kodering van die Arduino Uno

Goed, eers gaan ons ons veranderlikes weer definieer

Dus, eers watter digitale insette ons vir ons ligte gebruik. En ons gaan 'n char maak met die naam myCol [20]

Stap 16:

Beeld
Beeld

Dan wil ons in die opstelling weer die Serial.begin doen. Sit al ons LED's op Output en skakel almal uit tydens die aanvang.

Stap 17:

Beeld
Beeld

En uiteindelik wil u u lusfunksie skryf.

Dit sal veroorsaak dat die Arduino alle data wat deur die reeks ingekom het, lees, totdat een van die twee gebeurtenisse plaasvind. Óf 'n reëlvoerkarakter word opgespoor; dit word geïdentifiseer deur lf wat op 10 gestel is en die eerste argument is of 'n sekere hoeveelheid grepe ingelees is. Dit is die derde argument en vir hierdie voorbeeld is dit slegs een byte. Die data word gestoor in die veranderlike myCol, wat op char is gestel en 'n limiet van 20. In readBytesUntil is dit die tweede argument. Of 'n ander manier om dit te verduidelik is Serial.readBytesUntil (terminatorCharacter, buffer, byteLimit);

En die if -verklarings sal verseker dat sekere ligte aanskakel wanneer eenheid die sein gee. In hierdie geval het ek 4 ligte in verskillende kleure, so ek laat eenheid g stuur vir die groen LED om aan te skakel, b vir die blou LED om aan te skakel, r vir die rooi LED en die y vir die geel LED.

Stap 18: Koderingsligte Eenheidskant:

Koderingligte Eenheidskant
Koderingligte Eenheidskant

Oke twee dinge eers voordat ons hierby ingaan.

1. Gaan in u arduino -koderingsprogram na Tool -> Port -> en kyk vir my watter COM u uno is. In my geval is dit COM3 (dit is belangrik in die kode)

2. in eenheid Gaan na Bewerk -> Projekinstellings -> Speler, klik dan in die inspekteur op ander instellings na Api -verenigbaarheidsvlak en skakel dit oor van. NET 2.0 subnet na net. NET 2.0

Oke dis klaar. Kom ons gaan daarin.

Regskliek op u hiërargie en klik op Maak leeg.

Dit is 'n leë spelvoorwerp wat net in u spel sal bestaan om een skrif vir ons te hou. Ek het hierdie voorwerp Init genoem.

Stap 19:

Beeld
Beeld

Gaan dan na u oortjie projekte en skep 'n nuwe C# -skrif

en noem dit Stuur.

Die eerste ding wat u doen, is om dit op reëls in die gebruikende gedeeltes van u kode te skryf:

met behulp van System. IO. Ports;

met behulp van System. Threading;

dit maak dat ons die SerialPort -veranderlike kan gebruik

Stap 20:

Beeld
Beeld

in hierdie skrif gaan ons die volgende veranderlikes maak. Let wel, ek het COM3, dit kan vir u anders wees, soos ons aan die begin van hierdie stap bespreek het. As dit is, vervang die 3 met die nommer wat dit vir u gesê het.

Stap 21:

Beeld
Beeld

Aan die begin vertel ons dat die script OpenConnection moet gebruik

funksie wat ons 'n bietjie gaan skryf

die opdatering is meer 'n toets as alles, maar as u dit wil insluit, is dit om te toets dat boodskappe na eenheid gestuur word. U kan dit eerlik ignoreer.

Stap 22:

Beeld
Beeld

Oke nou vir hierdie OpenConnection -funksie. Dit is net 'n groot

as/anders -verklaring wat die verbinding oop hou, kopieer dit net soos geskrywe, en dit sal goed gaan.

Stap 23:

Beeld
Beeld

Onthou nou van die arduino -kode waarna ek dit laat kyk het

dui daarop dat eenheid dit sal stuur.

wel, dit is waar dit gebeur. In my geval het ek 4 ligte aangeskakel, en ek het 4 funksies geskryf wat baie eenvoudig is. Al wat hulle doen, is as hulle gebel word, stuur hulle 'n brief na arduino. As arduino die letter kry, brand die lig wat ooreenstem met die letter.

Stap 24:

Beeld
Beeld

U wonder miskien hoe ek dit kan noem

funksie? U doen dit met 'n eenvoudige reël in enige van u ander c# -skrifte wat u vir u spel gebruik. Stuur. NaamFunksie hier ();. Byvoorbeeld, in my spel moet die speler 4 gekleurde bolle versamel. So ek het 'n klein skrif geskryf wat verseker dat wanneer hy naby een kom en op die regte knoppie druk, hy dit optel en dit stuur 'n sein na die arduino dat die geel bol in hierdie geval opgetel is. Sodat dit weet, moet ek die geel LED aanskakel:

U kan hierdie reël kode oral plaas waar u wil. As u wil hê dat dit moet brand as die spel begin, plaas dit dan in die beginfunksie. Wil hê dat dit moet oplig wanneer hy sterf, plaas dit in u funksie vir die dood van die spelers. Eksperimenteer 'n bietjie. Ek kies om die ligte 'n soort ui -element buite die spel te maak om tred te hou met die bolle wat u moet versamel sonder om op die skerm te beland.

Aanbeveel: