Taula de continguts:

Joc d'arcades d'apiladors: 6 passos (amb imatges)
Joc d'arcades d'apiladors: 6 passos (amb imatges)

Vídeo: Joc d'arcades d'apiladors: 6 passos (amb imatges)

Vídeo: Joc d'arcades d'apiladors: 6 passos (amb imatges)
Vídeo: Arcade Longplay [370] Street Fighter II: The World Warrior 2024, Desembre
Anonim
Joc d'arcades d'apiladors
Joc d'arcades d'apiladors

Hola nois, avui vull compartir amb vosaltres aquest increïble joc arcade que podeu fer amb un munt de LEDs Ws2812b i un microcontrolador / FPGA. Behold Stack Overflow: la nostra implementació de maquinari per a un joc arcade clàssic. El que va començar com un projecte escolar es va convertir ràpidament en un treball d’amor ja que vam començar a dedicar cada vegada més temps a desenvolupar el nostre joc i a aprendre’n més (i descuidar els nostres estudis en el procés xD). Al final, el nostre joc va ser tan ben construït i va ser ben rebut per la nostra escola que va ser confiscat (com a material de demostració per al següent lot d'alumnes). Bé, sempre en podem construir un segon. Comencem!

Versió en línia del joc:

Pas 1: què necessiteu?

Què necessites?
Què necessites?
Què necessites?
Què necessites?
Què necessites?
Què necessites?
Què necessites?
Què necessites?

Materials:

1. un microcontrolador / microordinador / FPGA: el FPGA s’utilitza per implementar la lògica del nostre joc. Trieu el vostre tauler, per al nostre projecte estem obligats a utilitzar el tauler Mojo FPGA. Per als no iniciats, és un tipus de placa que utilitza maquinari per implementar les seves funcions en lloc de codis. Per tant, jo diria que el seu nivell és bastant baix i que és completament diferent que si feu servir Arduino o Pi. Si feu servir altres taulers, heu d’escriure el vostre propi codi, però aquest joc és molt fàcil de codificar i vaja! Ara també podeu aprendre a codificar.

2. LEDs Ws2812b: aquí estem utilitzant els LEDs per construir la pantalla del nostre joc. No puc ser creador si no heu tocat Ws2812b's abans de xD. És a dir, és a dir, es pot tallar un LED únic i enganxar-lo a qualsevol formació que vulgueu. I és RGB que significa que podeu produir qualsevol color que vulgueu. A més, FastLED, la biblioteca Arduino per controlar Ws2812b, està molt ben desenvolupada. Recomanaria a la gent que utilitzi Arduino en lloc del FPGA si no en teniu cap. Podeu comprar els LED de Taobao / Amazon, però nosaltres els vam comprar a la torre Sim Lim de Singapur.

3. Fusta: per a la carcassa externa hem utilitzat fusta contraxapada d'1cm de gruix i per a la matriu LED hem utilitzat fusta contraxapada de 0,3cm de gruix. Hem trobat el nostre subministrament de ferralla del fabulós laboratori de la nostra escola.

4. Acrílic difusor de llum: per a la nostra pantalla, hem provat diferents tipus d'acrílic i hem trobat aquest acrílic esmerilat anomenat PL-422, que és realment bo per difondre la llum. Si no trobeu el model exacte, busqueu acrílics esmerilats. Vam comprar el nostre a Dama Plastics a Singapur.

5. Tauler d'escuma: per separar cada píxel de llum, necessitàvem una estructura de quadrícula i aquesta escuma és el material ideal per fer-ho. Vam comprar un tauler d’escuma de 0,5 cm de gruix a la nostra llibreria escolar.

6. Gran botó vermell: bé, no és necessari que tinguem un botó vermell tan gran, però sempre és bo tenir un botó perquè la gent pugui copejar-lo. xD El vam comprar a la torre Sim Lim de Singapur.

Eines:

1. Cola de fusta

2. Soldador

3. Soldar

4. Filferros. És millor si teniu cables suaus en comparació amb els més rígids. I un nucli únic en comparació amb el multicore.

5. Decapant de filferro

6. Tallador de filferro

7. Broca amb broques de 1 mm

8. Serra de desplaçament

9. Serra de cinta

Depuració:

1. Unitat d'alimentació variable

2. Oscil·loscopi

Pas 2: prototipatge ràpid

Prototipat ràpid
Prototipat ràpid
Prototipat ràpid
Prototipat ràpid
Prototipat ràpid
Prototipat ràpid
Prototipat ràpid
Prototipat ràpid

Per al nostre projecte, vam emprar prototips ràpids abans de construir la nostra matriu de LED i programar el nostre joc. La raó per fer-ho és que no volem construir la matriu de LED només per adonar-nos que els nostres codis no funcionen o que la nostra lògica de joc és defectuosa.

Pel que fa al maquinari, en la primera fase acabem de provar la nostra lògica en canviar els patrons de llum amb la nostra pròpia matriu LED. Un cop vam provar que la lògica funcionava bé, vam sortir a tallar tires de LED de 5 Ws2812b només per provar la nostra lògica de joc amb diferents files. Un cop això funciona, procedim a fabricar la matriu de LED a gran escala.

També vam provar diferents mostres d’acrílic amb el LED abans de conformar-nos amb el PL-422 com a millor difusor de llum. I per a l'estructura del separador també vam provar diferents altures perquè el LED es difongués completament. Al final ens vam adonar de 3cm * 3cm quadrats amb 4cm d’alçada per ser el millor per a la difusió. Basant-nos en aquesta mida òptima, també hem decidit quina és la mida de la fusta contraxapada necessària per a una matriu LED de 5 x 11 deixant un espai de 0,5 cm per a l’escuma entre els quadrats..

Pel que fa al programari, intentem ser el més modular possible: primer comprovem si es poden il·luminar els LED abans de procedir a afegir la funció de desplaçament i després d'altres. Els resultats podrien ser catastròfics si no feu això. Ho vam aprendre de la manera més difícil, ja que vam intentar codificar tot el joc en un tros gran abans de comprendre que no el podíem depurar. Ai!

Pas 3: fabricació de la carcassa

Fent la carcassa
Fent la carcassa
Fent la carcassa
Fent la carcassa
Fent la carcassa
Fent la carcassa
Fent la carcassa
Fent la carcassa

Per a la nostra carcassa, vam anar amb un aspecte i un aspecte clàssic de la màquina arcade. En primer lloc, tallem una fusta contraxapada fina per prototipar ràpidament la forma, ja que és més fàcil i ràpid tallar la fusta contraxapada fina i provar-la. Un cop satisfets de les nostres dimensions i forma, vam començar a utilitzar fusta contraxapada més gruixuda per construir la carcassa. Hem utilitzat una serra de cinta per tallar la fusta contraxapada més gruixuda i una serra de desplaçament per tallar les més primes. Després d’això, hem utilitzat cola de fusta per enganxar-les juntes.

Per a la part posterior de la fusta contraxapada, volíem accedir fàcilment a l'electrònica que hi havia a l'interior, de manera que la vam convertir en una peça de bloqueig que es pot treure fàcilment quan vulgui.

Per fixar el botó, primer vam dibuixar un cercle de la mida del diàmetre del microinterruptor del botó (la part llarga inferior del botó). Després vam perforar un forat a prop de la vora i vam utilitzar la serra de desplaçament per veure un cercle. Després vam col·locar el botó i el vam cargolar.

També tallem un tros prim de fusta contraxapada com a base de la nostra matriu LED segons les mides que hem calculat abans.

Nota: disculpeu la manca de procés pas a pas. No vam documentar els passos completament i quan ens vam adonar que cal documentar els passos, la carcassa ja estava acabada. El diagrama tampoc no és la dimensió final.

Pas 4: elaboració de la matriu LED

Realització de la matriu LED
Realització de la matriu LED
Realització de la matriu LED
Realització de la matriu LED

Utilitzant la peça prima que hem retallat abans, primer marquem la posició de cada LED dibuixant un quadrat basat en la nostra estructura d’escuma i dibuixant una creu al mig del quadrat com a lloc on hauríem d’enganxar el LED. A continuació, també perforem 3 forats petits a cada costat del LED perquè passin els cables i els soldem a cada LED.

Encadenem cada fila de LED mitjançant els seus pins d'entrada i sortida de dades i soldem cada GND i VCC a un cable comú. El Data In principal genera els patrons de llum de cada fila i el connectem al pinout del microcontrolador / FPGA. També podeu soldar les darreres dades de sortida d'una fila a l'entrada de dades principal d'una altra fila. La manera com funciona el LED Ws2812b és que cada LED conté un CI que prendrà les dades necessàries del cable i passarà la resta per la cadena. Vam basar el nostre LED en un altre fantàstic Instructables (De fet, el vam copiar exactament! XD)

Aquí també ens agradaria destacar la importància d’utilitzar cables suaus. Si feu servir cables rígids i durs per al pin d’entrada de dades principal, el que passa és que cada vegada que estireu el cable, podríeu treure el farciment de coure del vostre Ws2812b que el destruirà. En aquest projecte, abans de canviar per cables suaus, vam destruir un total de 40 LED, que són 1/3 dels LED necessaris per al nostre projecte.

Instructible:

Pas 5: escriure els codis del joc i el maquinari de depuració

Escriptura dels codis de joc i maquinari de depuració
Escriptura dels codis de joc i maquinari de depuració
Escriptura dels codis del joc i maquinari de depuració
Escriptura dels codis del joc i maquinari de depuració
Escriptura dels codis de joc i maquinari de depuració
Escriptura dels codis de joc i maquinari de depuració

Mojo funciona amb Lucid HDL, que no és l’idioma més popular. No podem trobar cap biblioteca LED Ws2812b a Lucid, de manera que vam recórrer a escriure la nostra pròpia biblioteca, que és una experiència molt interessant. Per fer-ho, primer vam analitzar el senyal que es transmet mitjançant la biblioteca FastLED d’Arduino i vam escriure codis per reproduir-ho. Aquí teniu un truc de depuració de maquinari, l’oscil·loscopi és molt, molt útil per analitzar senyals, ja sigui depurant el vostre propi senyal del qual no esteu segur, o comprovant i copiant altres senyals.

Després d’escriure la biblioteca per al Ws2812b, procedim al codi del joc, hem utilitzat les funcions de desplaçament de bits per moure cada bloc cap a l’esquerra i cap a la dreta i hem utilitzat Bitwise AND a AND els quadrats de cada fila a la fila anterior. També podeu pensar a implementar-ho a Arduino, cosa que no hauria de ser tan difícil. Fins i tot vam codificar pantalles de jocs per divertir-nos!

El nostre joc tenia 2 nivells, que és el joc d'apilament visible (verd) i el joc d'apilament invisible de segon nivell (blau).

Fins i tot després de tenir uns codis de treball i una matriu de LEDs de treball, de vegades encara ens enfrontem a problemes com ara parpellejar llums o il·luminar-se quan no ho haurien de fer. El problema sol ser a causa d’una connexió a terra incorrecta, d’un nivell de subministrament elèctric o d’interferències. Aquí és on necessitareu altres eines de depuració de maquinari, com ara la font d'alimentació variable, per comprovar si la font d'alimentació del Mojo / Arduino és suficient o massa alta. Segons la meva experiència, el Ws2812b té una àmplia gamma de tensions de treball des de 2.8v fins a 5v. Aquí tinc un vídeo que mostra que els llums es tornen bojos després d’augmentar la potència.

Tanmateix, després de comprovar-ho, es va revelar que teníem alguna soldadura inadequada; després de tornar-les a soldar, el nostre problema es va resoldre. També podria haver-hi un problema d’interferències o converses creuades, però, per sort, mai no ens hem enfrontat a cap.

Codis Github:

Arduino Bitwise Shift:

Arduino Bitwise AND:

Pas 6: ajuntar-ho tot

Posant-ho tot junt
Posant-ho tot junt
Posant-ho tot junt
Posant-ho tot junt
Posant-ho tot junt
Posant-ho tot junt
Posant-ho tot junt
Posant-ho tot junt

Teniu la carcassa i la matriu LED. Ara és el moment de muntar-ho tot. Primer col·loquem l’escuma a la part frontal i la matriu LED darrere i ajustem la posició. Com que l’escuma té una fricció molt alta, només es va muntar amb fricció mentre la matriu LED està enganxada al seu lloc. Després d'això, vam col·locar la pantalla davant de la quadrícula. A continuació, vam connectar els pins de cada fila al microcontrolador i vam començar a jugar.: D

Una cosa que m’agrada d’aquest projecte és la seva flexibilitat, sempre podeu reprogramar el microcontrolador perquè formi part d’un altre joc i provar alguna cosa com ara fer animacions o un joc de reacció. Espero que us agradi fer això i aprendre alguna cosa per fer-ho. GgEz!

Recomanat: