Mundarija:

Beshta o'yinli Arduino VGA konsoli: 4 qadam
Beshta o'yinli Arduino VGA konsoli: 4 qadam

Video: Beshta o'yinli Arduino VGA konsoli: 4 qadam

Video: Beshta o'yinli Arduino VGA konsoli: 4 qadam
Video: badantarbiya 2024, Noyabr
Anonim
Image
Image
Besh o'yinli Arduino VGA konsoli
Besh o'yinli Arduino VGA konsoli
Besh o'yinli Arduino VGA konsoli
Besh o'yinli Arduino VGA konsoli

Oldingi yo'riqnomalarda men eng mashhur klassik arja o'yinlarining soddalashtirilgan versiyalarini yalang'och Arduino va boshqa bir nechta komponentlar yordamida takrorladim. Keyinchalik men ularning beshtasini bitta eskizda birlashtirdim. Bu erda men qanday qilib Pong, Breakout, Bomber, Tetris va Etch-a-Sketchdan ilhomlangan o'yinchoq o'ynaydigan oddiy konsol qurishingiz mumkinligini ko'rsataman. Bu konsoldan ilonni va boshqa mualliflar yozgan yana ikkita o'yinni ishlatish mumkin: Sandro Maffiodo aka "Smaffer" Bit Ninja va Nikita Kurylev stacker.

Asosiy xususiyat - VGAx kutubxonasi tufayli VGA signalini yaratish, shuning uchun konsolga VGA monitor kerak. Mening maqsadim, odatdagidek, uni yaratish uchun hech qanday "maxsus komponent" dan qochishdir, sizga hech qanday qo'llab -quvvatlovchi IC yoki qalqon kerak emas! Bitta komponent - ikkita potentsiometr, beshta tugma, bir nechta rezistor va DSUB15 (VGA) ulagichi. Piezo karnay ixtiyoriy. Ushbu o'yinlar qanday ko'rinishini ushbu sahifadagi rasmlarda ko'rishingiz mumkin.

VGAx kutubxonasi 120 x 60 pikselli to'rtta rangdan foydalanishga imkon beradi, lekin bu retro-o'yin konsoli uchun etarli emas. Grafika xom, lekin potentsiometrlardan foydalanish tufayli o'yinlar muammosiz o'tmoqda. Oddiy ovoz effektlari ham mavjud.

1 -qadam: O'z Arduino VGA konsoli qanday yaratiladi

O'z Arduino VGA konsoli qanday yaratiladi
O'z Arduino VGA konsoli qanday yaratiladi
O'z Arduino VGA konsoli qanday yaratiladi
O'z Arduino VGA konsoli qanday yaratiladi

Avval ushbu sahifaning pastki qismidagi ArduinoVGAgame.ino va/yoki Snake.ino kodlarini yuklab oling va ularni shaxsiy kompyuteringizga shu nomdagi katalogga ko'chiring. VGAx kutubxonasini GitHub -dagi ushbu havoladan yuklab oling. Eng oson yo'li - uni "kutubxonalar" deb nomlangan Arduino dasturiy ta'minot papkasida nusxalash, uni darhol tanib olish mumkin.

MUHIM: bu kutubxona Arduno IDE 1.6.4 uchun ishlaydi, lekin u eski yoki yangi versiyalarga to'liq mos kelmaydi.

Kodni Arduino kartangizga yuklang (men Uno va Nano ni sinab ko'rdim). Xotiraning pastligi haqida ogohlantirish odatiy holdir. Agar sizda boshqa xatolar bo'lmasa, hamma narsa yaxshi va siz darhol o'z konsolingizni yaratishni boshlashingiz mumkin.

Buning uchun sizga kerak:

  • Arduino Uno Rev 3 yoki Arduino Nano 3.x (ATmega328)
  • DSUB15 ulagichi, ya'ni VGA ayol ulagichi yoki kesiladigan VGA kabeli.
  • rezistorlar: 2 x 68 Ohm va 2 x 470 Ohm va 5 x 1 dan 2 kOm gacha
  • ikkita 10 kOm chiziqli potentsiometr (shunga o'xshash qiymatlar ham yaxshi)
  • beshta tugma
  • kabelning bir qismi
  • bitta yoki ikkita chiroyli quti barcha komponentlarni qo'yish uchun.

Fakultativ:

  • non paneli yoki lenta taxtasi
  • piezo karnay

Sxema tugallangan "konsol" misoli bilan birga ushbu bosqichning yuqori qismida keltirilgan.

sxemada tugma va potansiometrni qanday ulash kerakligi ko'rsatilgan. Aniqroq aytganda, 5 ta tugmachani 5, 10, 11, 12 va 13 -pinlarga ulashingiz kerak. Har bir tugma tomonidan bajariladigan amallar sxemaning o'ng yuqori yuqori qismida tasvirlangan. Chapda potentsiometrni qanday ulash kerakligi ko'rsatilgan (A1 va A2 pinlariga ikkita potentsiometr kerak). Karnay A0 analog piniga ulangan bo'lishi kerak.

Men VGA ulagichi bo'lgan Arduino taxtasini yog'och qutiga joylashtirdim, unda birinchi o'yinchi potentsiometrini va to'rtta tugmachani, ikkinchi o'yinchi potentsiometrini va uning ishga tushirish tugmachasini alohida va kichikroq qutiga joylashtirdim.

Agar sizga bu o'yinchoq yoqsa va siz uni takrorlashga qaror qilsangiz, quyidagi izohlar bo'limiga sharh yozsangiz yoki rasm yuborsangiz minnatdorman.

2 -qadam: Boshqa mualliflarning o'yinlari

Sandro Maffiodo yaqinda BitNinja o'yinini e'lon qildi. Youn bu erda qo'shimcha ma'lumotni topishi va kodni bu yerdan yuklab olishi mumkin.

Mening konsolimdan foydalanish uchun uning kodidagi tugmani quyidagicha o'zgartirish kerak:

#BTN_UP 11 ni belgilang (13 o'rniga)

#deftine BTN_LEFT 10 (12 o'rniga)

#BTN_RIGHT 12 ni belgilang (11 o'rniga)

Bu erda Nikita Kurylevdan yig'uvchi bor. Qo'shimcha ma'lumot bu erda.

Shunga qaramay, siz kodning boshqa qismida bitta tugmani o'zgartirishingiz kerak: digitalRead (2) ni digitalRead (13) bilan almashtiring.

3 -qadam: 1 -ilova: Tekshirgichlarni qanday yaratish haqida batafsil ma'lumot

1 -ilova: Tekshirish moslamalarini qanday qurish haqida batafsil ma'lumot
1 -ilova: Tekshirish moslamalarini qanday qurish haqida batafsil ma'lumot
1 -ilova: Tekshirgichlarni qanday qurish haqida batafsil ma'lumot
1 -ilova: Tekshirgichlarni qanday qurish haqida batafsil ma'lumot
1 -ilova: Tekshirgichlarni qanday qurish haqida batafsil ma'lumot
1 -ilova: Tekshirgichlarni qanday qurish haqida batafsil ma'lumot
1 -ilova: Tekshirish moslamalarini qanday qurish haqida batafsil ma'lumot
1 -ilova: Tekshirish moslamalarini qanday qurish haqida batafsil ma'lumot

Mavjud materialga va didingizga qarab, siz tekshirgichni har xil usulda amalga oshirishingiz mumkin.

Men ularni yog'och qutilar bilan amalga oshirishni yaxshi ko'raman (bu sahifadagi rasmlarga qarang). Arduino uchun asosiy quti, VGA ulagichi va birinchi pleer tugmalari va potenziometr; ikkinchi (kichikroq) faqat ikkinchi o'yinchi tugmasi va g'ildiragi uchun (Pong va chizilgan o'yinchoq uchun kerak). Yana bir variant - hamma narsani bitta katta qutiga qo'yish.

Avval VGA portini ulashni tavsiya qilaman. Birinchi va ikkinchi rasmlarda siz ba'zi tafsilotlarni ko'rishingiz mumkin: 6 va 7 -pimlarga ulangan qizil va yashil rangdagi ikkita 470 Ohmli rezistorga va gorizontal va vertikal sinxronizatsiya signallari uchun 3 va 9 -pinlarga 68 Ohmli ikkita qarshilikka e'tibor bering.

Siz VGA DSUB15 ulagichiga ulangan pinlarga qarab turli xil rang kombinatsiyalarini tanlashingiz mumkin, 1, 2 va 3 -pinlar mos ravishda Qizil, Yashil, Moviy (RGB) ni ifodalaydi. Men 1 va 2 -chi pinlarni uladim, shuning uchun menda quyidagi rang kombinatsiyasi bor: (0, 0) = qora; (1, 0) = qizil; (0, 1) = yashil; (1, 1) = sariq.

Har xil imkoniyatlar uchun VGAx kutubxonalarini yuklagan sahifadagi ma'lumotlarni o'qishni taklif qilaman.

VGA ulagichi tayyor bo'lgach, tugmalar, g'ildiraklar va karnay uchun boshqa barcha kabellarni tayyorlashingiz mumkin (2 -rasmga qarang).

Endi hamma narsani bir joyga to'plang: esda tutingki, har bir tugma pimi 1 yoki 2 kOhmlik rezistor orqali erga ulanishi kerak, aks holda tugma ochilganda pin holati aniqlanmasligi mumkin. Bu shuni anglatadiki, agar pin o'chirilgan bo'lsa, siz uni tasodifiy (statik) kuchlanishga ega bo'lishingiz mumkin. Ushbu ko'rsatmaning ikkinchi bosqichidagi sxemani batafsilroq ko'rib chiqing.

Oxirgi qadam - hamma narsani joyida tuzatish. Men issiq yopishtiruvchi quroldan foydalandim, lekin siz o'zingiz yoqtirgan usuldan foydalanishingiz mumkin.

4 -qadam: 2 -ilova: Xotira chegaralari haqida ba'zi fikrlar

Oddiy Arduino VGA signalini va bu o'yinlarning barchasini birgalikda ishlab chiqarishi ajablanarli. Haqiqiy shishaning bo'yni-bu SRAMning etishmasligi. AVR mikrokontrolerida o'zgaruvchilarni saqlash va boshqarish uchun atigi 2048 bayt mavjud va VGAx kutubxonasi ekran o'zgaruvchilarini 120x60 pikselli ramka buferida saqlaydi, bu erda har bir pikselga 2 bit (4 ta rang) kerak bo'ladi, jami 1800 bayt. Bu shuni anglatadiki, eskiz o'zgaruvchilari uchun atigi 248 bayt qoldi. Bundan tashqari, mening tajribamga ko'ra, beqarorlikni oldini olish uchun kamida 100 bayt bo'sh joy qoldirilishi kerak. 1950 dan yuqori baytli dinamik xotiradan foydalanib, mikrokontroller g'alati va oldindan aytib bo'lmaydigan xatti -harakatlarni ko'rsata boshlaydi.

Bu shuni anglatadiki, barcha o'zgaruvchilar turli xil o'yinlar o'rtasida taqsimlanishi kerak va bu kodni o'qib bo'lmaydigan va disk raskadrovka qilishni qiyinlashtiradi. Oldingi eskizga "yangi o'yin qo'shish" shunchaki masala emas, balki hamma kodni chuqur o'zgartirish va optimallashtirish kerak.

Bundan tashqari, men minimal mumkin bo'lgan o'zgarmaydigan formatni ishlatishim kerak edi: masalan, barcha koordinatalar uchun "int" o'rniga "bayt" dan foydalanishim kerak edi, yoki boshqa hollarda "float" o'rniga "int" ni tanlashim kerak edi.

Nihoyat, mening bilimim VGAx kutubxonasi va ajoyib BitNinja o'yini yaratuvchisi Sandro Maffiodo aka Smafferga ketadi. Bu kutubxonasiz bu loyihani amalga oshirish mumkin emas edi.

Oddiy, ammo kulgili Stacker o'yini uchun Nikita Kurylevga ham rahmat.

Tavsiya: