Dnes máme projekt s mikro hernou konzolou, ktorý môže každý zopakovať.
Potrebné materiály a komponenty:
Táto príručka bola prevzatá z kanála YouTube AlexGyver. Mikrokontrolér pre tento projekt potrebuje:
Toto je Attiny85 v balíku DIP, bude nám to stačiť. Aby nedošlo k spájkovaniu, berieme takzvanú zásuvku.
Potrebujeme tiež displej s Aliexpress, OLED s rozlíšením 128 x 32 pixelov.
Špendlíky sa tiež hodia.
Tlačidlá, ktoré tu použijeme, sú:
Môžete si samozrejme vziať klávesnice, ale budú musieť byť dokončené, ale ja naozaj nechcem rezať a spájať. Priestor pre batériu je tohto typu:
A my zostavíme našu hernú konzolu pomocou prkénko (ak si budete priať, môžete si sami vyrobiť dosku). Budeme blikať USBasp programátor, ale každý AVR bude robiť.
Schéma zapojenia Komponenty budú nasledujúce:
Displej sa pripája na kolíky zbernice I2C mikrokontroléra. Tlačidlá pripájame k iným voľným kolíkom. Pridaním prepínača zapnite / vypnite systém. A v podstate to je všetko, ešte zostáva pripojiť napájanie.
Firmvér zavedie programátor do mikrokontroléra podľa nasledujúcej schémy:
Teraz začnime s montážou a usporiadame všetky prvky na doštičku. Skúsme sa zhromaždiť a uvidíme, ako to všetko vyzerá.
Ukázalo sa to dosť asketicky. Nie je to zlé. Prebytočná časť doštičky sa dá odrezať.
Teraz opravujeme všetky komponenty iba spájkovaním ich nôh.
Teraz musíte prepojiť závery podľa schémy. Na tento účel autor odporúča použiť tenký čínsky montážny drôt.
A pre väčšie pohodlie môžete použiť tento zrkadlový diagram pripojenia.
Tieto drôty majú takú tenkú izoláciu, že ich môžete priamo spájkovať. Izolácia samotná sa roztopí a drôt bude spájkovaný.
Potom pokračujte v utesnení priestoru pre batériu a vypínača. Komora musí byť dodatočne pripevnená horúcou lepiacou pištoľou.
To je všetko, systém je zostavený, zostáva stiahnuť firmvér. „Kameň“ rozblikáme osobitne pripojením k programátoru na doštičke.
Firmvér, rovnako ako všetky projekty autora, je verejne prístupný a dá sa stiahnuť z. Na stránke projektu nájdete aj diagram a všetky ďalšie potrebné informácie o tomto projekte.
Nebudeme sa podrobne zaoberať sťahovaním, ak niečo nie je jasné, môžete sa vždy pozrieť na podrobné pokyny autora.
Pre firmvér stačí nainštalovať Arduino Nainštalujte si jadro pre prácu s mikrokontrolérmi Attiny, vyberte dosku, vyberte programátora.
Potom vyberieme frekvenciu 8 alebo 16 MHz, otvoríme kartu „Nástroje“, vyhľadáme a vyberieme „Nahrávač záznamov“.
Neexistuje žiadny zavádzač, ale mikrokontrolér bude naladený na požadovanú frekvenciu. Potom vyberte kartu „Náčrt“ - „stiahnutie prostredníctvom programátora“. A počkáme, kým sa náčrt nenačíta do mikrokontroléra.
Teraz vyberieme kameň a vložíme ho do srdca našej mini hernej konzoly.
Ako vidíte, funguje to! A teraz sa bližšie pozrieme na to, čo máme vo firmvéri. ATtiny85 je mikrokontrolér s 512 byte pamäte RAM, čo je veľmi malé. 99% knižníc na prácu s takýmto displejom používa vyrovnávaciu pamäť na boku mikrokontroléra na správne prekreslenie obrázka, pretože tento displej nedokáže prečítať údaje z vlastnej vyrovnávacej pamäte a mimochodom, je tam.
Vyrovnávacia pamäť pre toto zobrazenie s veľkosťou 128 x 32 pixlov bude trvať 512 bajtov, ak si chceme zapamätať stav každého bitu, tj pixel.
Okrem vyrovnávacej pamäte potrebujeme tiež ukladať ďalšie údaje, takže táto voľba určite nezapadá do pamäte takej veľkosti.
Preto bolo rozhodnuté znížiť rozlíšenie displeja na 64 * 16 pixelov vyrovnávaním štvorcov so 4 pixelmi.
Autor s týmto displejom pracoval priamo a podarilo sa mu jeho myšlienku úspešne implementovať. Skica sa môže hodiť pre niekoho, kto chce s týmto displejom pracovať pomocou Attiny.
Teraz, pokiaľ ide o samotnú hru. Funguje to celkom jednoducho. Lopta sa pohybuje po samostatnom časovači, pohyb spočíva v vymazaní bodu s rovnakými súradnicami a pridaní nového bodu do nových súradníc.
Výpočet súradníc je jednoducho pripočítaním hodnôt rýchlosti k súradniciam v zobrazovacom systéme.
Keď lopta presiahne vodorovné steny, jednoducho sa odrazí a zmení vertikálnu zložku rýchlosti na opačnú, tj so znamienkom mínus (-).
Okrem toho program skontroluje zvislé hranice hracieho poľa, ak lopta zasiahla raketu (dobre alebo čokoľvek, čomu hovoríte správne), potom sa odrazí a uhol odrazu je náhodný.
Ak lopta prelomí stenu za raketou, hráč prehral aktuálne kolo a súper dostane bod.
Pohyb rakety hráča sa vykonáva rovnakým spôsobom ako pohyb lopty, to znamená, že stará raketa sa vymaže a nakreslí sa nová, už s novými súradnicami. Súradnice sa zmenia po kliknutí na tlačidlo.
Ukazuje sa teda oveľa rýchlejšie ako čistenie celého displeja a opätovné vykreslenie všetkých prvkov.
Teraz pre súperovu raketu. Je riadený AI (umelá inteligencia).
Samozrejme, umelá inteligencia sa hovorí nahlas, ale táto inteligencia napriek tomu robí veľmi jednoduchú vec, konkrétne spôsobuje, že raketa sa pohybuje v smere, kde je teraz lopta, zatiaľ čo sa snaží vyrovnať svoj stred pozdĺž vertikálnej osi s vertikálnou súradnicou lopty. S cieľom skutočne poraziť takého súpera ho autor spomalil, to znamená, že vypočítal svoj ďalší ťah opäť časovačom, a preto nemusí mať čas chytiť loptu a tým ho odraziť.
Aj v hre implementovala mechanika zvyšujúcej sa zložitosti. Každých 10 bodov v prospech hráča sa rýchlosť lopty zvyšuje. Spolu s tým narastá aj reakčná rýchlosť AI (súpera).
Výsledkom je taký jednoduchý malý tenis. Nie pre nič za nič, táto videohra bola vyvinutá úplne ako prvá, pretože ju môže napísať aj nováčik. Ale aj napriek zjavnej jednoduchosti projektu trvalo rozruch s čínskou výstavou od autora asi 20 hodín čistého času. Zároveň nezohľadnil čas strávený písaním kódu samotnej hry a ďalšie pracovné postupy súvisiace s ladením a nastavovaním okruhu.
V tejto veci je samotný buzz proces zostavenia, nie aplikácia.Vývoj hier, aj tých jednoduchých, môže byť skutočne veľmi zaujímavý. Najmä vtedy, keď sa ich pokúsite vtlačiť do veľmi malého mikrokontroléra. A keď vás čaká čínska obrazovka za rohom ...
To je všetko. Ďakujem za pozornosť. Uvidíme sa skoro!
Video autora: