Mundarija:
- 1 -qadam: boshqaruv tugmalarini Arduino -ga ulash
- 2 -qadam: Arduino Leonardoni kodlash:
- 3 -qadam:
- 4 -qadam:
- 5 -qadam:
- 6 -qadam:
- 7 -qadam:
- 8 -qadam: Harakatni birlikda kodlash:
- 9 -qadam:
- 10 -qadam:
- 11 -qadam:
- 12 -qadam:
- 13 -qadam:
- 14 -qadam: Chiroqlarni Arduino -ga ulash
- 15 -qadam: Arduino Uno -ni kodlash
- 16 -qadam:
- 17 -qadam:
- 18 -qadam: Chiroqlar birligi tomonini kodlash:
- 19 -qadam:
- 20 -qadam:
- 21 -qadam:
- 22 -qadam:
- 23 -qadam:
- 24 -qadam:
Video: "Birlik" o'yiniga javob beradigan chiroqlar bilan Arduino o'yin boshqaruvchisi :: 24 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
Birinchidan, men bu narsani so'z bilan yozdim. Men birinchi marta ko'rsatmalarni ishlataman, shuning uchun aytganda: kodni yozing, bilingki, men bu qadamning yuqori qismidagi tasvirni nazarda tutyapman.
Ushbu loyihada men 2 ta alohida kodni ishga tushirish uchun 2 ta arduino -dan foydalanaman, chunki men uni bittasi bilan ishlashda muammolarga duch keldim.
Bular Uno va Leonardo
Umuman olganda, bu loyihani kengaytirish uchun sizga kerak bo'lgan narsa.
· 7 ta tugma
· 23 ta o'tish simlari
· 1 arduino Leonardo + usb kabeli
· 4 ta qarshilik · 4 ta LED
· 1 arduino uno + usb kabeli
· 2 ta non paneli
1 -qadam: boshqaruv tugmalarini Arduino -ga ulash
Ushbu qismni ulash uchun sizga nima kerak:
· 7 ta tugma
· 14 ta o'tish simlari
· 1 arduino Leonardo + usb kabeli
· Non taxtasi
Tugmalarni ulash juda oddiy, lekin tezda rasm shaklida ko'rsatish uchun tartibsizlikka aylanishi mumkin.
· Birinchi navbatda, tugmachalarni yuqoridagi rasmda men belgilagan joylarga joylashtiring.
· Ikkinchidan, siz arduino Leonardodagi er uyasidan non taxtasining minus qatoriga o'tish moslamasini ulashni xohlaysiz.
· Endi siz minus qatorning istalgan joyidan o'tish tugmachasini o'ng tugmachasiga mos keladigan qatorga bog'lab qo'yasiz. bu unga kuch beradi.
· Keyin siz tugmachaning chap piniga to'g'ri keladigan qatordan o'tish simini Leonardoning raqamli kirish uyalariga ulashni xohlaysiz. Bu yerdagi tugmalar uchun men 2 - 3 - 4 - 5 - 6 - 7 - 8 uyalarini ishlatardim
Men faqat tasvirga 8 -raqamga kiradigan simni ko'rsatdim, chunki u sizga bir -biridan o'tgan barcha simlarni ko'rsatish juda tartibsiz rasmga aylanadi.
2 -qadam: Arduino Leonardoni kodlash:
Buning uchun Leonardodan nima uchun foydalanayotganimni aytib berish uchun. Chunki Uno -da ma'lum bir chip borki, u kompyuterni usb kiritish qurilmasi sifatida tan olmaydi. Bu klaviatura kabi. Bu bizga loyiha dasturchilari sifatida hayotimizni do'zaxni osonlashtiradigan biror narsa qilishga imkon beradi. Klaviatura emulyatsiyasi. Biz kompyuterni aldab o'tamiz, biz klaviaturadagi ba'zi tugmachalarni bosamiz deb o'ylaymiz, chunki biz aslida boshqaruvchimizdagi tugmachalarni bosamiz.
Endi men ketmoqchiman, siz kodni asta -sekin o'ylab topdingiz.
Birinchidan, biz Keyboard.h ni o'z ichiga olamiz. Bu bizga kodimizda ishlatadigan klaviatura funktsiyalaridan foydalanish imkonini beradi.
3 -qadam:
Keyin biz foydalanadigan raqamli kirish joylarini aniqlashimiz kerak
Leonardo har bir tugma uchun.
Men ham taqlid qilmoqchi bo'lgan kalit nomi bilan ularning har biriga ism qo'ydim.
4 -qadam:
U erdan biz sozlash funktsiyasiga o'tamiz. Bu aytadi
arduino ishga tushganda nima qiladi.
Avval biz ketma -ket portni ochadigan va ma'lumotlarni uzatish tezligini 9600 bps ga o'rnatadigan Serial.begin yozamiz
va biz hamma kirishlar deb nomlangan pinlarni belgilaymiz.
5 -qadam:
Va nihoyat, biz tekshiradigan loop funktsiyasini yozamiz
tugmalar bosilmoqda va arduino -ga bunga qanday javob berish kerakligini aytib bering.
Avval biz Keyboard.begin yozamiz, u arduinoga klaviatura funktsiyalari yordamida bizni qidirishi kerakligini aytadi
6 -qadam:
Keyin har bir tugma uchun biz shunga o'xshash if/else so'zini yozamiz
Men bu erda arduino -ga aytganlarim: Agar nazoratchi tugmachasining chap tugmasi bosilsa, kompyuter bizni "a" tugmachasini bosamiz deb o'ylashga majbur qiladi, agar unday bo'lmasa, biz tugmani qo'yib yubordik deb o'ylashga majbur qiling.
Siz asosan ushbu kod blokini tekshirgichingizdagi har bir tugma uchun takrorlaysiz. har bir o'zgaruvchining o'zgarishi va o'zgaruvchiga taqlid qilish kerak bo'lgan kalitlar bilan
7 -qadam:
Biz kompyuterga bu erga bosishni aytgan kalitlar - W - A - S - D
Kompyuter o'yinlari va E-Q-bu harakat standarti va bu kodda bo'sh joy "men tugmachalari sifatida men tanlayman-o'chirish va o'chirish". O'zingizning o'yiningiz/boshqaruvchingiz uchun yaxshiroq bo'lgan har qanday tugmachani o'zgartirishingiz mumkin.
Va nihoyat, biz arduino -ga Keyboard.end -ni tekshirishni to'xtatishni aytamiz
8 -qadam: Harakatni birlikda kodlash:
Birinchidan, sizga shuni aytmoqchimanki, men buni 2 -o'yin uchun qilaman
siz ko'rmoqchi bo'lgan misollar buning uchun yaratilgan. Asosan men vektor2 -ni qaerda ishlatayotganimni anglatadi, agar siz 3dda ishlayotgan bo'lsangiz, siz vektor3 -dan foydalanasiz. chunki siz 3D -da harakatning qo'shimcha o'lchami haqida qayg'urishingiz kerak bo'ladi.
Endi men arduino tomonida klaviatura emulyatsiyasidan foydalandim, chunki Unity -da biz ishlatadigan klaviaturadagi kalitlarni taniy oladigan narsa bor.
Agar siz loyihangizni birgalikda ochsangiz, Tahrir -> Loyiha sozlamalari -> Kirish -ga o'ting. Siz inspektoringizda kirish menejeri ochilishini ko'rishingiz mumkin. Agar siz "Eksa" tugmachasini bosgan bo'lsangiz, odatda biz hozir qilayotganlar kabi kompyuter boshqaruvchilari uchun ishlatiladigan bir nechta kirish nomlari ochilishini ko'rishingiz mumkin. Biz foydalanmoqchi bo'lgan ikkita kirish-bu gorizontal va vertikal, bu sizning taxminingizga ko'ra, W-A-S-D.
Avval siz o'zingizning o'yinchi bo'ladigan birlik sahnalarida ierarxiya ob'ektini yaratmoqchisiz. Menimcha, bu kichkina odam. Bu sizga kerak bo'lgan hamma narsa bo'lishi mumkin, lekin o'yinim uchun men bu odamni yaratdim.
9 -qadam:
Siz bu o'yinchiga 2 narsani berishni xohlaysiz. 2D va
a Rigidbody 2d va ularni yuqoridagi rasmga o'xshash qilib tahrir qiling.
10 -qadam:
Keyin siz loyihalar papkasiga kirishni xohlaysiz va
C# skript. Men buni PlayerMovement deb nomladim.
Ushbu skriptda siz 2 o'zgaruvchini aniqlaysiz. Men "MoveSpeed" deb nomlangan ommaviy float. Bu sizning qanchalik tez yurishingizni aniqlaydi. Va men RigidPlayer deb ataydigan shaxsiy Rigidbody2D. Bu sizning futbolchilaringizni qattiq tanlaydilar.
Birlik muharririga kirishni unutmang, o'yinchi ushbu yangi skriptni inspektorga sudrab olib kelib qo'shadi va moveSpeed uchun raqam qiymatini o'rnatadi.
11 -qadam:
Endi Start () da siz bitta narsani qilmoqchisiz va bu shunday
Sizning RigidPlayer sizning to'lovchingiz rigidbody 2d ni topishiga ishonch hosil qiling. Siz buni quyidagi kod satri bilan bajarasiz:
12 -qadam:
Keyin yangilanishga o'tamiz (). Mana biz qayerga ketyapmiz
o'yinchini harakatga keltirish uchun.
Biz buni gorizontal (AD) va vertikal (SW) salbiy va ijobiy kalitlarga qaraydigan va buni raqam sifatida qo'llagan holda, o'yinchini itarish uchun qattiq tanamizga 2d qo'yadigan juda oddiy if ifodasi bilan qilamiz. yo'nalish. Bu raqam moveSpeed o'zgaruvchisiga ko'paytiriladi.
13 -qadam:
Nihoyat, o'yinchi qachon harakatlanishni to'xtatganiga ishonch hosil qilmoqchisiz
siz hech narsani bosmaysiz. Bu sizga shunday yoqadi:
Agar siz boshqa 3 tugmani ishlatmoqchi bo'lsangiz, buni if ifoda bilan bajaring: if (Input. GetKeyDown (Keycode. Space))
bo'sh joy uchun va bo'sh joy o'rniga boshqa tugmalar uchun siz tanlagan boshqa kalitlarning harfini qo'ying.
14 -qadam: Chiroqlarni Arduino -ga ulash
·
Ushbu qismni ulash uchun sizga nima kerak:
· 9 ta o'tish kabeli
· 4 ta rezistor
· 4 ta LED
· 1 arduino uno + usb kabeli
· Non taxtasi
Chiroqlar ulanishi Uno orqali amalga oshiriladi.
Bu yuqoridagi rasmga o'xshaydi:
Siz rezistorlarni LEDlarning uzun tomoniga bog'lab qo'yasiz. Keyin siz raqamli pin raqamidan o'tish moslamasini rezistorlarga bog'laysiz. bu holda men raqamli pinli uyalardan foydalanardim 9 -10 -11 -12, bu raqamlar chiroqlar kodiga etib kelganimizda tegishli bo'ladi.
U erdan siz arduino Uno -ning er uyasidan tepadagi rasmdagi qora sim bilan ko'rinib turgan joyga o'tish joyini bog'lamoqchisiz.
Keyin siz har bir LEDning qisqa uchiga 4 ta o'tish moslamasini olib kelishni xohlaysiz
15 -qadam: Arduino Uno -ni kodlash
Yaxshi, avval biz o'z o'zgaruvchilarimizni yana aniqlaymiz
Shunday qilib, biz birinchi navbatda o'z chiroqlarimiz uchun qaysi raqamli kirishni ishlatamiz. Va biz myCol nomli char yasaymiz [20].
16 -qadam:
Keyin sozlashda biz yana Serial.begin qilishni xohlaymiz. Barcha LED -larimizni Chiqish rejimiga qo'ying va ishga tushganda hammasini o'chiring.
17 -qadam:
Va nihoyat, siz loop funktsiyasini yozmoqchisiz.
Bu Arduino -ga ketma -ket keladigan har qanday ma'lumotlarni ikkita hodisadan biri sodir bo'lguncha o'qishiga olib keladi. Yoki chiziqli tasma belgisi aniqlanadi; Bu lf bilan belgilanadi, u 10 ga o'rnatiladi va bu birinchi dalil yoki ma'lum miqdordagi bayt o'qilgan. Bu uchinchi dalil va bu misol uchun faqat bitta bayt o'rnatilgan. Ma'lumotlar myCol o'zgaruvchisida saqlanadi, u char va 20 chegarasiga o'rnatiladi. ReadBytesUntilgacha bu ikkinchi dalil. Yoki buni tushuntirishning boshqa usuli - Serial.readBytesUntil (terminatorCharacter, buffer, byteLimit);
Va if iboralari birlik signal berganda ma'lum chiroqlar yonishini ta'minlaydi. Bu holda menda 4 xil rangdagi chiroqlar bor, shuning uchun men yashil LEDni yoqish uchun b, ko'k LEDni yoqish uchun b, qizil LEDni yoqish uchun va sariq LEDni yoqish uchun birlikni yuboraman.
18 -qadam: Chiroqlar birligi tomonini kodlash:
Bu ishga kirishdan oldin, avvalambor, 2 narsaga e'tibor bering.
1. arduino kodlash dasturida Tool -> Port -> ga o'ting va sizning UNO qaysi COM yoqilganligini tekshiring. Mening vaziyatimda uning COM3 (bu kodda muhim bo'ladi)
2. birlikda Tartibga solish -> Loyiha sozlamalari -> O'yinchi -ga o'ting, keyin inspektorda boshqa sozlamalarni bosing, Api muvofiqligi darajasiga o'ting va uni. NET 2.0 pastki tarmog'idan. NET 2.0 -ga o'zgartiring.
Bu bajarildi. Keling, unga kiraylik.
Ierarxiyangizni o'ng tugmasini bosing va bo'sh yaratish -ni bosing.
Bu biz uchun bitta skriptni ushlab turish uchun sizning o'yiningizda mavjud bo'lgan bo'sh o'yin ob'ekti bo'ladi. Men bu ob'ektni Init deb nomladim.
19 -qadam:
Keyin loyihalar yorlig'iga o'ting va yangi C# skriptini yarating
va uni Yuborish deb nomlang.
Siz qilayotgan birinchi narsa - bu kodni ishlatadigan bo'limlaridagi satrlarga yozish:
System. IO. Ports -dan foydalanish;
System. Threading -dan foydalanish;
shuning uchun biz SerialPort o'zgaruvchisidan foydalanishimiz mumkin
20 -qadam:
bu skriptda biz quyidagi o'zgaruvchilarni tuzamiz. E'tibor bering, menda COM3 bor, u erda bu siz uchun boshqacha bo'lishi mumkin, biz bu qadamning boshida muhokama qilganmiz. Agar u 3 raqamini siz aytgan raqam bilan almashtirsa.
21 -qadam:
Boshida biz skriptni OpenConnection -dan foydalanishni aytamiz
biz yozadigan funksiya
yangilanish - bu hamma narsadan ko'ra ko'proq sinov, lekin agar siz uni qo'shishni xohlasangiz, uni birlikka yuborilgan xabarlarni sinab ko'ring. Siz buni halollik bilan e'tiborsiz qoldirishingiz mumkin.
22 -qadam:
Endi OpenConnection funktsiyasini bajaring. Bu shunchaki katta
if/else ulanishni ochiq tutib tursa, uni yozilganidek nusxa ko'chiring va siz yaxshi bo'lishingiz kerak.
23 -qadam:
Endi men tekshirgan arduino kodidan eslang
birlik unga yuborilishini bildiradi.
yaxshi, bu erda sodir bo'ladi. Mening holatimda menda 4 ta chiroq bor, shuning uchun men juda oddiy 4 funktsiyani yozdim. Ular faqat chaqirilganda arduinoga xat yuborishadi. Arduino bu harfni olganida, u ko'rsatilgan harfga mos keladigan chiroqni yoqadi.
24 -qadam:
Siz buni qanday qilib chaqirishim mumkin, deb hayron bo'lishingiz mumkin
funktsiya? Siz buni o'zingizning o'yiningiz uchun ishlatadigan boshqa har qanday c# skriptlarida bitta oddiy chiziq bilan bajarasiz. Yuborish. NameFunctionhere ();. Masalan, mening o'yinimda o'yinchi oldiga 4 ta rangli sharni yig'ish vazifasi qo'yilgan. Men kichkina ssenariy yozdim, u yaqinlashib, o'ng tugmachani bosganida, uni ko'taradi va bu holda arduinoga bu holatda sariq orbni olish to'g'risida signal yuboradi. Bilingki, men sariq LEDni yoqishim kerak:
Siz bu bitta kod qatorini xohlagan joyingizga qo'yishingiz mumkin. Agar siz o'yin boshlanganda yonishini xohlasangiz, uni start funktsiyasiga qo'ying. U o'lganda yonishini xohlaysizmi, buni o'yinchilarning o'limi vazifasiga kiriting. Bir oz tajriba o'tkazing. Men ekranni chalg'itmasdan to'plashingiz kerak bo'lgan orblarni kuzatib borish uchun chiroqlarni o'yindan tashqarida ui elementiga aylantirishni tanlayman.
Tavsiya:
Tasodifiy javob beradigan mayatniklar: 4 qadam (rasmlar bilan)
Tasodifiy ta'sir etuvchi mayatniklar: Ushbu loyihaning maqsadi 2 mayatnikning uzluksiz aylanishiga olib keladi. Men faol va passiv mayatnikning yaxshi o'zaro ta'sirini topdim. Ular doimiy magnitli, elektromagnitli va tortishish kuchi maydonlari bulutida harakat qiladilar. P og'irligi
Arduino asosidagi DIY o'yin boshqaruvchisi - Arduino PS2 o'yin boshqaruvchisi - DIY Arduino Gamepad bilan Tekken o'ynash: 7 qadam
Arduino asosidagi DIY o'yin boshqaruvchisi | Arduino PS2 o'yin boshqaruvchisi | DIY Arduino Gamepad bilan Tekken o'ynash: Salom bolalar, o'yin o'ynash har doim qiziqarli, lekin o'zingizning shaxsiy o'yiningiz bilan o'ynash yanada qiziqarli, shuning uchun biz ushbu qo'llanmada arduino pro micro yordamida o'yin boshqaruvchisi qilamiz
Arduino O'yin boshqaruvchisi + Birlik o'yini: 5 qadam
Arduino Game Controller + Unity o'yini: Men sizga ko'rsatma beraman, qanday qilib birlikka ulanadigan arduino o'yin boshqaruvchisini yasash/dasturlash
Veb -sayt bilan javob beradigan RPi ob -havo ma'lumoti: 5 qadam
Javob beradigan veb -saytli RPi Weatherstation: Maktab loyihasi uchun biz yig'ilgan ma'lumotni chiroyli tarzda vizualizatsiya qilish uchun veb -saytga ega bo'lgan IoT qurilmasini yasashimiz kerak edi. Men javob bera oladigan MySQL veb -sayti uchun Raspberry Pi 3 ishlaydigan Flask bilan ishlaydigan ob -havo stantsiyasini yaratishni tanladim. (MariaDB) mening ma'lumotlarim uchun
Musiqaga javob beradigan yorug'lik shousi: 7 qadam (rasmlar bilan)
Musiqaga javob beradigan yorug'lik shousi ko'ylagi: Bu darslik York universitetining musiqa texnologiyasi va amaliy elektronika yo'nalishi bo'yicha bitirgan yilim loyihasi doirasida tayyorlangan. Bu elektronikaga qiziqadigan musiqachilarga mo'ljallangan. Tayyor mahsulot LED matri bo'ladi