» Elektronica »Miniatuur spelconsole met Pong-spel

Miniatuur spelconsole met Pong-spel

Groetjes de bewoners van onze site!
Vandaag hebben we een project met een micro-gameconsole, die iedereen kan herhalen.


Benodigde materialen en componenten:








Deze handleiding is afkomstig van het AlexGyver YouTube-kanaal. De microcontroller voor dit project heeft dit nodig:


Dit is Attiny85 in het DIP-pakket, het is genoeg voor ons. Om het niet te solderen, nemen we de zogenaamde socket.

We hebben ook een display nodig met Aliexpress, OLED met een resolutie van 128 bij 32 pixels.


Spelden zijn ook handig.

Knoppen die we hier gebruiken zijn:

Je kunt natuurlijk toetsenborden meenemen, maar ze moeten worden afgerond, maar ik wil niet echt knippen en solderen. Het batterijvak is van dit type:

En we zullen onze gameconsole samenstellen met een breadboard (als je wilt, kun je zelf een board maken). We zullen de USBasp-programmeur flashen, maar elke AVR zal het doen.

Bedradingsschema De componenten zijn als volgt:

Het display maakt verbinding met de I2C-buspennen van de microcontroller. We verbinden knoppen met andere gratis pinnen. Voeg ook een schakelaar toe om het systeem aan / uit te zetten. En dat is eigenlijk alles, het blijft om de stroom aan te sluiten.
De firmware wordt door de programmeur in de microcontroller geladen volgens het volgende schema:
Miniatuur spelconsole met Pong-spel

Laten we nu beginnen met de montage en alle elementen op het breadboard rangschikken. Laten we proberen te monteren en kijken hoe het er allemaal uitziet.


Het bleek nogal asceet. Niet slecht. Het overtollige deel van de breadboard kan worden afgezaagd.


Nu repareren we alle componenten door hun pootjes te solderen.



Nu moet je de conclusies volgens het schema verbinden. Voor dit doel raadt de auteur aan een dunne Chinese montagedraad te gebruiken.

En voor het gemak kunt u dit gespiegelde aansluitschema gebruiken.

Deze draden hebben zo'n dunne isolatie dat je ze direct kunt solderen. De isolatie zelf smelt en de draad wordt gesoldeerd.

Sluit vervolgens het batterijvak en de schakelaar af. Het compartiment moet ook extra worden bevestigd met een heet lijmpistool.


Nou, dat is alles, het systeem is gemonteerd, het blijft om de firmware te downloaden. We zullen de "steen" afzonderlijk flashen door hem aan te sluiten op de programmeur op het breadboard.


De firmware bevindt zich, zoals bij alle projecten van de auteur, in het publieke domein en kan worden gedownload van. Ook op de projectpagina vind je een diagram en alle overige benodigde informatie over dit project.

We zullen niet in detail op de download ingaan, als iets niet duidelijk is, dan kunt u altijd de gedetailleerde instructies voor de auteur bekijken.
Voor firmware, installeer gewoon Arduino ide, installeer de kernel voor het werken met Attiny-serie microcontrollers, selecteer een bord, kies een programmeur.


Vervolgens selecteren we de frequentie van 8 of 16 MHz, openen we het tabblad "Tools", zoeken en selecteren we "Record Loader".

Er is geen loader, maar de microcontroller wordt afgestemd op de vereiste frequentie. Selecteer vervolgens het tabblad "Sketch" - "download via de programmeur". En we wachten tot de schets in de microcontroller is geladen.

Nu halen we de "steen" eruit en steken deze in het hart van onze mini-gameconsole.


Zoals je kunt zien, werkt het! En laten we nu eens nader bekijken wat we in de firmware hebben. ATtiny85 is een microcontroller met 512 bytes RAM, wat erg klein is. 99% van de bibliotheken die met een dergelijk beeldscherm werken, gebruikt een buffer aan de zijkant van de microcontroller om het beeld correct opnieuw te tekenen, omdat dit beeldscherm geen gegevens uit zijn eigen buffer kan lezen, en het is er trouwens.

De buffer voor deze weergave van 128 * 32 pixels neemt 512 bytes in beslag, als we de status van elk bit willen onthouden, dat wil zeggen een pixel.
Naast de buffer moeten we ook andere gegevens opslaan, dus deze optie past zeker niet in het geheugen van zo'n omvang.

Daarom is besloten de beeldschermresolutie te verlagen naar 64 * 16 pixels door vierkanten van 4 pixels te bufferen.

De auteur werkte rechtstreeks met dit scherm en slaagde erin zijn idee met succes te implementeren. Een schets kan handig zijn voor iemand die met Attiny met dit beeldscherm wil werken.


Nu wat betreft het spel zelf. Het werkt heel simpel. Een bal beweegt op een aparte timer, de beweging bestaat uit het verwijderen van een punt met dezelfde coördinaten en het toevoegen van een nieuw punt in de nieuwe coördinaten.

Berekening van coördinaten is simpelweg het toevoegen van snelheidswaarden aan de coördinaten in het weergavesysteem.
Wanneer de bal voorbij de horizontale wanden gaat, stuitert hij er eenvoudigweg vanaf en verandert de verticale component van de snelheid in het tegenovergestelde, dat wil zeggen met een minteken (-).

Bovendien controleert het programma de verticale grenzen van het speelveld, als de bal het racket raakt (nou ja, of hoe je het ook correct noemt), dan stuitert het en de stuiterhoek is willekeurig.
Als de bal de muur achter het racket breekt, heeft de speler de huidige ronde verloren en krijgt de tegenstander een punt.

De beweging van het racket van de speler wordt op dezelfde manier uitgevoerd als de beweging van de bal, dat wil zeggen dat het oude racket wordt gewist en een nieuw wordt getrokken, al met nieuwe coördinaten. De coördinaten veranderen wanneer je op de knop klikt.
Het is dus veel sneller dan het hele scherm op te schonen en alle elementen opnieuw weer te geven.


Nu voor het racket van de tegenstander. Het wordt bestuurd door AI (kunstmatige intelligentie).

Nou, kunstmatige intelligentie wordt natuurlijk luid gezegd, maar toch doet deze intelligentie iets heel eenvoudigs, namelijk dat het het racket doet bewegen in de richting waar de bal nu is, terwijl het probeert zijn midden langs de verticale as uit te lijnen met de verticale coördinaat van de bal. Om zo'n tegenstander echt te verslaan, heeft de auteur hem langzaam gemaakt, dat wil zeggen, hij berekent zijn volgende zet opnieuw door de timer en heeft dus mogelijk geen tijd om de bal te vangen en hem daardoor af te weren.

Ook in het spel geïmplementeerde mechanica van toenemende complexiteit. Elke 10 punten in het voordeel van de speler neemt de snelheid van de bal toe. Daarnaast neemt ook de reactiesnelheid van de AI (tegenstander) toe.

Als resultaat is hier zo'n simpele kleine Pong. Niet voor niets is dit videospel allereerst ontwikkeld, omdat zelfs een beginnende programmeur het kan schrijven. Maar ondanks de ogenschijnlijke eenvoud van het project, kostte het gedoe met de Chinese vertoning ongeveer 20 uur pure tijd van de auteur. Tegelijkertijd hield hij geen rekening met de tijd die werd besteed aan het schrijven van de code van het spel zelf en andere workflows die verband hielden met debuggen en het opzetten van het circuit.



In dit ding is het geroezemoes zelf het assemblageproces, niet de toepassing.Het ontwikkelen van games, zelfs die simpele, kan heel interessant zijn. Vooral als je ze in een heel kleine microcontroller probeert te duwen. En als het Chinese display om de hoek op je wacht ...

Dat is alles. Bedankt voor je aandacht. Tot binnenkort!

Video van de auteur:
6.5
5.5
5.5

Voeg een opmerking toe

    • lachglimlachtxaxaokweet het nietyahoonea
      baaskrabbendwaasjaja-jaagressiefgeheim
      sorrydansdance2dance3pardonhulpdrankjes
      stopvriendengoedgoedfluitjebezwijmdtong
      rookklappencrayverklarenbeledigenddon-t_mentiondownloaden
      hittebooslach1mdavergaderingmoskingnegatief
      not_ipopcornstraffenlezenschrikschriktzoeken
      bespottendankjewelditto_clueUmnikacuutmee eens
      slechtbeeeblack_eyeblum3: oopscheppenverveling
      gecensureerdbeleefdheidgeheim2bedreigenoverwinningyusun_bespectacled
      shokrespektlolvoorgekomenwelkomkrutoyya_za
      ya_dobryihelperne_huliganne_othodifludverbodsluiten
1 commentaar
ketchup
in plaats van te plagiëren, is het beter om er zelf een te bedenken

We raden je aan om te lezen:

Geef het voor de smartphone ...