Avui tenim un projecte amb una consola de micro jocs, que qualsevol pot repetir.
Components i components necessaris:
Aquest manual es va treure del canal de YouTube AlexGyver. El microcontrolador d'aquest projecte necessita això:
Això és Attiny85 al paquet DIP, ens serà suficient. Per no soldar-lo, agafem l’anomenada presa.
També necessitem una pantalla amb Aliexpress, OLED amb una resolució de 128 per 32 píxels.
Els pins també són útils.
Els botons que utilitzarem aquí són:
Per descomptat, podeu agafar teclats, però hauran de finalitzar-se, però realment no vull tallar i soldar. El compartiment de les bateries és d’aquest tipus:
I muntarem la nostra consola de jocs amb una placa de taula (si ho desitgeu, podeu fer-ne un tauler). Parpellejarem el programador USBasp, però qualsevol AVR ho farà.
Diagrama de cablejat Els components seran els següents:
La pantalla es connecta als pins del bus I2C del microcontrolador. Connectem botons a altres pins lliures. Afegeix també un commutador per encendre / desactivar el sistema. I, bàsicament, és tot, queda connectar el poder.
El programador es carrega al microcontrolador pel programador segons el següent esquema:
Comencem ara el muntatge i organitzem tots els elements del tauler de pa. Provem de muntar i veure com sembla tot.
Va resultar força ascètic. No està malament. L'excés de la placa es pot tallar.
Ara arreglem tots els components només soldant les cames.
Ara cal connectar les conclusions segons l’esquema. Per a aquest propòsit, l’autor recomana utilitzar un fil prim xinès de muntatge.
I per comoditat, podeu utilitzar aquest esquema de connexió mirall.
Aquests cables tenen un aïllament tan prim que els podeu vendre directament. L’aïllament en si es fonrà i el filferro es soldarà.
A continuació, aneu a segellar el compartiment de la bateria i l’interruptor. El compartiment també s'ha de fixar addicionalment amb una pistola de cola calenta.
Bé, tot això, el sistema està muntat, queda per descarregar el firmware. Parpellejarem la "pedra" per separat connectant-la al programador del panell.
El firmware, com en tots els projectes de l’autor, es troba al domini públic i es pot descarregar des de. També a la pàgina del projecte trobareu un diagrama i tota la resta d'informació necessària sobre aquest projecte.
No ens fixarem en la descàrrega amb detall, si alguna cosa no està clar, sempre podeu mirar les instruccions detallades de l’autor.
Per al firmware, només cal instal·lar Arduino ide, instal·leu el nucli per treballar amb microcontroladors de la sèrie Attiny, seleccioneu un tauler, escolliu un programador.
A continuació, seleccionem la freqüència de 8 o 16 MHz, obrim la pestanya “Eines”, trobem i seleccionem “Record Loader”.
No hi ha cap carregador, però el microcontrolador estarà ajustat a la freqüència requerida. A continuació, seleccioneu la pestanya "Esbós" - "descarregueu-lo a través del programador". Esperem fins que el croquis es carregui al microcontrolador.
Ara treiem la "pedra" i la inserim al cor de la nostra mini consola de jocs.
Com veieu, funciona! I ara fem un cop d’ull més detallat del que tenim al firmware. ATtiny85 és un microcontrolador amb 512 bytes de memòria RAM, molt petit. El 99% de les biblioteques per treballar amb una pantalla utilitzen un buffer situat al costat del microcontrolador per redibuixar correctament la imatge, ja que aquesta pantalla no pot llegir dades del seu propi buffer, i hi és per cert.
El buffer d’aquesta pantalla de 128 * 32 píxels necessitarà 512 bytes, si volem recordar l’estat de cada bit, és a dir, un píxel.
A més del buffer, també necessitem emmagatzemar altres dades, de manera que aquesta opció no entra en la memòria de tal mida.
Per tant, es va decidir rebaixar la resolució de la pantalla a 64 * 16 píxels al buffer de quadrats de 4 píxels.
L’autor va treballar directament amb aquesta pantalla i va aconseguir implementar amb èxit la seva idea. Un esbós pot resultar útil per a algú que vulgui treballar amb aquesta pantalla mitjançant Attiny.
Ara pel que fa al joc en si. Funciona senzillament. Una bola es mou en un temporitzador separat, el moviment consisteix a suprimir un punt amb les mateixes coordenades i afegir un punt nou a les noves coordenades.
El càlcul de coordenades és simplement l’addició de valors de velocitat a les coordenades al sistema de visualització.
Quan la bola va més enllà de les parets horitzontals, simplement les rebota, canvia el component vertical de la velocitat al contrari, és a dir, amb un signe menys (-).
A més, el programa comprova els límits verticals del terreny de joc, si la pilota colpeja a la raqueta (bé, o qualsevol cosa que es truqui correctament), aleshores es rebota i l’angle de rebot és aleatori.
Si la pilota trenca la paret de darrere de la raqueta, el jugador ha perdut la ronda actual i el rival rep un punt.
El moviment de la raqueta del jugador s’implementa de la mateixa manera que el moviment de la pilota, és a dir, s’esborra la raqueta antiga i se’n dibuixa una de nova, ja amb noves coordenades. Les coordenades canvien quan feu clic al botó.
Per tant, resulta molt més ràpid que netejar tota la pantalla i tornar a presentar tots els elements.
Ara per a la raqueta del rival. Està controlada per AI (intel·ligència artificial).
Bé, per descomptat, la intel·ligència artificial es diu fortament, però, tanmateix, aquesta intel·ligència fa una cosa molt senzilla, és a dir, fa que la raqueta es mogui en la direcció on es troba ara la pilota, mentre intenta alinear el seu centre al llarg de l’eix vertical amb la coordenada vertical de la bola. Per tal de vèncer a un oponent realment, l’autor el va fer lent, és a dir, calcula de nou el seu següent moviment amb el temporitzador i, per tant, pot no tenir temps per agafar la pilota i, per tant, repel·lir-la.
També en el joc es van implementar mecàniques de complexitat creixent. Cada 10 punts a favor del jugador, augmenta la velocitat de la pilota. Juntament amb això, la velocitat de reacció de l’IA (oponent) també va creixent.
Com a resultat, aquí hi ha un petit Pong tan senzill. No en va, aquest videojoc es va desenvolupar molt primer, perquè fins i tot un programador novell el pot escriure. Però malgrat l’aparent simplicitat del projecte, l’enrenou amb la pantalla xinesa va trigar unes 20 hores de temps pur per part de l’autor. Al mateix temps, no va tenir en compte el temps dedicat a escriure el codi del propi joc i altres fluxos de treball relacionats amb la depuració i la configuració del circuit.
En aquest cas, el buzz en si és el procés de muntatge, no l’aplicació.Desenvolupar jocs, fins i tot aquells senzills, pot ser realment força interessant. Sobretot quan intenteu introduir-los en un microcontrolador molt minúscul. I quan l'espectacle xinès t'espera a la volta de la cantonada ...
Tot això. Gràcies per la vostra atenció. Ens veiem aviat!
Vídeo de l’autor: