Съдържание:

Arduino VGA конзола с пет игри: 4 стъпки
Arduino VGA конзола с пет игри: 4 стъпки

Видео: Arduino VGA конзола с пет игри: 4 стъпки

Видео: Arduino VGA конзола с пет игри: 4 стъпки
Видео: Morning Routine (10 DIY Ideas, Makeup, Healthy Recipes) 2024, Юли
Anonim
Image
Image
Arduino VGA конзола с пет игри
Arduino VGA конзола с пет игри
Arduino VGA конзола с пет игри
Arduino VGA конзола с пет игри

В предишните си Instructables съм възпроизвел опростени версии на някои от най -популярните класически аркадни игри, с помощта на гол Arduino и няколко други компонента. По -късно се присъединих към пет от тях в една скица. Тук ще ви покажа как можете да изградите обикновена конзола, която да играе Pong, Breakout, Bomber, Tetris и играчка за рисуване, вдъхновена от Etch-a-Sketch. Тази конзола може да се използва и за игра на Snake и още две игри, написани от други автори: Bit Ninja от Sandro Maffiodo известен още като „Smaffer“и Stacker от Nikita Kurylev.

Основната характеристика е генерирането на VGA сигнал, благодарение на библиотеката VGAx, поради което конзолата се нуждае от VGA монитор. Моята цел, както обикновено, е да избегна всякакъв "специален компонент", за да го изградя, тогава нямате нужда от никаква поддържаща IC или щитове! Единствените компоненти са два потенциометра, пет бутона, няколко резистора и 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). Предупреждението за ниска налична памет е нормално. Ако нямате други грешки, всичко е наред и веднага можете да започнете да изграждате своя собствена конзола.

За това ви трябва:

  • Arduino Uno Rev. 3 или Arduino Nano 3.x (ATmega328)
  • съединител DSUB15, т.е. VGA женски конектор или VGA кабел, който трябва да се отреже.
  • резистори: 2 x 68 Ohm и 2 x 470 Ohm и 5 x 1 до 2 kOhm
  • два линейни потенциометра от 10 kOhm (подобни стойности също са добре)
  • пет бутона
  • някакво парче кабел
  • една или две хубави кутии за поставяне на всички компоненти.

Факултативно:

  • дъска или лента
  • пиезо говорител

Схемата е докладвана в горната част на тази стъпка, заедно с пример за завършена „конзола“.

схемата показва как да свържете бутон и потенциометър. По -конкретно, трябва да свържете пет бутона към щифтове 5, 10, 11, 12 и 13 съответно. Действието, извършено от всеки бутон, е описано в горната дясна таблица в схемата. Вляво е показано как да свържете потенциометър (имате нужда от два потенциометра към щифтове A1 и A2). Високоговорителят трябва да бъде свързан към аналогов извод A0.

Поставих дъската Arduino с VGA конектора в дървена кутия, която съдържа и първия потенциометър на плейъра и четири бутона, докато вторият потенциометър на плейъра и неговият бутон за стартиране са в отделна и по -малка кутия.

Ако тази играчка ви харесва и решите да я възпроизведете, оценявам, ако напишете коментар или изпратите снимка в секцията за коментари по -долу.

Стъпка 2: Игри от други автори

Sandro Maffiodo наскоро публикува играта BitNinja. Можете да намерите повече информация тук и да изтеглите кода тук.

За да използвате моята конзола, просто трябва да пренастроите бутона в кода му, както следва:

#define BTN_UP 11 (вместо 13)

#define BTN_LEFT 10 (вместо 12)

#define BTN_RIGHT 12 (вместо 11)

Stacker, от Никита Курилев, е достъпен тук. Повече информация тук.

Отново трябва да пренастроите един бутон в различна част на кода: просто заменете digitalRead (2) с digitalRead (13)

Стъпка 3: Приложение 1: Повече подробности за това как да изградите контролерите

Приложение 1: Повече подробности за това как да изградите контролерите
Приложение 1: Повече подробности за това как да изградите контролерите
Приложение 1: Повече подробности за това как да изградите контролерите
Приложение 1: Повече подробности за това как да изградите контролерите
Приложение 1: Повече подробности за това как да изградите контролерите
Приложение 1: Повече подробности за това как да изградите контролерите
Приложение 1: Повече подробности за това как да изградите контролерите
Приложение 1: Повече подробности за това как да изградите контролерите

Можете да реализирате контролера по много различни начини, в зависимост от наличния материал и вашия вкус.

Обичам да ги реализирам с дървени кутии (вижте снимките на тази страница). Основна кутия за Arduino, VGA конектора и бутоните на първия плейър и потенциометър; втори (по -малък) само за бутона и колелото на втория играч (необходим за понг и играчката за рисуване). Друга възможност е да поставите всичко в една по -голяма кутия.

Първо препоръчвам да свържа VGA порта. На първата и втората снимка можете да видите някои подробности: обърнете внимание на двата резистора от 470 ома за червено и зелено, свързани съответно към пинове 6 и 7, и два 68 ома към пинове 3 и 9 за хоризонтален и вертикален сигнал за синхронизация.

Можете да избирате различни цветови комбинации в зависимост от това кои щифтове свързвате към конектора VGA DSUB15, щифтовете 1, 2 и 3 представляват съответно червено, зелено, синьо (RGB). Свързах щифтовете 1 и 2, като по този начин имам следната цветова комбинация: (0, 0) = черно; (1, 0) = червено; (0,1) = зелено; (1, 1) = жълто.

За всички различни възможности предлагам да прочетете подробностите на страницата, където изтегляте VGAx библиотеките.

Веднага щом VGA конекторът е готов, можете да подготвите всички останали кабели за бутоните, колелата и високоговорителя (вижте снимка 2).

Сега просто сглобете всичко: не забравяйте, че всеки щифт на бутона трябва да бъде свързан към земята чрез резистор 1 или 2 kOhm, в противен случай, когато бутонът е отворен, състоянието на щифта може да бъде неопределено. Това означава, че ако щифтът е оставен изключен, можете да имате произволно (статично) напрежение върху него, което да го активира. Вижте за повече подробности схемата във втората стъпка на тази инструкция.

Последната стъпка е да поправите всичко на мястото си. Използвах пистолета за горещо лепило, но можете да използвате предпочитания от вас метод.

Стъпка 4: Приложение 2: Някои съображения относно ограниченията на паметта

Удивително е, че един прост Arduino е в състояние да генерира VGA сигнал и всички тези игри заедно. Истинското гърло на бутилката е липсата на SRAM. Микроконтролерът AVR разполага само с 2048 байта за съхранение и манипулиране на променливите, а библиотеката VGAx съхранява променливите на екрана в рамков буфер 120x60 пиксела, където всеки пиксел се нуждае от 2 бита (4 цвята), за общо 1800 байта. Това означава, че за променливите на скицата са останали само 248 байта. Освен това, според моя опит, човек трябва да остави поне 100 байта свободни, за да избегне нестабилността. Използвайки над 1950 байта динамична памет, микроконтролерът започва да показва странно и непредсказуемо поведение.

Това означава, че всички променливи трябва да бъдат споделени между различните игри и това прави кода доста нечетлив и труден за отстраняване на грешки. Не е само въпросът да "добавите нова игра" към предишната скица, но целият код трябва да бъде дълбоко променен и оптимизиран.

Освен това трябваше да използвам минимално възможния променлив формат: например за всички координати трябваше да използвам „байт“вместо „int“или, в други случаи, трябваше да предпочитам „int“вместо „float“.

И накрая, моето признание отива при Sandro Maffiodo, известен още като Smaffer, създателят на библиотеката VGAx и страхотната игра BitNinja. Без тази библиотека този проект не би могъл да бъде реализиран.

Благодаря и на Никита Курилев за простата, но забавна игра Stacker.

Препоръчано: