Taula de continguts:

Consola Arduino VGA amb cinc jocs: 4 passos
Consola Arduino VGA amb cinc jocs: 4 passos

Vídeo: Consola Arduino VGA amb cinc jocs: 4 passos

Vídeo: Consola Arduino VGA amb cinc jocs: 4 passos
Vídeo: Cómo crear un ARCADE de forma FÁCIL y BARATA!!! 2024, Desembre
Anonim
Image
Image
Consola Arduino VGA amb cinc jocs
Consola Arduino VGA amb cinc jocs
Consola Arduino VGA amb cinc jocs
Consola Arduino VGA amb cinc jocs

En els meus anteriors Instructables, he reproduït versions simplificades d’alguns dels jocs d’arcade clàssics més populars, mitjançant un Arduino i alguns components més. Més tard, vaig unir-ne cinc en un sol esbós. Aquí mostraré com es pot construir una consola senzilla per jugar a Pong, Breakout, Bomber, Tetris i una joguina de dibuix inspirada en Etch-a-Sketch. Aquesta consola també es pot utilitzar per jugar a Snake i dos jocs més escrits per altres autors: Bit Ninja de Sandro Maffiodo també conegut com "Smaffer" i Stacker de Nikita Kurylev.

La característica principal és la generació d’un senyal VGA, gràcies a la biblioteca VGAx, per tant la consola necessita un monitor VGA. El meu objectiu, com és habitual, és evitar qualsevol "component especial" per construir-lo, no necessiteu cap IC de suport ni escuts. Els únics components són dos potenciòmetres, cinc botons, poques resistències i un connector DSUB15 (VGA). Un altaveu piezoelèctric és opcional. Podeu veure l'aspecte d'aquests jocs a les imatges d'aquesta pàgina.

La biblioteca VGAx permet utilitzar quatre colors amb una resolució de 120 x 60 píxels, pocs però suficients per a aquesta consola de jocs retro. El gràfic és cru, però, gràcies a l’ús dels potenciòmetres, els jocs funcionen sense problemes. També hi ha efectes de so simples disponibles.

Pas 1: Com crear la vostra pròpia consola Arduino VGA

Com es construeix la seva pròpia consola Arduino VGA
Com es construeix la seva pròpia consola Arduino VGA
Com es crea la seva pròpia consola Arduino VGA
Com es crea la seva pròpia consola Arduino VGA

Primer descarregueu els codis ArduinoVGAgame.ino i / o Snake.ino a la part inferior d’aquesta pàgina i copieu-los al vostre PC en un directori amb el mateix nom. Baixeu-vos la biblioteca VGAx des d’aquest enllaç a GitHub. La forma més senzilla és copiar-la a la subcarpeta del programari Arduino anomenada "biblioteques", per reconèixer-la immediatament.

IMPORTANT: aquesta biblioteca funciona per a Arduno IDE 1.6.4, però no és totalment compatible amb versions anteriors o anteriors.

Pengeu el codi a la vostra placa Arduino (he provat tant Uno com Nano). És normal un advertiment sobre la memòria disponible. Si no teniu altres errors, tot està bé i immediatament podeu començar a construir la vostra pròpia consola.

Per a això, necessiteu:

  • un Arduino Uno Rev. 3 o Arduino Nano 3.x (ATmega328)
  • un connector DSUB15, és a dir, un connector femella VGA o un cable VGA per tallar.
  • resistències: 2 x 68 Ohm i 2 x 470 Ohm i 5 x 1 a 2 kOhm
  • dos potenciòmetres lineals de 10 kOhm (valors similars també estan bé)
  • cinc botons
  • algun tros de cable
  • una o dues boniques caixes per posar tots els components.

Facultatiu:

  • una pissarra o una pissarra
  • un altaveu piezoelèctric

L'esquema s'informa a la part superior d'aquest pas, juntament amb un exemple de "consola" acabada.

l'esquema mostra com connectar un botó i un potenciòmetre. Més concretament, heu de connectar cinc botons als pins 5, 10, 11, 12 i 13 respectivament. L'acció realitzada per cada botó es descriu a la taula superior dreta de l'esquema. A l'esquerra es mostra com connectar un potenciòmetre (necessiteu dos potenciòmetres als pins A1 i A2). L'altaveu ha d'estar connectat al pin analògic A0.

Vaig col·locar la placa Arduino amb el connector VGA en una caixa de fusta, que conté també el primer potenciòmetre del jugador i quatre botons, mentre que el potenciòmetre del segon jugador i el seu botó d’inici es troben en una caixa separada i més petita.

Si us agrada aquesta joguina i decidiu reproduir-la, us agrairé que escriviu un comentari o envieu una foto a la secció de comentaris següent.

Pas 2: Jocs d'altres autors

Sandro Maffiodo ha publicat recentment el joc BitNinja. Podeu trobar més informació aquí i descarregar el codi aquí.

Per utilitzar la meva consola, només heu de tornar a assignar el botó del seu codi de la manera següent:

#define BTN_UP 11 (en lloc de 13)

#define BTN_LEFT 10 (en lloc de 12)

#define BTN_RIGHT 12 (en lloc de 11)

Stacker, de Nikita Kurylev, està disponible aquí. Més informació aquí.

Una vegada més, heu de tornar a assignar un botó a una part diferent del codi: només heu de substituir digitalRead (2) per digitalRead (13)

Pas 3: Apèndix 1: Més detalls sobre com construir els controladors

Apèndix 1: Més detalls sobre com construir els controladors
Apèndix 1: Més detalls sobre com construir els controladors
Apèndix 1: Més detalls sobre com construir els controladors
Apèndix 1: Més detalls sobre com construir els controladors
Apèndix 1: Més detalls sobre com construir els controladors
Apèndix 1: Més detalls sobre com construir els controladors
Apèndix 1: Més detalls sobre com construir els controladors
Apèndix 1: Més detalls sobre com construir els controladors

Podeu realitzar el controlador de moltes maneres diferents, en funció del material disponible i del vostre gust.

M'agrada realitzar-les amb caixes de fusta (vegeu les imatges d'aquesta pàgina). Una caixa principal per a l'Arduino, el connector VGA i els botons del primer reproductor i el potenziòmetre; un segon (més petit) només per al botó i la roda del segon jugador (necessari per a Pong i la joguina de dibuix). Una altra possibilitat és posar tot en una sola caixa més gran.

Primer us recomano connectar el port VGA. A la primera i segona imatge podeu veure alguns detalls: observeu les dues resistències de 470 Ohm per al vermell i el verd connectades als pins 6 i 7 respectivament, i dues de 68 Ohm als pins 3 i 9 per al senyal de sincronització horitzontal i vertical.

Podeu triar diferents combinacions de colors en funció dels pins que connecteu al connector VGA DSUB15, els pins 1, 2 i 3 representen el vermell, el verd i el blau (RGB) respectivament. He connectat els pins 1 i 2, de manera que tinc la combinació de colors següent: (0, 0) = negre; (1, 0) = vermell; (0, 1) = verd; (1, 1) = groc.

Per a totes les possibilitats, us proposo llegir els detalls a la pàgina on descarregueu les biblioteques VGAx.

Tan bon punt el connector VGA estigui llest, podeu preparar la resta de cables per als botons, les rodes i l'altaveu (vegeu la imatge 2).

Ara només cal que ho ajunteu tot: recordeu que cada pin del botó ha de connectar-se a terra mitjançant una resistència d'1 o 2 kOhm, en cas contrari, quan el botó estigui obert, l'estat del pin pot estar indefinit. Això vol dir que si es deixa el pin desconnectat, es pot tenir un voltatge (estàtic) aleatori que el pugui activar. Vegeu l'esquema del segon pas d'aquest instructiu per obtenir més detalls.

L’últim pas és arreglar-ho tot al seu lloc. He utilitzat la pistola de cola calenta, però podeu utilitzar el vostre mètode preferit.

Pas 4: Apèndix 2: Algunes consideracions sobre els límits de memòria

És sorprenent que un simple Arduino sigui capaç de generar un senyal VGA i tots aquests jocs junts. L’autèntic coll d’ampolla és la manca de SRAM. El microcontrolador AVR només disposa de 2048 bytes per emmagatzemar i manipular les variables, i la biblioteca VGAx emmagatzema les variables de la pantalla en un framebuffer de 120x60 píxels on cada píxel necessita 2 bits (4 colors), per un total de 1800 bytes. Això significa que només queden 248 bytes per a les variables d'esbós. A més, segons la meva experiència, caldria deixar com a mínim 100 bytes lliures per evitar inestabilitats. Utilitzant més de 1950 bytes de memòria dinàmica, el microcontrolador comença a mostrar un comportament estrany i imprevisible.

Això significa que totes les variables s'han de compartir entre els diferents jocs, i això fa que el codi sigui bastant il·legible i difícil de depurar. No es tracta només de "afegir un joc nou" a l'esbós anterior, sinó que s'ha de modificar i optimitzar tot el codi.

A més, vaig haver d’utilitzar el format de variable mínim possible: per exemple, per a totes les coordenades havia d’utilitzar "byte" en lloc de "int" o, en altres casos, havia de preferir "int" en lloc de "float".

Finalment, el meu reconeixement va a Sandro Maffiodo, també conegut com Smaffer, el creador de la biblioteca VGAx i de l’impressionant joc BitNinja. Sense aquesta biblioteca, aquest projecte no s’hauria pogut realitzar.

Gràcies també a Nikita Kurylev pel senzill però divertit joc Stacker.

Recomanat: