Съдържание:

Аркадна игра Stackers: 6 стъпки (със снимки)
Аркадна игра Stackers: 6 стъпки (със снимки)

Видео: Аркадна игра Stackers: 6 стъпки (със снимки)

Видео: Аркадна игра Stackers: 6 стъпки (със снимки)
Видео: Sovereign Skies - Part 3: board game tutorial 2024, Юли
Anonim
Аркадна игра Stackers
Аркадна игра Stackers

Здравейте момчета, днес искам да споделя с вас тази невероятна аркадна игра, която можете да направите с куп светодиоди Ws2812b и микроконтролер/FPGA. Behold Stack Overflow - нашата хардуерна реализация на класическа аркадна игра. Това, което започна като училищен проект, бързо се превърна в труд на любовта, тъй като започнахме да отделяме все повече време за разработване на нашата игра и да се учим повече от нея (и да пренебрегваме обучението си в процеса xD). В крайна сметка нашата игра беше толкова добре изградена и добре приета от нашето училище, че беше конфискувана (като демонстрационен материал за следващата партида ученици). Е, винаги можем да изградим втори. Да започваме!

Онлайн версия на играта:

Стъпка 1: Какво ви трябва?

Какво ти е необходимо?
Какво ти е необходимо?
Какво ти е необходимо?
Какво ти е необходимо?
Какво ти е необходимо?
Какво ти е необходимо?
Какво ти е необходимо?
Какво ти е необходимо?

Материали:

1. микроконтролер/микрокомпютър/FPGA - FPGA се използва за реализиране на логиката на нашата игра. Изберете вашата дъска, за нашия проект се изисква да използваме платката Mojo FPGA. За непосветените това е вид платка, която използва хардуер за изпълнение на своите функции, а не кодове. Следователно бих казал, че е доста ниско ниво и напълно различно, отколкото ако използвате Arduino или Pi. Ако използвате други дъски, трябва да напишете свой собствен код, но тази игра е доста лесна за кодиране и хей! Сега можете да научите и кодирането!

2. Светодиоди Ws2812b - Тук използваме светодиодите за конструиране на дисплея за нашата игра. Не може да бъде създател, ако не сте докосвали Ws2812b преди xD. Това е едно адресируемо значение, което означава, че можете да отрежете единични светодиоди и да ги поставите във всяка формация, която харесвате. И това е RGB, което означава, че можете да извеждате всеки цвят, който ви харесва. Освен това FastLED - библиотеката Arduino за управление на Ws2812b е много добре развита. Бих препоръчал на хората да използват Arduino вместо FPGA, ако нямате такъв. Можете да закупите светодиодите от Taobao/Amazon, но ние купихме нашите от кулата Sim Lim в Сингапур.

3. Дърво-За външната обвивка използвахме шперплат с дебелина 1 см, а за LED матрицата-шперплат с дебелина 0,3 см. Открихме нашите доставки на скрап от лабораторията на нашето училище.

4. Акрил за разсейване на светлината - За нашия екран опитахме различни видове акрил и открихме този матиращ акрил, наречен PL -422, който е наистина добър за разсейване на светлината. Ако не можете да намерите точния модел, опитайте да потърсите матови акрили. Купихме нашите в Dama Plastics в Сингапур.

5. Пяна дъска - За да отделим всеки отделен пиксел светлина, се нуждаехме от решетъчна структура и тази пяна е идеалният материал за това. Купихме пяна с дебелина 0,5 см в училищната ни книжарница.

6. Голям червен бутон - Добре, не е необходимо за нас да имаме толкова голям червен бутон, но винаги е добре да имаме бутон, който хората да пляскат! xD Купихме го в кулата Sim Lim в Сингапур.

Инструменти:

1. Лепило за дърво

2. Поялник

3. Припой

4. Проводници. Най -добре е да имате меки проводници в сравнение с по -твърдите. И едноядрен в сравнение с многожилен.

5. Машина за сваляне на тел

6. Резачка за тел

7. Пробийте с 1 мм свредла

8. Трион за превъртане

9. Лентов трион

Отстраняване на грешки:

1. Променливо захранване

2. Осцилоскоп

Стъпка 2: Бързо прототипиране

Бързо прототипиране
Бързо прототипиране
Бързо прототипиране
Бързо прототипиране
Бързо прототипиране
Бързо прототипиране
Бързо прототипиране
Бързо прототипиране

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

От хардуерна страна, на първия етап току -що тествахме нашата логика за преместване на светлинните модели върху нашата собствена проста LED матрица. След като тествахме, че логиката работи добре, след това излязохме да изрежем ленти от 5 светодиода Ws2812b, само за да тестваме логиката на играта с различни редове. След като това се получи, пристъпваме към производството на LED матрицата в пълен мащаб.

Изпробвахме и различни акрилни проби с LED, преди да се установим за PL-422 като най-добрия светлинен разсейвател. За структурата на сепаратора също изпробвахме различни височини, за да може светодиодът да се разпръсне напълно. В крайна сметка осъзнахме квадрат 3 см*3 см с височина 4 см, за да бъде най -добрият за разпространение. Въз основа на този оптимален размер, ние също решихме какъв е размерът на шперплат, необходим за 5 x 11 LED матрица, като оставихме 0,5 см празнина за пяната между квадратите.

От страна на софтуера се опитваме да бъдем възможно най -модулни - първо тестваме дали светодиодите могат да светят, преди да пристъпим към добавяне на функцията за смяна, а след това други. Резултатите могат да бъдат катастрофални, ако не направите това. Научихме това по трудния начин, докато се опитвахме да кодираме цялата игра на големи парчета, преди да осъзнаем, че не можем да я отстраним. Ох!

Стъпка 3: Изработка на корпуса

Изработка на корпуса
Изработка на корпуса
Изработка на корпуса
Изработка на корпуса
Изработка на корпуса
Изработка на корпуса
Изработка на корпуса
Изработка на корпуса

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

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

За да прикрепите бутона, първо начертахме кръг с размера на диаметъра на микропревключвателя на бутона (долната дълга част на бутона). След това пробихме дупка близо до ръба и използвахме циркуляра, за да изрежем кръг. След това поставихме бутона и го завинтваме.

Изрязахме и тънко парче шперплат като основа на нашата LED матрица според размерите, които сме изчислили преди.

Забележка: Извинявам се за липсата на процес стъпка по стъпка. Не документирахме стъпките по целия път и докато осъзнахме, че трябва да документираме стъпките, обшивката вече беше направена. Диаграмата също не е крайните размери.

Стъпка 4: Създаване на LED матрица

Изработка на LED матрица
Изработка на LED матрица
Изработка на LED матрица
Изработка на LED матрица

Използвайки тънкото парче, което изрязахме по -рано, първо маркираме позицията на всеки светодиод, като начертаем квадрат на базата на нашата структура от пяна и нарисуваме кръст в средата на квадрата като мястото, където трябва да залепим светодиода. След това също пробиваме 3 малки дупки от всяка страна на светодиода, за да преминат проводниците и ги запояваме към всеки светодиод.

Ние подвързваме всеки ред светодиоди чрез техните Data In и Data Out щифтове и запояваме всеки GND и VCC към общ проводник. Водещият Data In ще генерира светлинните модели за всеки ред и ние го свързахме към извода на микроконтролера/FPGA. Можете също така да запоявате последните данни от един ред към водещите данни от друг ред. Начинът на работа на светодиода Ws2812b е, че всеки светодиод съдържа интегрална схема, която ще вземе необходимите данни от проводника и ще предаде останалите по веригата. Базирахме нашия светодиод на друг фантастичен инструмент (всъщност го копирахме точно! XD)

Тук също бихме искали да подчертаем значението на използването на меки проводници. Ако използвате твърди, твърди проводници за водещия пин на Data In, всеки път, когато дърпате жицата, тя може да издърпа медната подложка на вашия Ws2812b, която ще я унищожи. В този проект, преди да преминем към меки проводници, унищожихме общо 40 светодиода, което е 1/3 от светодиодите, необходими за нашия проект.

Инструкции:

Стъпка 5: Писане на кодовете на игрите и отстраняване на грешки в хардуера

Писане на кодовете на игрите и отстраняване на грешки в хардуера
Писане на кодовете на игрите и отстраняване на грешки в хардуера
Писане на кодовете на игрите и хардуер за отстраняване на грешки
Писане на кодовете на игрите и хардуер за отстраняване на грешки
Писане на кодовете на игрите и хардуер за отстраняване на грешки
Писане на кодовете на игрите и хардуер за отстраняване на грешки

Mojo работи на Lucid HDL, който не е най -популярният език там. Не можем да намерим никакви светодиодни библиотеки Ws2812b в Lucid, затова прибягнахме до писането на собствена библиотека, което е много интересно преживяване. За да направим това, първо анализирахме сигнала, който се подава с помощта на FastLED библиотеката на Arduino и написахме кодове, които да го възпроизведат. Ето един трик за хардуерно отстраняване на грешки, осцилоскопът е много, много полезен за анализ на сигнали, било то отстраняване на грешки в собствения ви сигнал, за който не сте сигурни, или проверка и копиране на други сигнали.

След като написахме библиотеката за Ws2812b, след това пристъпихме към кода на играта, използвахме функциите за смяна на битовете, за да преместваме всеки блок наляво и надясно и използвахме Побитово И до И квадратите на всеки ред към предишния ред. Можете също така да мислите за прилагането на това в Arduino, което не би трябвало да е толкова трудно. Дори кодирахме екрани за игри за забавление!

Нашата игра имаше 2 нива, това е играта с видимо подреждане (Зелено) и Второто ниво невидима игра на подреждане (Синьо).

Дори след като сме имали работещи кодове и работеща LED матрица, понякога все още се сблъскваме с проблеми като мигащи светлини или светлини, които не светят, когато не трябва. Проблемът обикновено се дължи на неправилно заземяване, ниво на захранване или смущения. Тук ще ви трябват други хардуерни инструменти за отстраняване на грешки, като например променливо захранване, за да проверите дали захранването на Mojo/Arduino е достатъчно или твърде високо. Според моя опит, Ws2812b има доста широк диапазон от работни напрежения от 2.8v - 5v. Тук имам видео, което показва как светлините полудяват, след като увелича мощността.

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

Кодове на Github:

Побитово изместване на Arduino:

Arduino Bitwise И:

Стъпка 6: Съберете всичко заедно

Сглобявайки всичко заедно
Сглобявайки всичко заедно
Сглобявайки всичко заедно
Сглобявайки всичко заедно
Сглобявайки всичко заедно
Сглобявайки всичко заедно
Сглобявайки всичко заедно
Сглобявайки всичко заедно

Имате корпуса и LED матрицата. Време е да сглобим всичко. Първо поставяме пяната отпред и LED матрицата зад нея и коригираме позицията. Тъй като пяната има много високо триене, тя е монтирана само на триене, докато LED матрицата е горещо залепена на място. След това поставихме екрана пред решетката. След това включихме щифта на всеки ред към микроконтролера и започнахме да играем!:Д

Едно нещо, което ми харесва в този проект, е неговата гъвкавост, винаги можете да препрограмирате микроконтролера да бъде част от друга игра и да опитате нещо като създаване на анимация или игра за реакция. Надявам се, че ви харесва да правите това и да научите нещо за това. GgEz!

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