Obsah:

Arkádová hra Stackers: 6 kroků (s obrázky)
Arkádová hra Stackers: 6 kroků (s obrázky)

Video: Arkádová hra Stackers: 6 kroků (s obrázky)

Video: Arkádová hra Stackers: 6 kroků (s obrázky)
Video: 220 руб за 1 попытку! Вы бы сыграли? #хватайка #clawmachine #win #игра #arcade #play #игры 2024, Listopad
Anonim
Arkádová hra Stackers
Arkádová hra Stackers

Ahoj kluci, dnes se s vámi chci podělit o tuto úžasnou arkádovou hru, kterou můžete vytvořit se spoustou LED diod Ws2812b a mikrokontrolérem/FPGA. Hle Stack Overflow - naše hardwarová implementace klasické arkádové hry. To, co začalo jako školní projekt, se rychle stalo dílem lásky, protože jsme začali trávit více a více času vývojem naší hry a více se z ní učit (a zanedbávat studium v procesu xD). Nakonec byla naše hra tak dobře postavená a dobře přijatá naší školou, že byla zabavena (jako demo materiál pro další várku studentů). Vždy můžeme postavit druhou. Začněme!

Online verze hry:

Krok 1: Co potřebujete?

Co potřebuješ?
Co potřebuješ?
Co potřebuješ?
Co potřebuješ?
Co potřebuješ?
Co potřebuješ?
Co potřebuješ?
Co potřebuješ?

Materiály:

1. Mikrokontrolér/Mikropočítač/FPGA - FPGA slouží k implementaci logiky naší hry. Vyberte si desku, pro náš projekt jsme povinni použít desku Mojo FPGA. Pro nezasvěcené je to typ desky, která k implementaci svých funkcí používá spíše hardware než kódy. Proto bych řekl, že je poměrně nízká a zcela odlišná, než když používáte Arduino nebo Pi. Pokud používáte jiné desky, musíte si napsat vlastní kód, ale tato hra se kóduje docela snadno a hej! Nyní se můžete naučit kódovat také!

2. LED diody Ws2812b - Zde používáme diody LED ke konstrukci displeje pro naši hru. Nemůže být výrobcem, pokud jste se nedotkli Ws2812b před xD. Je to jediné adresovatelné, což znamená, že můžete jednotlivé LED diody odříznout a vložit do libovolné formace, která se vám líbí. A to znamená, že RGB znamená, že můžete produkovat libovolnou barvu, která se vám líbí. FastLED - knihovna Arduino pro ovládání Ws2812b je navíc velmi dobře vyvinutá. Doporučuji lidem, aby místo FPGA používali Arduino, pokud ho nemáte. LED diody můžete zakoupit v Taobao/Amazon, ale ty naše jsme koupili z věže Sim Lim v Singapuru.

3. Dřevo-Na vnější plášť jsme použili překližku o tloušťce 1 cm a pro matici LED jsme použili překližku o tloušťce 0,3 cm. Našli jsme zásoby šrotu z fabické laboratoře naší školy.

4. Akryl rozptylující světlo - Pro naši obrazovku jsme vyzkoušeli různé druhy akrylu a našli jsme tento matný akryl s názvem PL -422, který je opravdu dobrý pro rozptylování světla. Pokud nemůžete najít přesný model, zkuste se podívat po matných akrylech. Koupili jsme naše v Dama Plastics v Singapuru.

5. Foam Board - Abychom oddělili každý jednotlivý pixel světla, potřebovali jsme strukturu mřížky a tato pěna je k tomu ideálním materiálem. V našem školním knihkupectví jsme koupili 0,5 cm silnou pěnovou desku.

6. Velké červené tlačítko - Dobře, není nutné, abychom měli tak velké červené tlačítko, ale je vždy dobré mít tlačítko, na které mohou lidé bouchnout! xD Koupili jsme to ve věži Sim Lim v Singapuru.

Nástroje:

1. Lepidlo na dřevo

2. Páječka

3. Pájka

4. Dráty. Nejlepší je, když máte měkké dráty ve srovnání s tužšími. A jedno jádro ve srovnání s vícejádry.

5. Odstraňovač drátů

6. Řezačka drátu

7. Vrták s vrtáky 1 mm

8. Scroll saw

9. Pásová pila

Ladění:

1. Variabilní napájecí zdroj

2. Osciloskop

Krok 2: Rychlé prototypování

Rychlé prototypování
Rychlé prototypování
Rychlé prototypování
Rychlé prototypování
Rychlé prototypování
Rychlé prototypování
Rychlé prototypování
Rychlé prototypování

Pro náš projekt jsme použili rychlé prototypování před vytvořením naší matice LED a programováním naší hry. Důvodem je to, že nechceme stavět matici LED jen proto, abychom si uvědomili, že naše kódy nefungují nebo naše logika hry je vadná.

Po hardwarové stránce jsme v první fázi jen otestovali naši logiku při posouvání světelných obrazců na naší vlastní jednoduché LED matici. Jakmile jsme otestovali, že logika funguje dobře, šli jsme vystřihnout proužky 5 LED Ws2812b, abychom otestovali naši logiku hry s různými řadami. Jakmile to vyjde, pokračujeme k výrobě matice LED v plném měřítku.

Také jsme testovali různé vzorky akrylátu pomocí LED, než jsme se usadili pro PL-422 jako nejlepší difuzor světla. A u struktury oddělovače jsme také testovali různé výšky, aby se LED plně rozptýlila. Nakonec jsme si uvědomili, že 3 cm*3 cm čtverec s výškou 4 cm je nejlepší pro difúzi. Na základě této optimální velikosti jsme také rozhodli, jaká je velikost překližky potřebné pro matici LED 5 x 11 ponecháním 0,5 cm mezery pro pěnu mezi čtverci.

Po softwarové stránce se snažíme být co nejvíce modulární - nejprve testujeme, zda lze LED diody rozsvítit, než přistoupíme k přidání funkce řazení, a pak další. Výsledky by mohly být katastrofické, pokud to neuděláte. Naučili jsme se to tvrdě, protože jsme zkoušeli kódovat celou hru ve velkém kusu, než jsme si uvědomili, že ji nemůžeme odladit. Au!

Krok 3: Výroba pouzdra

Výroba pouzdra
Výroba pouzdra
Výroba pouzdra
Výroba pouzdra
Výroba pouzdra
Výroba pouzdra
Výroba pouzdra
Výroba pouzdra

Pro naše pouzdro jsme šli s klasickými arkádovými stroji. Nejprve nakrájíme tenkou překližku, abychom rychle prototypovali tvar, protože je snazší a rychlejší řezat tenkou překližku a testovat. Jakmile jsme byli spokojeni se svými rozměry a tvarem, začali jsme ke stavbě opláštění používat silnější překližku. K prořezání silnější překližky jsme použili pásovou pilu a k prořezání tenčích jsme použili kotoučovou pilu. Poté jsme je pomocí lepidla na dřevo slepili.

Na zadní straně překližky jsme chtěli mít snadný přístup k elektronice uvnitř, a proto jsme z ní udělali kus na místě, který můžete snadno odstranit, kdykoli budete chtít.

Pro připojení tlačítka jsme nejprve nakreslili kruh o velikosti průměru mikrospínače tlačítka (spodní dlouhá část tlačítka). Potom jsme vyvrtali díru poblíž okraje a pomocí pily jsme prořízli kruh. Poté jsme tlačítko umístili a zašroubovali.

Také jsme řezali tenký kus překližky jako základ naší LED matrice podle velikostí, které jsme dříve vypočítali.

Poznámka: Omlouvám se za nedostatek podrobného postupu. Kroky jsme celou cestu nedokumentovali a v době, kdy jsme si uvědomili, že kroky musíme zdokumentovat, bylo pouzdro již hotové. Schéma také není konečnými rozměry.

Krok 4: Vytvoření matice LED

Výroba LED matice
Výroba LED matice
Výroba LED matice
Výroba LED matice

Pomocí tenkého kusu, který jsme dříve vystřihli, nejprve označíme polohu každé LED tím, že nakreslíme čtverec na základě naší pěnové struktury a uprostřed čtverce nakreslíme kříž jako místo, kam bychom měli LED přilepit. Poté také vyvrtáme 3 malé otvory na každé straně LED, aby prošly dráty, a přiletujeme je ke každé LED.

Každou řadu LED zapojíme do řetězce pomocí jejich kolíků Data In a Data Out a každý GND a VCC pájíme na společný vodič. Přední Data In bude generovat světelné obrazce pro každý řádek a my jsme jej připojili k pinoutu mikrokontroléru/FPGA. Můžete také pájet poslední Data Out z jednoho řádku na úvodní Data In jiného řádku. Ws2812b LED funguje tak, že každá LED obsahuje integrovaný obvod, který odebere požadovaná data z vodiče a zbytek předá řetězcem. Naši LED jsme založili na dalším fantastickém Instructables (ve skutečnosti jsme ho přesně zkopírovali! XD)

Zde bychom také chtěli zdůraznit důležitost používání měkkých drátů. Pokud použijete na přední kolík Data In tuhé, tvrdé dráty, stane se to pokaždé, když zatáhnete za drát, vytáhne měděné polstrování na vašem Ws2812b, které ho zničí. V tomto projektu, než jsme přešli na měkké vodiče, jsme zničili celkem 40 LED diod, což je 1/3 LED diod potřebných pro náš projekt.

Instruktabilní:

Krok 5: Zápis herních kódů a ladění hardwaru

Zápis herních kódů a ladění hardwaru
Zápis herních kódů a ladění hardwaru
Zápis herních kódů a ladění hardwaru
Zápis herních kódů a ladění hardwaru
Zápis herních kódů a ladění hardwaru
Zápis herních kódů a ladění hardwaru

Mojo běží na Lucid HDL, což není nejpopulárnější jazyk. V Lucidu nemůžeme najít žádnou knihovnu LED Ws2812b, proto jsme se uchýlili k napsání vlastní knihovny, což je velmi zajímavá zkušenost. Za tímto účelem jsme nejprve analyzovali signál, který je předán pomocí knihovny Arduino FastLED, a napsali kódy, které to replikují. Zde je trik ladění hardwaru, osciloskop je velmi, velmi užitečný pro analýzu signálů, ať už jde o ladění vlastního signálu, kterým si nejste jisti, nebo kontrolu a kopírování jiných signálů.

Po napsání knihovny pro Ws2812b pak přejdeme ke kódu pro hru, pomocí funkcí Bit shift jsme přesunuli každý blok doleva a doprava a pomocí Bitwise AND to AND čtverců každého řádku do předchozí řady. Můžete také přemýšlet o implementaci v Arduinu, což by nemělo být tak těžké. Dokonce jsme kódovali herní obrazovky, abychom si to užili!

Naše hra měla 2 úrovně, což je viditelná stohovací hra (zelená) a druhá úroveň neviditelná stohovací hra (modrá).

Dokonce i poté, co jsme měli funkční kódy a funkční LED matici, někdy stále čelíme problémům, jako je blikání světel nebo rozsvícení světel, když by neměly. Problém je obvykle v důsledku nesprávného uzemnění, úrovně napájení nebo rušení. Zde budete potřebovat další nástroje pro ladění hardwaru, jako je variabilní napájecí jednotka, abyste zkontrolovali, zda je napájení Mojo/Arduino dostatečné nebo příliš vysoké. Podle mých zkušeností má Ws2812b docela široký rozsah pracovních napětí od 2,8v - 5v. Tady mám video, které ukazuje, jak se světla po zvýšení výkonu zbláznila.

Další kontrola však odhalila, že jsme měli nějakou nevhodnou pájku, po jejich opětném pájení byl náš problém vyřešen. Může také dojít k problému s rušením nebo křížovým mluvením, ale naštěstí jsme nikdy žádnému z nich nečelili.

Kódy Github:

Bitový posun Arduino:

Arduino Bitwise AND:

Krok 6: Dát vše dohromady

Dát všechno dohromady
Dát všechno dohromady
Dát všechno dohromady
Dát všechno dohromady
Dát všechno dohromady
Dát všechno dohromady
Dát všechno dohromady
Dát všechno dohromady

Máte skříň a matici LED. Nyní je čas dát vše dohromady. Nejprve umístíme pěnu na přední část a LED matici za ni a upravíme polohu. Protože pěna má velmi vysoké tření, bylo namontováno pouze třením, zatímco LED matice je nalepená za tepla. Poté jsme obrazovku umístili před mřížku. Poté jsme připojili pin každého řádku k mikrokontroléru a začali hrát!: D

Jedna věc, která se mi na tomto projektu líbí, je jeho flexibilita, vždy můžete mikrokontrolér přeprogramovat tak, aby byl součástí jiné hry, a zkusit něco jako vytváření animací nebo reakčních her. Doufám, že vás to baví a naučíte se něco pro to. GgEz!

Doporučuje: