Tartalomjegyzék:

Arduino játékvezérlő lámpákkal, amelyek reagálnak az Unity játékra :: 24 lépés
Arduino játékvezérlő lámpákkal, amelyek reagálnak az Unity játékra :: 24 lépés

Videó: Arduino játékvezérlő lámpákkal, amelyek reagálnak az Unity játékra :: 24 lépés

Videó: Arduino játékvezérlő lámpákkal, amelyek reagálnak az Unity játékra :: 24 lépés
Videó: Arduino joystick LCD game #shorts 2024, November
Anonim
Arduino játékvezérlő fényekkel, amelyek reagálnak az Unity játékra
Arduino játékvezérlő fényekkel, amelyek reagálnak az Unity játékra

Először szóban írtam le ezt a dolgot. Ez az első alkalom, hogy az utasításokat használom, ezért amikor azt mondom: írja ki a kódot, így tudja, hogy a lépés tetején lévő képre utalok.

Ebben a projektben 2 arduino -t használok 2 külön kódrészlet futtatására, mivel némi problémám akadt, hogy csak egyvel működjön

Ezek az Uno és a Leonardo

Összességében ennyi kell a projekt lebonyolításához.

· 7 nyomógomb

· 23 áthidaló vezeték

· 1 arduino Leonardo + usb kábel

· 4 ellenállás · 4 led

· 1 arduino uno + usb kábel

· 2 kenyeretábla

Lépés: A vezérlőgombok csatlakoztatása az Arduino -hoz

A vezérlőgombok csatlakoztatása Arduino -hoz
A vezérlőgombok csatlakoztatása Arduino -hoz

Amire szükséged lesz a rész összekapcsolásához:

· 7 nyomógomb

· 14 áthidaló vezeték

· 1 arduino Leonardo + usb kábel

· Kenyeretábla

A gombok meglehetősen egyszerűen csatlakoztathatók, de gyorsan rendetlenséggé válhatnak, hogy kép formájában megjelenjenek.

· Először helyezze a nyomógombokat a fenti képen megjelölt pozíciókba.

· Másodsorban egy jumper -t szeretne csatlakoztatni az arduino Leonardo földi nyílásából a kenyértábla mínusz sorába.

· Most a mínusz sor bármely pontjáról összekapcsolhatja az áthidalókat ahhoz a sorhoz, amely egy vonalban van a nyomógombbal. ez táplálja majd az erőt.

· Ezután egy olyan jumper vezetéket szeretne csatlakoztatni egy sorból, amely összhangban van a nyomógomb bal gombjával a Leonardo digitális bemeneti nyílásaihoz. Az itt található gombokhoz a 2 - 3 - 4 - 5 - 6 - 7-8 nyílást használtam

Csak azt a vezetéket mutattam be, amely a 8 -as bemenetre megy a képen, mert nagyon rendetlen kép lesz megmutatni az összes vezetéket, amelyek keresztezik egymást.

2. lépés: Az Arduino Leonardo kódolása:

Az Arduino Leonardo kódolása
Az Arduino Leonardo kódolása

Tehát, hogy elmondjam, miért használom Leonardót erre. Ez azért van, mert van egy bizonyos chipje, amelyet az Uno nem, ezért a számítógép felismeri azt USB -bemeneti eszközként. Mintha billentyűzet lenne. Ez lehetővé teszi számunkra, hogy olyan dolgokat tegyünk, amelyek pokolian megkönnyítik ennek a projektnek a programozói életét. Billentyűzet emuláció. Azt fogjuk becsapni a számítógépet, hogy azt gondolja, hogy a billentyűzet bizonyos gombjait nyomjuk meg, miközben valójában a vezérlőnk gombjait nyomjuk meg.

Most megyek, hogy lépésről lépésre gondoltad a kódot.

Először a tetején szerepel a Keyboard.h. Ez lehetővé teszi számunkra a billentyűzet funkciók használatát, amelyeket a kódunkban fogunk használni.

3. lépés:

Kép
Kép

Ezután meg kell határoznunk a digitális bemeneti nyílásokat, amelyeket a készüléken használni fogunk

Leonardo minden gombhoz.

Mindegyiket el is neveztem a kulcs után, amelyet utánozni fogok.

4. lépés:

Kép
Kép

Innen belépünk a beállítási funkcióba. Ez elmondja a

arduino mit csinál az indításkor.

Először írjuk meg a Serial.begin parancsot, amely megnyitja a soros portot és 9600 bps -ra állítja az adatsebességet

és definiáljuk, hogy az összes nevezett csap bemenet.

5. lépés:

Kép
Kép

És végül megírjuk a ciklusfüggvényünket, amely ellenőrzi, hogy van -e

gombokat megnyomják, és mondják meg az arduino -nak, hogyan kell erre reagálni.

Először írjuk be a Keyboard.begin parancsot, amely azt fogja mondani az arduino -nak, hogy a billentyűzet funkcióival kell vigyáznia ránk

6. lépés:

Kép
Kép
Kép
Kép
Kép
Kép

Ezután minden gombhoz írunk egy if/else utasítást, amely így megy

Tehát amit itt mondtam az arduino -nak: Ha a bal gombot nyomom a vezérlőn, akkor a számítógép azt gondolja, hogy megnyomjuk az „a” gombot, és ha nem így van, akkor azt gondoljuk, hogy elengedtük a kulcsot.

Alapvetően megismétli ezt a kódblokkot a vezérlő minden gombjához. minden változó és a kulcsok változásaival, amelyeket emulálni kell

7. lépés:

Kép
Kép

A billentyűk, amiket a számítógépnek mondtunk, hogy itt üssenek, W - A - S - D, amelyek

nagyjából a számítógépes játékok és az E-Q mozgásának szabványai, és a szóköz, amely ebben a kódban "" -ként van felismerve, ezek a gombok, amelyeket felveszek-elvetem és elindítom a játékomban. Nyugodtan változtassa meg ezeket a gombokra, amelyekről úgy érzi, hogy jobban működik a játék/vezérlő számára.

Végül azt mondjuk az arduino -nak, hogy hagyja abba az ellenőrzést, melyik Keyboard.end

8. lépés: A mozgás kódolása egységben:

Kódolási mozgás egységben
Kódolási mozgás egységben

Először is hadd mondjam el, hogy ezt egy 2d -s játékhoz készítem

a példák, amelyeket látni fogsz, erre épültek. Főleg azt jelenti, hogy hol használom a vektor2 -ket, ha 3D -ben dolgozol, akkor a vektor3 -at fogod használni. mert aggódnia kell a mozgás extra dimenziója miatt a 3D -ben.

Most azért használtam a billentyűzet emulációt az arduino oldalon, mert az Unity beépített valamit a billentyűzet billentyűinek felismerésére, amelyeket használhatunk.

Ha egységben nyitja meg a projektet, lépjen a Szerkesztés -> Projektbeállítások -> Bevitel menüpontra. Láthatja az ellenőrében, hogy elindítja az inputkezelőt. Hol, ha a Tengerekre kattint, akkor egy csomó bemeneti név nyílik meg, amelyeket általában a PC -vezérlőkhöz használnak, mint például a most készülőket. A 2 bemenet, amelyet használni fogunk, a vízszintes és a függőleges, amelyek ellenőrzik, hogy W-A-S-D-re tippelt.

Először egy objektumot szeretne létrehozni az egység jelenetek hierarchiájában, amely a játékos lesz. Esetemben ez a vidám kis fickó. Ez lehet bármi, amire szüksége van, de a játékom céljára én alkottam ezt a fickót.

9. lépés:

Kép
Kép

2 dolgot szeretne adni ennek a játékosnak. Egy dobozütköző 2d és

a Rigidbody 2d -t, és szerkessze őket a fenti képhez hasonlóan.

10. lépés:

Kép
Kép

Ezután be kell lépnie a projektek mappájába, és létre kell hoznia egy

C# szkript. Amit PlayerMovementnek neveztem el.

Ebben a szkriptben 2 változót definiál. Nyilvános úszó, amelyet moveSpeednek nevezek. Ami meghatározza, hogy milyen gyorsan mész. És egy privát Rigidbody2D, amit RigidPlayernek hívok. Ami keresi a játékosok merev testét.

Ne felejtse el eljutni az egységszerkesztőjéhez, és kattintson a lejátszóra, majd adja hozzá ezt az új szkriptet, húzza az ellenőrhöz, és állítson be egy értéket a moveSpeed számára.

11. lépés:

Kép
Kép

most a Start () -ban egy dolgot akar tenni, és ez az

Győződjön meg róla, hogy a RigidPlayer megtalálja a fizető személyét 2d. Ezt a következő kódsorral teheti meg:

12. lépés:

Kép
Kép

Ezután továbblépünk a frissítéshez (). Itt tartunk

hogy a játékos mozogjon.

ezt egy meglehetősen egyszerű if állítással tesszük, amely megvizsgálja a vízszintes (AD) és a függőleges (SW) negatív és pozitív kulcsait, és ezt kényszerítő számként alkalmazzuk, és felhúzzuk a merev testünket 2d -re, hogy benyomjuk játékosunkat. egy irányt. Ezt a számot meg kell szorozni a moveSpeed változóval.

13. lépés:

Kép
Kép

Végül győződjön meg arról, hogy a lejátszó mikor mozog

nem nyomsz semmit. Ez így tetszik:

Most, ha a 3 másik gombját bármire használni szeretné, ha ezt az if utasítást használja: if (Input. GetKeyDown (Keycode. Space))

a szóközhöz, és a szóköz helyett írja be a többi billentyű betűjét, amelyet a többi billentyűhöz használ.

14. lépés: Fények csatlakoztatása Arduino -hoz

Fények csatlakoztatása Arduino -hoz
Fények csatlakoztatása Arduino -hoz

·

Amire szükséged lesz a rész összekapcsolásához:

· 9 áthidaló vezeték

· 4 ellenállás

· 4 led

· 1 arduino uno + usb kábel

· Kenyeretábla

A lámpák csatlakoztatása az Uno -n keresztül történik.

Végül a fenti képen fog kinézni:

Csatlakoztassa az ellenállásokat a LED -ek hosszú oldalához. Ezután csatlakoztasson egy jumper -t az uno -n lévő digitális PIN -számról az ellenállásokhoz. ebben az esetben a 9 -10 -11 -12 digitális tűhelyeket használtam, ezek a számok relevánsak lesznek, amikor eljutunk a fények kódjához.

Innen szeretne egy jumpert csatlakoztatni az arduino Uno földi nyílásából a táblán lévő helyre, amint az a fenti képen látható fekete vezetékkel látható.

Ezután azt szeretné, hogy 4 jumper vezessen az egyes LED -ek rövid végébe

15. lépés: Az Arduino Uno kódolása

Az Arduino Uno kódolása
Az Arduino Uno kódolása

Rendben, először újra meghatározzuk a változóinkat

Tehát először azt, hogy mely digitális bemeneteket használjuk lámpáinkhoz. És készítünk egy karaktert myCol [20] néven.

16. lépés:

Kép
Kép

Ezután a beállításban újra meg akarjuk csinálni a Serial.begin -t. Tegye az összes LED -t a kimenetre, és kapcsolja ki mindegyiket indításkor.

17. lépés:

Kép
Kép

És végül meg akarja írni a ciklusfüggvényét.

Ez arra készteti az Arduino -t, hogy olvassa be a soros úton beérkező adatokat, amíg a két esemény bekövetkezik. Vagy egy sor előtolás karakter észlelhető; ezt az lf azonosítja, amely 10 -re van állítva, és ez az első argumentum, vagy bizonyos számú bájt beolvasásra került. Ez a harmadik argumentum, és ebben a példában csak egy bájt van megadva. Az adatok a myCol változóban vannak tárolva, amely char -ra és 20 -ra van állítva. Vagy a magyarázat másik módja a Serial.readBytesUntil (terminatorCharacter, buffer, byteLimit);

És az if állítások biztosítják, hogy bizonyos lámpák kigyúljanak, amikor az egység jelzi. Ebben az esetben 4 különböző színű lámpát kaptam, így az unity g -t küldöm a zöld LED bekapcsolásához, b a kék LED bekapcsolásához, r a piros LED és y a sárga LED bekapcsolásához.

18. lépés: A fények kódolása Unity Side:

Kódlámpák Unity Side
Kódlámpák Unity Side

Oké 2 dolog, mielőtt belekezdünk ebbe.

1. az arduino kódolóprogramjában lépjen az Eszköz -> Port -> menüpontba, és ellenőrizze, hogy melyik COM -on van az uno. Esetemben a COM3 (ez fontos lesz a kódban)

2. egységben Menjen a Szerkesztés -> Projektbeállítások -> Lejátszó menüpontba, majd kattintson az Ellenőrzőben a többi beállításra, lépjen az Api kompatibilitási szintre, és váltsa át. NET 2.0 alhálózatról csak. NET 2.0 -ra

Oké ez kész. Menjünk bele.

Kattintson a jobb gombbal a hierarchiára, és kattintson az Üres létrehozása gombra.

Ez egy üres játékobjektum lesz, amely csak létezik a játékban, hogy egy szkriptet tartson számunkra. Ezt az objektumot Init -nek neveztem.

19. lépés:

Kép
Kép

Ezután lépjen a projektek lapra, és hozzon létre egy új C# szkriptet

és nevezzük küldésnek.

Első lépésként írja be ezeket a kódokat használó sorokba:

a System. IO. Ports használatával;

a System. Threading használatával;

így a SerialPort változót használhatjuk

20. lépés:

Kép
Kép

ebben a szkriptben a következő változókat készítjük. Most jegyezze meg, hogy itt kaptam a COM3 -at, ez lehet, hogy más lesz, mint ahogy ezt a lépés elején megbeszéltük. Ha ez van, cserélje ki a 3 -at az Ön által megadott számra.

21. lépés:

Kép
Kép

Kezdetben azt mondjuk, hogy a szkript OpenConnection

függvény, amelyet egy kicsit írni fogunk

a frissítés inkább teszt, mint bármi, de ha bele akarja foglalni, akkor az unitynek küldött tesztüzeneteket. Őszintén figyelmen kívül hagyhatta.

22. lépés:

Kép
Kép

Rendben most ezzel az OpenConnection funkcióval. Ez csak egy nagy

if/else utasítás, amely nyitva tartja a kapcsolatot, csak másolja le, mint írva, és rendben kell lennie.

23. lépés:

Kép
Kép

Most emlékezzen az arduino kódból, amelyet ellenőriztem

jelzi, hogy az egység küldeni fogja.

hát ez itt történik. Az én esetemben 4 lámpát kapcsoltam be, így 4 rendkívül egyszerű funkciót írtam. Csak annyit tesznek, hogy amikor hívnak, levelet küldenek az arduino -nak. Amikor az arduino megkapja ezt a betűt, akkor az adott betűnek megfelelő fényt világít.

24. lépés:

Kép
Kép

Lehet, hogy kíváncsi vagy rá, hogyan tudom ezt úgy hívni

funkció? Nos, ezt egyetlen egyszerű sorral teheti meg a játékhoz használt többi c# szkriptjében. Küldés. NameFunctionhere ();. Így például az én játékomban a játékos feladata 4 színes gömb összegyűjtése. Ezért írtam egy kis forgatókönyvet, amely biztosítja, hogy amikor az egyik közelébe ér, és megnyomja a jobb gombot, akkor felveszi, és az jelzést küld az arduino -nak, hogy ebben az esetben a sárga gömböt felvették. Annak érdekében, hogy tudja, ok, be kell kapcsolnom a sárga LED -et:

Ezt az egy sor kódot bárhová elhelyezheti, ahol csak akarja. Ha azt szeretné, hogy a játék indulásakor világítson, tegye a start funkcióba. Ha azt szeretné, hogy világítson, amikor meghal, tegye a funkciójába a játékosok haláláért. Kísérletezzen egy kicsit. Úgy döntök, hogy a lámpákat egyfajta ui elemmé teszem a játékon kívül, hogy nyomon követhessem a begyűjtött gömböket anélkül, hogy felborítanám a képernyőt.

Ajánlott: