Агуулгын хүснэгт:

Таван тоглоомтой Arduino VGA консол: 4 алхам
Таван тоглоомтой Arduino VGA консол: 4 алхам

Видео: Таван тоглоомтой Arduino VGA консол: 4 алхам

Видео: Таван тоглоомтой Arduino VGA консол: 4 алхам
Видео: Alyaska (ice cream) Аляска зайрмаг 2024, Долдугаар сарын
Anonim
Image
Image
Таван тоглоомтой Arduino VGA консол
Таван тоглоомтой Arduino VGA консол
Таван тоглоомтой Arduino VGA консол
Таван тоглоомтой Arduino VGA консол

Өмнөх зааварчилгаандаа би хамгийн алдартай сонгодог аркад тоглоомуудын хялбаршуулсан хувилбаруудыг нүцгэн Arduino болон бусад цөөн хэдэн бүрэлдэхүүн хэсгүүдийн тусламжтайгаар хуулбарласан болно. Хожим нь би ганцхан ноорогоор тэдний тавыг нэгтгэв. Энд би Pong, Breakout, Bomber, Tetris, Etch-a-Sketch-ээс санаа авсан зургийн тоглоом тоглох энгийн консолыг хэрхэн бүтээж болохыг танд үзүүлэх болно. Энэхүү консолыг Могой болон бусад зохиогчдын бичсэн өөр хоёр тоглоомыг тоглуулахад ашиглаж болно: Сандро Маффиодо "Smaffer" -ийн Bit Ninja, Никита Курылевын стекер.

Гол онцлог нь VGAx номын сангийн ачаар VGA дохио үүсгэх бөгөөд ингэснээр консол нь VGA дэлгэцтэй байх шаардлагатай болдог. Миний зорилго бол үүнийг хийх тусгай "бүрэлдэхүүн хэсгээс" зайлсхийх явдал юм. Цорын ганц бүрэлдэхүүн хэсэг нь хоёр потенциометр, таван товчлуур, цөөн тооны резистор ба DSUB15 (VGA) холбогч юм. Пьезо чанга яригч нь заавал биш юм. Эдгээр тоглоомууд хэрхэн харагдаж байгааг энэ хуудсан дээрх зургуудаас харж болно.

VGAx номын сан нь 120 х 60 пикселийн нарийвчлалтай дөрвөн өнгийг ашиглах боломжийг олгодог боловч тийм ч олон биш боловч энэхүү чимэг тоглоомын консолын хувьд хангалттай юм. График нь түүхий боловч потенциометрийн ачаар тоглоомууд жигд ажилладаг. Энгийн дууны эффектүүд бас байдаг.

Алхам 1: Arduino VGA консолоо хэрхэн бүтээх талаар

Arduino VGA консолоо хэрхэн бүтээх вэ
Arduino VGA консолоо хэрхэн бүтээх вэ
Arduino VGA консолоо хэрхэн бүтээх вэ
Arduino VGA консолоо хэрхэн бүтээх вэ

Эхлээд энэ хуудасны доод талд байгаа ArduinoVGAgame.ino ба/эсвэл Snake.ino кодыг татаж аваад компьютер дээрээ ижил нэртэй директорт хуулна уу. VGAx номын санг GitHub дээрх линкээс татаж авна уу. Хамгийн хялбар арга бол үүнийг "номын сан" нэртэй Arduino програм хангамжийн дэд хавтсанд хуулж, танигдах болно.

ЧУХАЛ: энэ номын сан нь Arduno IDE 1.6.4 дээр ажилладаг боловч хуучин эсвэл шинэ хувилбартай бүрэн нийцдэггүй.

Кодыг Arduino самбартаа оруулна уу (Би Uno болон Nano хоёуланг нь туршсан). Санах ой бага байгаа тухай сэрэмжлүүлэг өгөх нь хэвийн үзэгдэл юм. Хэрэв танд өөр алдаа байхгүй бол бүх зүйл хэвийн байгаа тул та шууд өөрийн консолоо эхлүүлж болно.

Үүний тулд танд хэрэгтэй:

  • an Arduino Uno Rev. 3 эсвэл Arduino Nano 3.x (ATmega328)
  • DSUB15 холбогч, өөрөөр хэлбэл VGA эмэгтэй холбогч эсвэл огтлох VGA кабель.
  • эсэргүүцэл: 2 x 68 Ом ба 2 x 470 Ом ба 5 x 1 -ээс 2 кОм хүртэл
  • 10 кОм хэмжээтэй хоёр шугаман потенциометр (ижил утгууд нь бас сайн)
  • таван товчлуур
  • зарим нэг кабель
  • бүх бүрэлдэхүүн хэсгүүдийг тавихын тулд нэг эсвэл хоёр сайхан хайрцаг.

Факультатив:

  • талх эсвэл туузан самбар
  • пьезо чанга яригч

Схемийг энэ алхамын дээд хэсэгт, бэлэн болсон "консол" -ын жишээний хамт мэдээлсэн болно.

схем нь товчлуур ба потенциометрийг хэрхэн холбохыг харуулж байна. Илүү нарийвчлалтай хэлэхэд та 5 товчлуурыг 5, 10, 11, 12, 13 -р зүү рүү холбох хэрэгтэй. Товчлуур бүрийн гүйцэтгэсэн үйлдлийг схемийн баруун дээд хүснэгтэд тайлбарласан болно. Зүүн талд потенциометрийг хэрхэн холбохыг харуулав (A1 ба A2 тээглүүрт хоёр потенциометр хэрэгтэй). Чанга яригч нь аналог A0 зүүтэй холбогдсон байх ёстой.

Би VGA холбогчтой Arduino самбарыг модон хайрцагт байрлуулсан бөгөөд эхний тоглогчийн потенциометр ба дөрвөн товчлуурыг багтаасан бол хоёр дахь тоглогчийн потенциометр ба түүний эхлэх товч нь тусдаа жижиг хайрцагт байна.

Хэрэв танд энэ тоглоом таалагдаж, түүнийгээ дахин бүтээхээр шийдсэн бол доорх коммент хэсэгт сэтгэгдэл бичих эсвэл зургаа илгээсэнд баяртай байна.

Алхам 2: Бусад зохиолчдын тоглоомууд

Сандро Маффиодо саяхан BitNinja тоглоомыг нийтлүүлэв. Youn эндээс илүү их мэдээлэл олж, кодыг эндээс татаж авах боломжтой.

Миний консолыг ашиглахын тулд та түүний код дээрх товчлуурыг дараах байдлаар дахин тохируулах хэрэгтэй.

#тодорхойлох BTN_UP 11 (13 -ийн оронд)

#тодорхойлох BTN_LEFT 10 (оронд 12)

#тодорхойлох BTN_RIGHT 12 (оронд 11)

Никита Курылевын стекерийг эндээс авах боломжтой. Дэлгэрэнгүй мэдээллийг эндээс авна уу.

Дахин хэлэхэд та кодын өөр хэсэгт нэг товчлуурыг дахин хийх хэрэгтэй болно: digitalRead (2) -ийг digitalRead (13) -ээр солиход л хангалттай.

Алхам 3: Хавсралт 1: Хянагчдыг хэрхэн бүтээх тухай дэлгэрэнгүй мэдээлэл

Хавсралт 1: Хянагчдыг хэрхэн бүтээх тухай дэлгэрэнгүй мэдээлэл
Хавсралт 1: Хянагчдыг хэрхэн бүтээх тухай дэлгэрэнгүй мэдээлэл
Хавсралт 1: Хянагчдыг хэрхэн бүтээх тухай дэлгэрэнгүй мэдээлэл
Хавсралт 1: Хянагчдыг хэрхэн бүтээх тухай дэлгэрэнгүй мэдээлэл
Хавсралт 1: Хянагчдыг хэрхэн бүтээх тухай дэлгэрэнгүй мэдээлэл
Хавсралт 1: Хянагчдыг хэрхэн бүтээх тухай дэлгэрэнгүй мэдээлэл
Хавсралт 1: Хянагчдыг хэрхэн бүтээх тухай дэлгэрэнгүй мэдээлэл
Хавсралт 1: Хянагчдыг хэрхэн бүтээх тухай дэлгэрэнгүй мэдээлэл

Та хянагчийг бэлэн байгаа материал, таны амтаас хамааран янз бүрийн аргаар ухамсарлаж чадна.

Би тэдгээрийг модон хайрцгаар ухамсарлах дуртай (энэ хуудсан дээрх зургуудыг үзнэ үү). Arduino, VGA холбогч, анхны тоглуулагчийн товчлуур ба потенциометрийн гол хайрцаг; хоёр дахь (жижиг) нь зөвхөн хоёр дахь тоглогчийн товчлуур ба дугуйнд зориулагдсан (Понг ба зургийн тоглоомонд шаардлагатай). Өөр нэг боломж бол бүх зүйлийг нэг том хайрцагт хийх явдал юм.

Эхлээд би VGA портыг холбохыг зөвлөж байна. Эхний болон хоёрдахь зурган дээр та зарим нарийн ширийн зүйлийг харж болно: 6 ба 7 -р зүүтэй холбогдсон Улаан, Ногоон гэсэн 470 Ом эсэргүүцэл, хэвтээ ба босоо синхрончлолын дохионы хувьд 3 ба 9 -р зүүтэй 68 68 Ом гэсэн хоёр тэмдэглэлийг анхаарна уу.

Та VGA DSUB15 холбогч дээр холбосон зүүгээс хамааран өөр өөр өнгөний хослолыг сонгож болно, 1, 2, 3 -р зүү нь Улаан, Ногоон, Цэнхэр (RGB) тус тус илэрхийлнэ. Би 1 ба 2 -р зүүг холбосон тул надад дараахь өнгөний хослол байна: (0, 0) = хар; (1, 0) = улаан; (0, 1) = ногоон; (1, 1) = шар.

Янз бүрийн боломжийн хувьд VGAx номын санг татаж авах хуудсан дээрх дэлгэрэнгүй мэдээллийг уншихыг санал болгож байна.

VGA холбогч бэлэн болмогц товчлуур, дугуй, чанга яригчийн бусад бүх кабелийг бэлтгэх боломжтой (Зураг 2 -ийг үзнэ үү).

Одоо бүх зүйлийг нэг дор тавь: товчлуурын зүү бүрийг 1 эсвэл 2 кОм эсэргүүцэлтэй холбож холбох шаардлагатай гэдгийг санаарай, эс тэгвээс товчлуур нээлттэй байх үед зүүний төлөв тодорхойгүй байж магадгүй юм. Энэ нь хэрэв зүүг салгасан бол түүнийг идэвхжүүлэх боломжтой санамсаргүй (статик) хүчдэлтэй байж болно гэсэн үг юм. Энэхүү зааварчилгааны хоёр дахь алхам дахь схемийг нарийвчлан судалж үзнэ үү.

Сүүлийн алхам бол бүх зүйлийг байрандаа засах явдал юм. Би халуун цавуу буу ашигласан, гэхдээ та өөрийн дуртай аргыг ашиглаж болно.

Алхам 4: Хавсралт 2: Санах ойн хязгаарын талаар зарим анхаарах зүйлс

Энгийн Arduino нь VGA дохио болон эдгээр бүх тоглоомыг хамтад нь үүсгэж чаддаг нь гайхалтай юм. Жинхэнэ лонхны хүзүү бол SRAM-ийн дутагдал юм. AVR микроконтроллер нь хувьсагчдыг хадгалах, удирдахад ердөө 2048 байт байдаг бөгөөд VGAx номын сан нь дэлгэцийн хувьсагчдыг 120x60 пикселийн хүрээний буферт хадгалдаг бөгөөд пиксел бүрт 2 бит (4 өнгө) шаардлагатай бөгөөд нийт 1800 байт байдаг. Энэ нь ноорог хувьсагчдад ердөө 248 байт үлдсэн гэсэн үг юм. Цаашилбал, миний туршлагаас харахад тогтворгүй байдлаас зайлсхийхийн тулд дор хаяж 100 байтыг чөлөөтэй үлдээх хэрэгтэй. 1950 байт гаруй динамик санах ойг ашигласнаар микроконтроллер хачин, урьдчилан тааварлах боломжгүй зан үйлийг үзүүлж эхэлдэг.

Энэ нь бүх хувьсагчдыг өөр өөр тоглоомуудын дунд хуваалцах ёстой гэсэн үг бөгөөд энэ нь кодыг уншаагүй, дибаг хийхэд хэцүү болгодог. Өмнөх ноорог дээр "шинэ тоглоом нэмэх" асуудал биш, харин бүх кодыг гүнзгий өөрчилж, оновчтой болгох ёстой.

Цаашилбал, би хамгийн бага боломжит хувьсагчийн форматыг ашиглах ёстой байсан: жишээлбэл, би бүх координатын хувьд "int" биш "байт" ашиглах ёстой байсан, бусад тохиолдолд "float" биш харин "int" -ийг сонгох шаардлагатай болсон.

Эцэст нь хэлэхэд миний мэдлэг бол VGAx номын сан, гайхалтай BitNinja тоглоомыг бүтээгч Сандро Маффиодо ака Смаффер руу явдаг. Энэхүү номын сангүй бол энэ төслийг хэрэгжүүлэх боломжгүй байсан.

Энгийн боловч хөгжилтэй Stacker тоглоомыг бүтээсэн Никита Курылевт баярлалаа.

Зөвлөмж болгож буй: