Mündəricat:

Birlik Oyununuza cavab verən İşıqlı Arduino Oyun Nəzarətçisi: 24 addım
Birlik Oyununuza cavab verən İşıqlı Arduino Oyun Nəzarətçisi: 24 addım

Video: Birlik Oyununuza cavab verən İşıqlı Arduino Oyun Nəzarətçisi: 24 addım

Video: Birlik Oyununuza cavab verən İşıqlı Arduino Oyun Nəzarətçisi: 24 addım
Video: Изучай английский через историю, уровень 2 / история с с... 2024, Noyabr
Anonim
Birlik oyununuza cavab verən işıqları olan Arduino Oyun Nəzarətçisi
Birlik oyununuza cavab verən işıqları olan Arduino Oyun Nəzarətçisi

Əvvəlcə bu şeyi sözlə yazdım. İlk dəfədir ki, mən təlimat verəndən istifadə edirəm, belə ki, nə vaxt desəm: bu addımı başındakı görüntüyə istinad etdiyimi bildiyiniz kimi kod yazın.

Bu layihədə 2 ayrı kod işlətmək üçün 2 arduino -dan istifadə edirəm, çünki yalnız biri ilə işləməkdə çətinlik çəkdim.

Bunlar Uno və Leonardodur

Ümumilikdə bu layihəni çörək taxmaq üçün lazım olan budur.

· 7 düymə

· 23 keçid teli

· 1 arduino Leonardo + usb kabeli

· 4 rezistor · 4 led

· 1 arduino uno + usb kabeli

· 2 çörək taxtası

Addım 1: Nəzarət Düymələrini Arduinoya bağlayın

Nəzarət düymələrini Arduinoya bağlamaq
Nəzarət düymələrini Arduinoya bağlamaq

Bu hissəni bağlamaq üçün nə lazımdır:

· 7 düymə

· 14 keçid teli

· 1 arduino Leonardo + usb kabeli

· Çörək taxtası

Düymələri bağlamaq olduqca sadədir, lakin şəkil şəklində göstərmək üçün tez bir qarışıqlığa çevrilə bilər.

· Əvvəlcə düymələri yuxarıdakı şəkildə qeyd etdiyim mövqelərə yerləşdirin.

· İkincisi, arduino Leonardodakı yer yuvasından bir tullanan çörək taxtasının mənfi sətirinə bağlamaq istəyirsən.

· İndi eksi cərgənin hər hansı bir yerindən düyməni basaraq sağ pininizə uyğun olan cərgələri bağlayırsınız. bu ona güc verəcək.

· Sonra, düymənizin sol pininə uyğun olan bir cərgədən Leonardonun rəqəmsal giriş yuvalarına bağlamaq istəyirsiniz. Buradakı düymələr üçün 2 - 3 - 4 - 5 - 6 - 7 - 8 yuvasından istifadə etdim

Mən yalnız bir -birindən keçən bütün telləri göstərmək üçün çox qarışıq bir şəkil halına gəldiyindən görüntüyə 8 -ci girişə gedən teli göstərdim.

Addım 2: Arduino Leonardonun kodlaşdırılması:

Arduino Leonardonun kodlaşdırılması
Arduino Leonardonun kodlaşdırılması

Bunun üçün Leonardodan istifadə etməyimin səbəbini sizə söyləmək üçün. Bunun səbəbi Uno -nun kompüteri usb giriş cihazı olaraq tanımasına imkan verməyən müəyyən bir çipə sahib olmasıdır. Sanki bir klaviatura olardı. Hansı ki, bu layihə üçün proqramçı olaraq həyatımızı çox asanlaşdıran bir şey etməyə imkan verir. Klaviatura emulyasiyası. Kompüteri aldatmağa çalışacağıq ki, əslində nəzarətçimizin düymələrini basarkən klaviaturadakı müəyyən düymələri basırıq.

İndi addım -addım kodu düşündüyünüzü gəzəcəyəm.

İlk növbədə yuxarıda Keyboard.h daxildir. Bu, kodumuzda istifadə edəcəyimiz klaviatura funksiyalarından istifadə etməyimizə imkan verəcəkdir.

Addım 3:

Şəkil
Şəkil

Sonra istifadə edəcəyimiz rəqəmsal giriş yuvalarını təyin etməliyik

Leonardo hər düymə üçün.

Təqlid edəcəyim açarın adı ilə hər birinə ad verdim.

Addım 4:

Şəkil
Şəkil

Oradan quraşdırma funksiyasına daxil oluruq. Bu deyir

arduino başladıqda nə edir.

Əvvəlcə serial portunu açacaq və məlumat sürətini 9600 bps olaraq təyin edən Serial.begin yazırıq

və hamısının giriş olaraq adlandırılan pinləri təyin edirik.

Addım 5:

Şəkil
Şəkil

Və nəhayət, olub olmadığını yoxlayacaq loop funksiyamızı yazırıq

düymələri basıldı və arduinoya buna necə cavab verəcəyini söyləyin.

Əvvəlcə Keyboard.begin yazırıq ki, bu da arduinoya klaviatura funksiyalarından istifadə edərək bizə baxması lazım olduğunu söyləyəcək

Addım 6:

Şəkil
Şəkil
Şəkil
Şəkil
Şəkil
Şəkil

Sonra hər düymə üçün belə gedən if/else ifadəsi yazırıq

Burada arduino -ya dediyim budur: nəzarətçimdə sol düyməm sıxılırsa, kompüteri "a" düyməsinə basdığımızı düşündürün və əgər belə deyilsə, düyməni buraxdığımızı düşündürün.

Əsasən nəzarətçinizdəki hər bir düymə üçün bu kod blokunu təkrarlayırsınız. hər dəyişən üçün dəyişikliklər və dəyişənin təqlid etməsi lazım olan açarlar

Addım 7:

Şəkil
Şəkil

Kompüterin burada vurmasını söylədiyimiz düymələr W - A - S - D düymələridir

kompüter oyunlarında və E-Q-və bu kodda boşluq çubuğunda '' götürmək üçün istifadə etdiyim düymələrdir-oyununuzda buraxın və atəş edin. Bunları oyununuz/idarəediciniz üçün daha yaxşı işlədiyini düşündüyünüz düymələrə dəyişməkdən çekinmeyin.

Sonra nəhayət arduino -ya Keyboard.end -in yoxlanmasını dayandırmasını söyləyirik

Addım 8: Birlikdə Kodlaşdırma Hərəkəti:

Birlikdə Kodlaşdırma Hərəkatı
Birlikdə Kodlaşdırma Hərəkatı

Əvvəlcə bunu 2D oyun üçün etdiyimi söyləyim

Görəcəyiniz nümunələr bunun üçün hazırlanmışdır. Əsasən vektor2 -dən istifadə etdiyim yer, əgər 3d -də işləyirsinizsə, vektor3 -dən istifadə edəcəksiniz. çünki 3d -də əlavə hərəkət ölçüsündən narahat olmalısan.

Arduino tərəfində Klaviatura emulyasiyasından istifadə etməyimin səbəbi Unity -nin istifadə edə biləcəyimiz klaviaturadakı düymələri tanımaq üçün bir şeyə sahib olmasıdır.

Birlikdə layihənizi açarsanız, Düzəliş -> Layihə parametrləri -> Giriş bölməsinə keçin. Müfəttişinizdə giriş menecerini açdığını görə bilərsiniz. Axes düyməsini tıkladığınızda, indi hazırladığımız kimi kompüter nəzarətçiləri üçün istifadə olunan bir çox giriş adının açıldığını görə bilərsiniz. İstifadə edəcəyimiz 2 giriş Yatay və Dikeydir ki, bunu W-A-S-D təxmin etdiyinizi yoxlayın.

Birincisi, birliyinizin səhnələrində sizin oyunçunuz olacaq iyerarxiyada bir obyekt etmək istəyirsiniz. Mənim vəziyyətimdə bu əyləncəli kiçik oğlan. Ehtiyacınız olan hər şey ola bilər, amma oyunum üçün bu adamı yaratdım.

Addım 9:

Şəkil
Şəkil

Bu oyunçuya 2 şey vermək istəyirsən. Bir qutu çarpazlayıcı 2d və

a Rigidbody 2d və yuxarıdakı şəkildəki kimi düzəldin.

Addım 10:

Şəkil
Şəkil

Sonra layihələr qovluğunuza girib bir

C# skript. PlayerMovement adını verdim.

Bu skriptdə 2 dəyişən təyin edəcəksiniz. MoveSpeed adlandırdığım bir ictimai float. Hansı sürətlə getdiyinizi təyin edəcək. RigidPlayer adlandırdığım xüsusi bir Rigidbody2D. Hansı ki, oyunçularınızı sərt insan axtaracaq.

Birlik redaktorunuza getməyi unutmayın, oyunçunuzu müfəttişə sürükləyərək bu yeni skript əlavə edin və moveSpeed üçün bir rəqəm təyin edin.

Addım 11:

Şəkil
Şəkil

İndi Start () da bir şey etmək istəyirsən və bu da

RigidPlayerinizin ödəyicinizin rigidbody 2d tapa biləcəyinə əmin olun. Bunu aşağıdakı kod satırı ilə edirsiniz:

Addım 12:

Şəkil
Şəkil

Sonra yeniləməyə davam edirik (). Budur getdiyimiz yer

oyunçunu hərəkət etdirmək.

Yatay (AD) və Şaquli (SW) mənfi və pozitiv açarlara baxacaq və bunu oyunçuya itələmək üçün sərt bədənimizə 2d qoyacağımız bir rəqəm olaraq tətbiq edəcəyimiz olduqca sadə bir ifadə ilə edirik. bir istiqamət. Bu ədəd, moveSpeed dəyişəni ilə vurulacaq.

Addım 13:

Şəkil
Şəkil

Nəhayət, oyunçunuzun hərəkəti dayandırdığı zaman əmin olmaq istəyirsiniz

heç nə basmırsan. Bunu belə bəyənirsən:

İndi başqa 3 düymənizdən istifadə etmək istəyirsinizsə, bunu if ifadəsi ilə edin: if (Input. GetKeyDown (Keycode. Space))

boşluq üçün və boşluq yerinə digər düymələr üçün istifadə etməyi seçdiyiniz digər düymələrin hərfini qoyun.

Addım 14: İşıqları Arduinoya bağlayın

İşıqları Arduinoya bağlayırıq
İşıqları Arduinoya bağlayırıq

·

Bu hissəni bağlamaq üçün nə lazımdır:

· 9 keçid teli

· 4 rezistor

· 4 ədəd led

· 1 arduino uno + usb kabeli

· Çörək taxtası

İşıqların bağlanması Uno vasitəsi ilə həyata keçiriləcək.

Yuxarıdakı şəkil kimi görünəcək:

Rezistorları LED -in uzun tərəfinə bağlayırsınız. Sonra uno üzərindəki rəqəmsal pin nömrəsindən bir tullanan bağlayırsınız. bu halda rəqəmsal pin yuvalarından istifadə etdim 9 -10 -11 -12, bu nömrələr işıqların koduna çatanda müvafiq olacaq.

Oradan yuxarıdakı şəkildəki qara tellə göründüyü kimi arduino Uno -nun yer yuvasından lövhənizdəki yerə bir tullanan bağlamaq istəyirsiniz.

Sonra 4 LED -in hər LED -in qısa ucuna aparıcı olmasını istəyirsən

Addım 15: Arduino Uno kodlaşdırma

Arduino Uno kodlaşdırılır
Arduino Uno kodlaşdırılır

Yaxşı, əvvəlcə dəyişənlərimizi yenidən təyin edəcəyik

Əvvəlcə işıqlarımız üçün hansı rəqəmsal girişlərdən istifadə edirik. Və myCol adlı bir simvol hazırlayacağıq [20]

Addım 16:

Şəkil
Şəkil

Sonra quruluşda yenidən Serial.begin etmək istəyirik. Bütün LED -lərimizi Çıxışa qoyun və hamısını işə salanda söndürün.

Addım 17:

Şəkil
Şəkil

Və nəhayət, loop funksiyanızı yazmaq istəyirsiniz.

Bu, Arduinonun iki hadisədən biri baş verənə qədər serialdan gələn məlumatları oxumasına səbəb olacaq. Ya bir xətt axını xarakteri aşkarlanır; Bu, 10 -a təyin olunan lf ilə təyin olunur və birinci arqumentdir və ya müəyyən bir bayt oxunmuşdur. Bu üçüncü arqumentdir və bu nümunə üçün yalnız bir bayt təyin edilmişdir. Məlumatlar char və 20 həddinə təyin edilmiş myCol dəyişənində saxlanılır. ReadBytesUntilə qədər bu ikinci arqumentdir. Və ya bunu izah etməyin başqa bir yolu Serial.readBytesUntil (terminatorCharacter, buffer, byteLimit);

Və if ifadələri birlik siqnal verəndə müəyyən işıqların yandığından əmin olacaq. Bu vəziyyətdə 4 fərqli rəngli işıq aldım, buna görə də birliyi göndərirəm ki, yaşıl LED -i yandırsın, b mavi LED -i yansın, qırmızı LED yansın və sarı LED yansın.

Addım 18: Kodlaşdıran İşıqlar Birlik Yanında:

Kodlaşdıran İşıqlar Birlik Yanında
Kodlaşdıran İşıqlar Birlik Yanında

Bu işə başlamazdan əvvəl 2 şeyə diqqət yetirin.

1. arduino kodlaşdırma proqramınızda Tool -> Port -> bölməsinə gedin və ununuzun hansı COM -un aktiv olduğunu yoxlayın. Mənim vəziyyətimdə onun COM3 (bu kodda vacib olacaq)

2. Birlikdə Redaktə et -> Layihə parametrləri -> Oyunçuya gedin, sonra müfəttişdə digər parametrləri vuraraq Api uyğunluq səviyyəsinə keçin və. NET 2.0 alt şəbəkəsindən yalnız. NET 2.0 -ə keçin.

Oke tamam oldu. Gəlin buna girək.

İerarxiyanıza sağ vurun və Boş yarat düyməsini basın.

Bu, bizim üçün bir skript tutmaq üçün oyununuzda mövcud olacaq boş bir oyun obyekti olacaq. Bu obyekti İnit adlandırdım.

Addım 19:

Şəkil
Şəkil

Sonra layihələr sekmesine girin və yeni bir C# skripti yaradın

və göndərmə adlandırın.

Etdiyiniz ilk şey bunları kodunuzun istifadə bölmələrindəki sətirlərə yazmaqdır:

System. IO. Ports istifadə etmək;

System. Threading istifadə edərək;

bu, SerialPort dəyişənindən istifadə etməyimizi şərtləndirir

Addım 20:

Şəkil
Şəkil

bu skriptdə aşağıdakı dəyişənləri edəcəyik. İndi COM3 aldığımı unutmayın, bu addımın əvvəlində müzakirə etdiyimiz kimi sizin üçün fərqli ola bilər. Əgər 3 -ü sizin üçün dediyi nömrə ilə əvəz edin.

Addım 21:

Şəkil
Şəkil

Başlanğıcda skriptdən istifadə etməyi OpenConnection olduğunu söyləyirik

bir azdan yazacağımız funksiya

Yeniləmə hər şeydən daha çox bir sınaqdır, ancaq daxil etmək istəsəniz birliyə göndərilən mesajları sınayın. Vicdanla göz ardı edə bilərsiniz.

Addım 22:

Şəkil
Şəkil

İndi bu OpenConnection funksiyasını yerinə yetirin. Bu sadəcə böyükdür

if/else bağlantısını açıq saxlayan ifadəni yazdığınız kimi kopyalayın və yaxşı olmalısınız.

Addım 23:

Şəkil
Şəkil

İndi yoxladığım arduino kodundan xatırlayın

birliyin ona göndərəcəyini göstərir.

yaxşı ki, burada baş verir. Mənim vəziyyətimdə 4 işıq bağladım, buna görə son dərəcə sadə 4 funksiya yazdım. Etdikləri şey, çağırıldıqda arduinoya bir məktub göndərməkdir. Arduino bu məktubu alanda həmin hərfə uyğun olan işığı yandırır.

Addım 24:

Şəkil
Şəkil

Bunu necə adlandıracağımı düşünürsünüz

funksiyası? Yaxşı, bunu oyununuz üçün istifadə etdiyiniz digər c# skriptlərinizdən hər hansı birində sadə bir xəttlə edirsiniz. Sending. NameFunctionhere ();. Məsələn, mənim oyunumda oyunçuya 4 rəngli kürə toplamaq tapşırılır. Buna görə kiçik bir ssenari yazdım ki, birinə yaxınlaşanda və sağ düyməni basanda onu götürür və bu halda sarı kürənin götürüldüyünü arduinoya göndərir. Bilir ki, sarı LED -i yandırmalıyam:

Bu bir kod xəttini istədiyiniz yerə qoya bilərsiniz. Oyun başlayanda yanmasını istəsəniz, başlanğıc funksiyasına qoyun. Oyunçuların ölümü üçün funksiyanıza qoyun, öləndə işıqlanmasını istəyin. Bir az ətrafında sınayın. Ekranı sarsıtmadan toplamaq lazım olan kürələri izləmək üçün işıqları oyundan kənarda bir növ ui elementi halına gətirməyi seçirəm.

Tövsiyə: