Satura rādītājs:

Arduino spēļu kontrolieris ar gaismām, kas reaģē uz jūsu vienotības spēli :: 24 soļi
Arduino spēļu kontrolieris ar gaismām, kas reaģē uz jūsu vienotības spēli :: 24 soļi

Video: Arduino spēļu kontrolieris ar gaismām, kas reaģē uz jūsu vienotības spēli :: 24 soļi

Video: Arduino spēļu kontrolieris ar gaismām, kas reaģē uz jūsu vienotības spēli :: 24 soļi
Video: PS5 Pad (DualSense) connected to Arduino (PS5ゲームパッドとArduinoの通信) 2024, Novembris
Anonim
Arduino spēļu kontrolieris ar gaismām, kas reaģē uz jūsu vienotības spēli
Arduino spēļu kontrolieris ar gaismām, kas reaģē uz jūsu vienotības spēli

Vispirms es to uzrakstīju vārdos. Šī ir pirmā reize, kad izmantoju pamācību, tāpēc ikreiz, kad saku: uzrakstiet kodu tā, lai zinātu, ka es atsaucos uz attēlu šī soļa augšdaļā.

Šajā projektā es izmantoju 2 arduino, lai palaistu 2 atsevišķus koda bitus, jo man bija grūtības panākt, lai tas darbotos tikai ar vienu

Tie ir Uno un Leonardo

Kopumā tas ir tas, kas jums būs nepieciešams, lai pārietu uz šo projektu.

· 7 spiedpogas

· 23 džemperu vadi

· 1 arduino Leonardo + USB kabelis

· 4 rezistori · 4 LED

· 1 arduino uno + USB kabelis

· 2 maizes dēļi

1. solis: savienojiet vadības pogas ar Arduino

Vadības pogu savienošana ar Arduino
Vadības pogu savienošana ar Arduino

Lai savienotu šo daļu, jums būs nepieciešams:

· 7 spiedpogas

· 14 džemperu vadi

· 1 arduino Leonardo + USB kabelis

· Maizes dēlis

Pogas ir diezgan vienkārši savienojamas, taču tās var ātri kļūt par putru, lai tās parādītu attēla formā.

· Vispirms ievietojiet spiedpogas tajās pozīcijās, kuras es atzīmēju attēlā iepriekš.

· Otrkārt, jūs vēlaties savienot džemperi no zemes slota uz arduino Leonardo maizes dēļa mīnus rindā.

· Tagad jūs savienojat džemperus no jebkuras vietas mīnus rindā līdz rindai, kas atbilst jūsu spiedpogas labajam tapam. tas baros to ar spēku.

· Tālāk vēlaties savienot džemperu vadu no rindas, kas atbilst spiedpogas kreisajam tapam, Leonardo digitālajām ievades ligzdām. Šeit esošajām pogām es izmantoju slotu 2 - 3 - 4 - 5 - 6 - 7- 8

Vadā parādīju tikai attēla 8. ievadi, jo tas kļūst par ļoti netīru attēlu, lai parādītu visus vadus, kas šķērso viens otru.

2. darbība: Arduino Leonardo kodēšana:

Arduino Leonardo kodēšana
Arduino Leonardo kodēšana

Tāpēc es jums pastāstīšu iemeslu, kāpēc es izmantoju Leonardo. Tas ir tāpēc, ka tam ir noteikta mikroshēma, kuras Uno nav, tāpēc dators to atpazīst kā USB ievades ierīci. Līdzīgi kā ar tastatūru. Kas ļauj mums darīt kaut ko tādu, kas padara mūsu kā šī projekta programmētāju dzīvi elles daudz vieglāku. Tastatūras emulācija. Mēs ļausim datoram iedomāties, ka mēs nospiežam noteiktus tastatūras taustiņus, patiesībā nospiežot mūsu kontroliera pogas.

Tagad es staigāšu, jūs soli pa solim domājāt par kodu.

Vispirms augšpusē ir iekļauta tastatūra.h. Tas ļaus mums izmantot tastatūras funkcijas, kuras mēs izmantosim savā kodā.

3. darbība:

Attēls
Attēls

Tad mums ir jādefinē digitālās ievades vietas, kuras mēs izmantosim

Leonardo par katru pogu.

Es arī nosaucu katru no tiem pēc atslēgas, ar kuru es līdzināšos.

4. solis:

Attēls
Attēls

No turienes mēs nokļūstam iestatīšanas funkcijā. Tas stāsta

arduino, ko tas dara palaišanas laikā.

vispirms mēs rakstām Serial.begin, kas atvērs seriālo portu un iestatīs datu pārraides ātrumu līdz 9600 bps

un mēs definējam, ka visi nosaukti tapas ir ievadi.

5. darbība

Attēls
Attēls

Un visbeidzot mēs uzrakstām mūsu cilpas funkciju, kas pārbaudīs, vai

pogas tiek nospiestas un pasakiet arduino, kā uz to reaģēt.

Vispirms mēs rakstām Keyboard.begin, kas pateiks arduino, ka viņam ir jārūpējas par mums, izmantojot tastatūras funkcijas

6. darbība:

Attēls
Attēls
Attēls
Attēls
Attēls
Attēls

Tad katrai pogai mēs uzrakstām if/else paziņojumu, kas ir šāds

Tātad, ko es teicu arduino:

Jūs būtībā atkārtojat šo koda bloku katrai kontroliera pogai. ar izmaiņām katram mainīgajam un taustiņiem, kuriem ir jāatdarina

7. darbība:

Attēls
Attēls

Atslēgas, kuras mēs teicām datoram, lai šeit iesit, ir W - A - S - D kuras

ir diezgan daudz kustību standarts datorspēlēs un E-Q-un atstarpes taustiņš, kas šajā kodā ir atpazīts kā "", kuras ir pogas, kuras es izmantoju, lai paņemtu-atlaistu un aktivizētu savā spēlē. Jūtieties brīvi mainīt tos uz jebkuriem taustiņiem, kas, jūsuprāt, darbojas labāk jūsu spēlei/kontrolierim.

Visbeidzot mēs sakām arduino, lai apturētu pārbaudi, kura Keyboard.end

8. darbība: kustību kodēšana vienotībā:

Kodēšanas kustība vienotībā
Kodēšanas kustība vienotībā

Vispirms ļaujiet man jums pateikt, ka es to veidoju 2d spēlei

piemēri, kurus jūs redzēsit, ir paredzēti tam. Galvenokārt tas nozīmē, kur es izmantoju vektoru2, ja strādājat 3D formātā, jūs izmantosit vektoru3. jo jums būtu jāuztraucas par to, ka esmu 3D kustībā papildu dimensija.

Tagad iemesls, kāpēc es izmantoju tastatūras emulāciju arduino pusē, ir tāpēc, ka Unity ir kaut kas iebūvēts, lai atpazītu tastatūras taustiņus, kurus mēs varam izmantot.

Ja atverat savu projektu vienotībā, dodieties uz Rediģēt -> Projekta iestatījumi -> Ievads. Jūs varat redzēt savā inspektorā, ka tas sāk ievades pārvaldnieku. Ja, noklikšķinot uz asīm, var redzēt, ka tiek atvērts viss ievades nosaukumu kopums, ko parasti izmanto datoru kontrolieriem, piemēram, tiem, kurus mēs pašlaik veidojam. Divas ieejas, kuras mēs izmantosim, ir horizontālas un vertikālas, kuras pārbaudīja, vai jūs to uzminējāt W-A-S-D.

Vispirms jūs vēlaties izveidot objektu jūsu vienotības ainu hierarhijā, kas būs jūsu spēlētājs. Manā gadījumā es esmu šis jautrais puisis. Tas var būt viss, kas jums nepieciešams, bet savas spēles nolūkā es izveidoju šo puisi.

9. darbība

Attēls
Attēls

Jūs vēlaties dot šim spēlētājam 2 lietas. Kastes sadursme 2d un

a Rigidbody 2d un rediģējiet tos, lai tie būtu līdzīgi iepriekš redzamajam attēlam.

10. darbība:

Attēls
Attēls

Pēc tam vēlaties iedziļināties projektu mapē un izveidot

C# skripts. Ko es nosaucu par PlayerMovement.

Šajā skriptā jūs definēsit 2 mainīgos. Publisks pludiņš, ko es saucu par moveSpeed. Kas noteiks, cik ātri jūs brauksit. Un privāts Rigidbody2D, ko es saucu par RigidPlayer. Kas meklēs jūsu spēlētājus stingri.

Neaizmirstiet nokļūt vienotības redaktorā, noklikšķiniet uz atskaņotāja, lai pievienotu šo jauno skriptu, velkot to pie inspektora, un iestatiet numura vērtību kustībai.

11. darbība:

Attēls
Attēls

tagad savā Start () jūs vēlaties darīt vienu lietu, un tas ir

pārliecinieties, ka jūsu RigidPlayer var atrast jūsu maksātāja rigidbody 2d. Jūs to darāt, izmantojot šādu koda rindu:

12. solis:

Attēls
Attēls

Tad mēs pārietam uz atjauninājumu (). Šeit mēs ejam

lai spēlētājs kustētos.

mēs to darām ar diezgan vienkāršu paziņojumu, kurā tiks aplūkotas negatīvās un pozitīvās atslēgas no horizontālās (AD) un vertikālās (SW), un to izmantosim kā skaitli, lai piespiestu, mēs uzliksim savu stingro ķermeni 2d, lai iespiestu spēlētāju. virziens. Šis skaitlis tiks reizināts ar mainīgo moveSpeed.

13. darbība

Attēls
Attēls

Visbeidzot, jūs vēlaties pārliecināties, vai atskaņotājs pārstāj kustēties

tu neko nespied. Tas jums patīk šādi:

Tagad, ja vēlaties izmantot savas 3 citas pogas, lai to izdarītu, izmantojot šo paziņojumu: if (Input. GetKeyDown (Keycode. Space))

atstarpes taustiņu un atstarpes vietā ievietojiet citu taustiņu burtu, kuru izvēlējāties izmantot citiem taustiņiem.

14. solis: gaismas pieslēgšana Arduino

Gaismas pieslēgšana Arduino
Gaismas pieslēgšana Arduino

·

Lai savienotu šo daļu, jums būs nepieciešams:

· 9 džemperu vadi

· 4 rezistori

· 4 gaismas diodes

· 1 arduino uno + USB kabelis

· Maizes dēlis

Gaismu savienošana tiks veikta, izmantojot Uno.

Galu galā tas izskatīsies šādi:

Jūs savienojat rezistorus ar gaismas diodes garo pusi. Un tad jūs pievienojat džemperi no digitālā tapas numura uz uno līdz rezistoriem. šajā gadījumā es izmantoju ciparu tapu slotus 9 -10 -11 -12 šie skaitļi būs aktuāli, kad nonāksim pie gaismas koda.

No turienes jūs vēlaties savienot džemperi no arduino Uno zemes slota uz vietu uz tāfeles, kā redzams ar melno vadu attēlā.

Tad jūs vēlaties, lai 4 džemperi novietotu katras gaismas diodes īsajā galā

15. solis: Arduino Uno kodēšana

Arduino Uno kodēšana
Arduino Uno kodēšana

Labi, vispirms mēs atkal definēsim savus mainīgos

Tātad vispirms, kuras digitālās ieejas mēs izmantojam savām gaismām. Un mēs izveidosim simbolu ar nosaukumu myCol [20]

16. darbība:

Attēls
Attēls

Pēc tam iestatīšanas laikā mēs vēlamies sākt Serial.begin. Ielieciet visas mūsu gaismas diodes uz izeju un ieslēdzot tās izslēdziet.

17. darbība:

Attēls
Attēls

Un visbeidzot jūs vēlaties uzrakstīt savu cilpas funkciju.

Tas liks Arduino izlasīt visus datus, kas tiek ievadīti sērijveidā, līdz notiek viens no diviem notikumiem. Tiek konstatēts vai nu līnijas plūsmas raksturs; to identificē ar lf, kas ir iestatīts uz 10 un ir pirmais arguments vai ir nolasīts noteikts daudzums baitu. Šis ir trešais arguments, un šim piemēram ir iestatīts tikai viens baits. Dati tiek glabāti mainīgajā myCol, kas ir iestatīts uz char un ierobežojums 20. In readBytesUltil šis ir otrais arguments. Vai cits veids, kā to izskaidrot, ir Serial.readBytesUntil (terminatorCharacter, buffer, byteLimit);

Un, ja paziņojumi nodrošinās, ka dažas gaismas iedegas, kad vienotība dod signālu. Šajā gadījumā man ir 4 dažādu krāsu gaismas, tāpēc es lieku vienotībai nosūtīt g, lai iedegtos zaļā gaismas diode, b, lai iedegtos zilā gaismas diode, r, lai iedegtos sarkanā gaismas diode un y, lai iedegtos dzeltenā gaismas diode.

18. darbība. Gaismas kodēšanas vienotības puse:

Kodēšanas gaismas vienotības puse
Kodēšanas gaismas vienotības puse

Oke 2 lietas, pirms mēs iedziļināties šajā.

1. savā arduino kodēšanas programmā dodieties uz Rīks -> Ports -> un pārbaudiet, kurš COM ir ieslēgts. Manā gadījumā tā COM3 (tas būs svarīgi kodā)

2. vienotībā Dodieties uz Rediģēt -> Projekta iestatījumi -> Spēlētājs, pēc tam inspektorā noklikšķiniet uz citiem iestatījumiem, dodieties uz Api saderības līmeni un pārslēdziet to no. NET 2.0 apakštīkla uz tikai. NET 2.0

Labi, tas ir izdarīts. Iedziļināsimies tajā.

Ar peles labo pogu noklikšķiniet uz savas hierarhijas un noklikšķiniet uz Izveidot tukšu.

Tas būs tukšs spēles objekts, kas vienkārši eksistēs jūsu spēlē, lai turētu mums vienu skriptu. Es nosaucu šo objektu par Init.

19. darbība:

Attēls
Attēls

Pēc tam atveriet cilni Projekti un izveidojiet jaunu C# skriptu

un nosauciet to par sūtīšanu.

Pirmā lieta, ko jūs darāt, ir rakstīt šīs rindiņas koda izmantošanas sadaļās:

izmantojot System. IO. Ports;

izmantojot System. Threading;

tāpēc mēs varam izmantot mainīgo SerialPort

20. darbība:

Attēls
Attēls

šajā skriptā mēs izveidosim šādus mainīgos. Tagad ņemiet vērā, ka es tur saņēmu COM3, tas jums varētu būt citādi, kā mēs apspriedām šī soļa sākumā. Ja tas ir, nomainiet 3 ar skaitli, ko tas jums teica.

21. darbība:

Attēls
Attēls

Sākumā mēs sakām, ka skripts ir OpenConnection

funkcija, kuru mēs nedaudz uzrakstīsim

atjauninājums ir vairāk tests, bet viss, bet, ja vēlaties to iekļaut, tas ir jāpārbauda ziņojumiem, kas tiek nosūtīti vienotībai. Jūs varētu to godīgi ignorēt.

22. darbība:

Attēls
Attēls

Labi tagad šai OpenConnection funkcijai. Šis ir tikai liels

Ja/cits paziņojums, kas saglabā savienojumu atvērtu, vienkārši nokopējiet to, kā rakstīts, un jums vajadzētu būt kārtībā.

23. darbība:

Attēls
Attēls

Tagad atcerieties no arduino koda, kuru es pārbaudīju

signalizē, ka tai sūtīs vienotību.

nu šeit tas notiek. Manā gadījumā man bija pieslēgtas 4 gaismas, tāpēc es uzrakstīju 4 funkcijas, kas ir ārkārtīgi vienkāršas. Viss, ko viņi dara, ir tad, kad viņiem piezvana, viņi nosūta vēstuli arduino. Kad arduino saņem šo burtu, tas iedegas šim burtam atbilstošajai gaismai.

24. darbība:

Attēls
Attēls

Jums varētu rasties jautājums, kā panākt, lai to tā sauc

funkcija? Jūs to darāt ar vienu vienkāršu līniju jebkurā citā c# skriptā, ko izmantojat savai spēlei. Sūta. NameFunctionhere ();. Piemēram, manā spēlē spēlētājam ir uzdots savākt 4 krāsainas lodes. Tāpēc es uzrakstīju nelielu skriptu, kas nodrošina, ka, kad viņš pietuvojas vienam un nospiež labo pogu, viņš to paņem un tas nosūta arduino signālu, ka šajā gadījumā dzeltenā lode ir pacelta. Lai tas zinātu, man jāieslēdz dzeltenā gaismas diode:

Jūs varētu ievietot šo vienu koda rindu jebkurā vietā. Ja vēlaties, lai tas iedegas spēles sākumā, ievietojiet to sākuma funkcijā. Ja vēlaties, lai tas iedegas, kad viņš nomirst, nododiet to jūsu funkcijai spēlētāju nāvei. Eksperimentējiet nedaudz. Es izvēlos padarīt gaismas par sava veida ui elementu ārpus spēles, lai sekotu līdzi savāktajām lodes, nepārblīvējot ekrānu.

Ieteicams: