Përmbajtje:

Stackers Arcade Lojë: 6 hapa (me fotografi)
Stackers Arcade Lojë: 6 hapa (me fotografi)

Video: Stackers Arcade Lojë: 6 hapa (me fotografi)

Video: Stackers Arcade Lojë: 6 hapa (me fotografi)
Video: STACKER 6 2024, Nëntor
Anonim
Stackers Arcade Game
Stackers Arcade Game

Përshëndetje djema, sot dua të ndaj me ju këtë lojë të mahnitshme arcade që mund të bëni me një bandë LEDs Ws2812b dhe një mikrokontrollues/FPGA. Ja Stack Overflow - zbatimi ynë harduerik i një loje klasike arcade. Ajo që filloi si një projekt shkollor u bë shpejt një punë dashurie pasi filluam të kalonim gjithnjë e më shumë kohë në zhvillimin e lojës sonë dhe të mësojmë më shumë prej saj (dhe duke lënë pas dore studimet tona në proces xD). Në fund, loja jonë u ndërtua aq mirë dhe u prit mirë nga shkolla jonë saqë u konfiskua (si material demo për grupin e ardhshëm të nxënësit). Epo, ne gjithmonë mund të ndërtojmë një të dytë. Le të fillojmë!

Versioni online i lojës:

Hapi 1: Çfarë ju nevojitet?

Cfare te nevojitet?
Cfare te nevojitet?
Cfare te nevojitet?
Cfare te nevojitet?
Cfare te nevojitet?
Cfare te nevojitet?
Cfare te nevojitet?
Cfare te nevojitet?

Materiale:

1. një Mikrokontrollues/Mikrokompjuter/FPGA - FPGA përdoret për të zbatuar logjikën e lojës sonë. Zgjidhni bordin tuaj, për projektin tonë na kërkohet të përdorim tabelën Mojo FPGA. Për të pa iniciuarit, është një lloj bordi që përdor harduer për të zbatuar funksionet e tij dhe jo kodet. Prandaj, unë do të thoja se niveli i tij është mjaft i ulët dhe krejtësisht i ndryshëm sesa nëse përdorni Arduino ose Pi. Nëse përdorni tabela të tjera, duhet të shkruani kodin tuaj, por kjo lojë është mjaft e lehtë për tu koduar dhe hej! Tani mund të mësoni edhe kodim!

2. LEDs Ws2812b - Këtu ne po përdorim LED për të ndërtuar ekranin për lojën tonë. Nuk mund të jeni krijues nëse nuk keni prekur Ws2812b para xD. Meaningshtë një kuptim i vetëm i adresueshëm që ju mund të ndërprisni LED -të e vetme dhe t'i ngjitni ato në çdo formacion që ju pëlqen. Dhe është RGB që do të thotë që ju mund të jepni çdo ngjyrë që ju pëlqen. Për më tepër, FastLED - biblioteka Arduino për kontrollin e Ws2812b është zhvilluar shumë mirë. Unë do t'i rekomandoja njerëzve që të përdorin Arduino në vend të FPGA nëse nuk e keni një të tillë. Ju mund të blini LED nga Taobao/Amazon, por ne i kemi blerë tonat nga kulla Sim Lim në Singapor.

3. Druri-Për shtresën e jashtme kemi përdorur kompensatë të trashë 1cm dhe për matricën LED kemi përdorur kompensatë me trashësi 0.3cm. Ne gjetëm furnizimin tonë të drurit të mbeturinave nga laboratori fabrikë i shkollës sonë.

4. Akrilik që shpërndan dritë - Për ekranin tonë, ne provuam lloje të ndryshme të akrilikut dhe gjetëm këtë akrilik të mbuluar me brymë të quajtur PL -422 i cili është vërtet i mirë për shpërndarjen e dritës. Nëse nuk mund ta gjeni modelin e saktë, provoni të kërkoni akrilikë të mbuluar me brymë. Ne i blemë tonat në Dama Plastics në Singapor.

5. Tabela e Shkumës - Për të ndarë secilën piksel individual të dritës, na duhej një strukturë rrjeti dhe kjo shkumë është materiali ideal për ta bërë këtë. Ne blemë tabelë shkumë me trashësi 0.5 cm në librarinë e shkollës sonë.

6. Butoni i Madh i Kuq - Ok, nuk është e nevojshme që ne të kemi një buton kaq të madh të kuq, por është gjithmonë mirë të kemi një buton që njerëzit të përplasen! xD Ne e blemë atë në kullën Sim Lim në Singapor.

Mjetet:

1. Ngjitës druri

2. Hekuri për saldim

3. Lidhës

4. Tela. Bestshtë më mirë nëse keni tela të butë në krahasim me ato më të forta. Dhe bërthamë e vetme në krahasim me shumë -bërthamën.

5. Zhveshës me tela

6. Prerës telash

7. Stërviteni me copa stërvitje 1mm

8. Sharrë rrotulluese

9. Sharrë bande

Debugging:

1. Njësia e furnizimit me energji të ndryshueshme

2. Osciloskopi

Hapi 2: Prototipimi i shpejtë

Prototipizimi i shpejtë
Prototipizimi i shpejtë
Prototipizimi i shpejtë
Prototipizimi i shpejtë
Prototipizimi i shpejtë
Prototipizimi i shpejtë
Prototipizimi i shpejtë
Prototipizimi i shpejtë

Për projektin tonë, ne përdorëm prototipimin e shpejtë para se të ndërtonim matricën tonë LED dhe të programonim lojën tonë. Arsyeja për ta bërë këtë është se ne nuk duam të ndërtojmë matricën LED vetëm për të kuptuar se kodet tona nuk funksionojnë ose logjika jonë e lojës është e gabuar.

Nga ana harduerike, në fazën e parë ne sapo testuam logjikën tonë në zhvendosjen e modeleve të dritës në matricën tonë të thjeshtë LED. Pasi testuam që logjika funksionon mirë, atëherë dolëm për të prerë shirita prej 5 LEDs Ws2812b vetëm për të testuar logjikën tonë të lojës me rreshta të ndryshëm. Pasi të funksionojë, ne vazhdojmë të fabrikojmë matricën LED në shkallë të plotë.

Ne gjithashtu testuam mostra të ndryshme akrilike me LED para se të vendoseshim për PL-422 si shpërndarësi më i mirë i dritës. Dhe për strukturën ndarëse ne gjithashtu testuam lartësi të ndryshme që LED të shpërndahet plotësisht. Në fund kuptuam 3cm*3cm katror me 4cm lartësi për të qenë më i miri për difuzion. Bazuar në këtë madhësi optimale, ne gjithashtu vendosëm se cila është madhësia e kompensatës së nevojshme për një matricë LED 5 x 11 duke lënë boshllëk 0.5 cm për shkumën midis shesheve.

Nga ana softuerike, ne përpiqemi të jemi sa më modularë - së pari testojmë nëse LED -të mund të ndizen para se të vazhdoni të shtoni funksionin e ndërrimit, dhe pastaj të tjerët. Rezultatet mund të jenë katastrofike nëse nuk e bëni këtë. Ne e mësuam këtë në mënyrën e vështirë pasi u përpoqëm të kodonim të gjithë lojën në një pjesë të madhe para se të kuptonim se nuk mund ta korrigjonim atë. Ouch!

Hapi 3: Bërja e zorrës

Marrja e zorrës
Marrja e zorrës
Marrja e zorrës
Marrja e zorrës
Marrja e zorrës
Marrja e zorrës
Marrja e zorrës
Marrja e zorrës

Për shtresën tonë, ne shkuam me ndjenja dhe pamje klasike të makinave arcade. Së pari, ne prerë disa kompensatë të hollë për të prototipuar shpejt formën pasi është më e lehtë dhe më e shpejtë të presësh kompensatë të hollë dhe të provosh. Pasi të ishim të kënaqur me dimensionet dhe formën tonë, filluam të përdorim kompensatë më të trashë për të ndërtuar shtresën e jashtme. Ne përdorëm një sharrë për të prerë kompensatë më të trashë dhe një sharrë rrotulluese për të prerë ato më të holla. Pas kësaj, ne përdorëm zam druri për t'i ngjitur ato së bashku.

Për pjesën e prapme të kompensatës, ne donim të kishim qasje të lehtë në elektronikë brenda, kështu që e bëmë atë në një pjesë të mbyllur në vend që mund ta hiqni me lehtësi sa herë që dëshironi.

Për të bashkangjitur butonin, ne së pari vizatuam një rreth me madhësinë e diametrit të mikroçelësit të butonit (pjesa e gjatë e poshtme e butonit). Ne pastaj shpuam një vrimë pranë buzës dhe përdorëm sharrën për të parë një rreth përmes. Pastaj vendosëm butonin dhe e vidhëm.

Ne gjithashtu kemi prerë një copë kompensatë të hollë si bazë të matricës sonë LED sipas madhësive që kemi llogaritur më parë.

Shënim: Kërkoj ndjesë për mungesën e procesit hap pas hapi. Ne nuk i dokumentuam hapat gjatë gjithë rrugës dhe deri në kohën kur kuptuam se duhet të dokumentojmë hapat, zorrë ishte bërë tashmë. Diagrami gjithashtu nuk është përmasat përfundimtare.

Hapi 4: Bërja e matricës LED

Bërja e matricës LED
Bërja e matricës LED
Bërja e matricës LED
Bërja e matricës LED

Duke përdorur copën e hollë që kemi prerë më herët, së pari shënojmë pozicionin e secilës LED duke vizatuar një katror bazuar në strukturën tonë të shkumës dhe duke tërhequr një kryq në mes të sheshit si vendi ku duhet të ngjisim LED. Pastaj ne gjithashtu shpojmë 3 vrima të vogla në secilën anë të LED për të kaluar telat dhe i lidhim ato në secilën LED.

Ne lidhim me zinxhir çdo rresht LED me kunjat e tyre Data In dhe Data Out dhe bashkojmë secilën GND dhe VCC në një tel të zakonshëm. Data kryesore do të krijojë modelet e dritës për secilën rresht dhe ne e lidhim atë me pinout e mikrokontrolluesit/FPGA. Ju gjithashtu mund të lidhni të dhënat e fundit nga një rresht në të dhënat kryesore të një rreshti tjetër. Mënyra se si funksionon LED Ws2812b është se çdo LED përmban një IC që do të marrë të dhënat e kërkuara nga teli dhe do të kalojë pjesën tjetër poshtë zinxhirit. Ne e bazuam LED -in tonë në një udhëzues tjetër fantastik (në fakt, ne e kopjuam atë saktësisht! XD)

Këtu ne gjithashtu do të donim të theksonim rëndësinë e përdorimit të telave të butë. Nëse përdorni tela të ngurtë dhe të fortë për të dhënat kryesore në pin, ajo që ndodh është sa herë që tërhiqni tela mund të nxjerrë mbushjen e bakrit në Ws2812b tuaj e cila do ta shkatërrojë atë. Në këtë projekt, para se të kalonim në tela të butë, ne shkatërruam gjithsej 40 LED, që është 1/3 e LED -ve të nevojshme për projektin tonë.

E udhëzueshme:

Hapi 5: Shkrimi i Kodeve të Lojërave dhe Debugging Hardware

Shkrimi i Kodeve të Lojërave dhe Debugging Hardware
Shkrimi i Kodeve të Lojërave dhe Debugging Hardware
Shkrimi i Kodeve të Lojërave dhe Debugging Hardware
Shkrimi i Kodeve të Lojërave dhe Debugging Hardware
Shkrimi i Kodeve të Lojërave dhe Debugging Hardware
Shkrimi i Kodeve të Lojërave dhe Debugging Hardware

Mojo funksionon në Lucid HDL, e cila nuk është gjuha më e popullarizuar atje. Ne nuk mund të gjejmë asnjë bibliotekë Ws2812b LED në Lucid, kështu që ne iu drejtuam shkrimit të bibliotekës sonë, e cila është një përvojë shumë interesante. Për ta bërë këtë, ne së pari analizuam sinjalin që kalon duke përdorur bibliotekën FastLED të Arduino dhe shkruam kode për ta përsëritur atë. Këtu është një truk i korrigjimit të harduerit, oshiloskopi është shumë, shumë i dobishëm për të analizuar sinjalet, qoftë debugimi i sinjalit tuaj për të cilin nuk jeni të sigurt ose kontrolloni dhe kopjoni sinjale të tjera.

Pas shkrimit të bibliotekës për Ws2812b, ne vazhdojmë me kodimin e lojës, përdorëm funksionet Bit shift për të lëvizur secilin bllok në të majtë dhe në të djathtë dhe përdorëm Bitwise AND to AND katrorët e secilës rresht në rreshtin e mëparshëm. Ju gjithashtu mund të mendoni ta zbatoni atë në Arduino, e cila nuk duhet të jetë aq e vështirë. Ne madje koduam ekranet e lojërave për kënaqësinë e tij!

Loja jonë kishte 2 nivele, e cila është loja e dukshme e grumbullimit (E gjelbër) dhe loja e nivelit të dytë të padukshme të grumbullimit (Blu).

Edhe pasi kishim kodet e punës dhe matricën LED të punës, ndonjëherë ne ende përballemi me probleme të tilla si dritat që vezullojnë ose ndriçojnë dritat kur nuk duhet. Problemi është zakonisht për shkak të tokëzimit të pahijshëm, nivelit të furnizimit me energji ose ndërhyrjes. Këtu do të keni nevojë për mjete të tjera të korrigjimit të harduerit, siç është njësia e ndryshueshme e furnizimit me energji, për të kontrolluar nëse furnizimi me energji i Mojo/Arduino është i mjaftueshëm ose shumë i lartë. Në përvojën time, Ws2812b ka një gamë mjaft të gjerë të tensioneve të punës nga 2.8v - 5v. Këtu kam një video që tregon se dritat po çmenden pasi rrit fuqinë.

Sidoqoftë, kontrollimi i mëtejshëm zbuloi se ne kishim një saldim të papërshtatshëm, pasi i bashkuam përsëri, problemi ynë u zgjidh. Mund të ketë gjithashtu një problem me ndërhyrjen ose bisedën e tërthortë, por fatmirësisht, ne nuk u përballëm me asnjë prej tyre.

Kodet Github:

Arduino Bitwise Shift:

Arduino Bitwise DHE:

Hapi 6: Vendosja e gjithçkaje së bashku

Vendosja e gjithçkaje së bashku
Vendosja e gjithçkaje së bashku
Vendosja e gjithçkaje së bashku
Vendosja e gjithçkaje së bashku
Vendosja e gjithçkaje së bashku
Vendosja e gjithçkaje së bashku
Vendosja e gjithçkaje së bashku
Vendosja e gjithçkaje së bashku

Ju keni shtresën e jashtme dhe matricën LED. Tani është koha për të bashkuar gjithçka. Së pari vendosim shkumën në pjesën e përparme dhe matricën LED pas saj dhe rregullojmë pozicionin. Për shkak se shkuma ka fërkime shumë të larta, ajo thjesht u vendos në fërkim ndërsa matrica LED është ngjitur nxehtësisht në vend. Pas kësaj ne vendosëm ekranin para rrjetit. Pastaj e lidhëm kunjin e çdo rreshti në mikrokontrollues dhe filluam të luajmë!: D

Një gjë që më pëlqen në këtë projekt është fleksibiliteti i tij, gjithmonë mund të riprogramoni mikrokontrolluesin të jetë pjesë e një loje tjetër dhe të provoni diçka të tillë si bërja e animacionit ose një lojë reagimi. Shpresoj që ju të kënaqeni duke e bërë këtë dhe të mësoni diçka për ta bërë këtë. GgEz!

Recommended: