Obsah:

Konzola Arduino VGA s piatimi hrami: 4 kroky
Konzola Arduino VGA s piatimi hrami: 4 kroky

Video: Konzola Arduino VGA s piatimi hrami: 4 kroky

Video: Konzola Arduino VGA s piatimi hrami: 4 kroky
Video: Nibble konzola - Review 2024, Júl
Anonim
Image
Image
Konzola Arduino VGA s piatimi hrami
Konzola Arduino VGA s piatimi hrami
Konzola Arduino VGA s piatimi hrami
Konzola Arduino VGA s piatimi hrami

Vo svojich predchádzajúcich pokynoch som reprodukoval zjednodušené verzie niektorých z najobľúbenejších klasických arkádových hier pomocou holého Arduina a niekoľkých ďalších komponentov. Neskôr som ich spojil do jedného náčrtu. Tu ukážem, ako môžete postaviť jednoduchú konzolu, ktorá dokáže hrať hry Pong, Breakout, Bomber, Tetris a kresliace hračky inšpirované Etch-a-Sketch. Túto konzolu je možné použiť aj na hranie hada a ďalších dvoch hier od iných autorov: Bit Ninja od Sandra Maffioda aka „Smaffer“a Stacker od Nikity Kuryleva.

Hlavnou črtou je generovanie signálu VGA, vďaka knižnici VGAx, takže konzola potrebuje monitor VGA. Mojím cieľom, ako obvykle, je vyhnúť sa akýmkoľvek „špeciálnym komponentom“na jeho stavbu, nepotrebujete potom žiadne podporné integrované obvody ani štíty! Jedinými komponentmi sú dva potenciometre, päť tlačidiel, niekoľko rezistorov a konektor DSUB15 (VGA). Piezo reproduktor je voliteľný. Ako tieto hry vyzerajú, môžete vidieť na obrázkoch na tejto stránke.

Knižnica VGAx umožňuje používať štyri farby s rozlíšením 120 x 60 pixelov, nie veľa, ale pre túto retrohernú konzolu stačí. Grafika je surová, ale vďaka použitiu potenciometrov hry bežia hladko. K dispozícii sú aj jednoduché zvukové efekty.

Krok 1: Ako si vytvorte vlastnú konzolu Arduino VGA

Ako si vytvoriť vlastnú konzolu VGA Arduino
Ako si vytvoriť vlastnú konzolu VGA Arduino
Ako si vytvoriť vlastnú konzolu VGA Arduino
Ako si vytvoriť vlastnú konzolu VGA Arduino

Najprv si stiahnite kódy ArduinoVGAgame.ino a/alebo Snake.ino v spodnej časti tejto stránky a skopírujte ich do počítača do adresára s rovnakým názvom. Stiahnite si knižnicu VGAx z tohto odkazu na GitHub. Najľahšie je skopírovať ho do podpriečinka softvéru Arduino s názvom „knižnice“, aby bol ihneď rozpoznaný.

DÔLEŽITÉ: táto knižnica funguje pre Arduno IDE 1.6.4, ale nie je úplne kompatibilná so staršími alebo novšími verziami.

Nahrajte kód na svoju dosku Arduino (testoval som Uno aj Nano). Varovanie pred nedostatkom dostupnej pamäte je normálne. Ak nemáte ďalšie chyby, všetko je v poriadku a môžete okamžite začať s vytváraním vlastnej konzoly.

Na to potrebujete:

  • Arduino Uno Rev. 3 alebo Arduino Nano 3.x (ATmega328)
  • konektor DSUB15, tj konektor VGA samica alebo kábel VGA, ktorý chcete odrezať.
  • odpory: 2 x 68 Ohm a 2 x 470 Ohm a 5 x 1 až 2 kOhm
  • dva lineárne potenciometre 10 kOhm (podobné hodnoty sú tiež v poriadku)
  • päť tlačidiel
  • nejaký kus kábla
  • jednu alebo dve pekné škatule na uloženie všetkých komponentov.

Fakultatívne:

  • dosku na chlieb alebo pásovú dosku
  • piezo reproduktor

Schéma je uvedená v hornej časti tohto kroku spolu s príkladom hotovej „konzoly“.

schéma ukazuje, ako pripojiť tlačidlo a potenciometer. Konkrétnejšie je potrebné pripojiť päť tlačidiel k pinom 5, 10, 11, 12 a 13. Akcia vykonaná každým tlačidlom je schematicky popísaná v pravej hornej tabuľke. Vľavo je znázornený spôsob pripojenia potenciometra (na piny A1 a A2 potrebujete dva potenciometre). Reproduktor musí byť pripojený k analógovému kolíku A0.

Dosku Arduino s konektorom VGA som umiestnil do dreveného boxu, ktorý obsahuje aj potenciometer prvého hráča a štyri tlačidlá, zatiaľ čo potenciometer druhého hráča a jeho štartovacie tlačidlo sú v samostatnom a menšom boxe.

Ak sa vám táto hračka páči a rozhodnete sa ju reprodukovať, oceňujem, ak napíšete komentár alebo pošlete obrázok v sekcii komentárov nižšie.

Krok 2: Hry od iných autorov

Sandro Maffiodo nedávno publikoval hru BitNinja. Viac informácií nájdete tu a kód si stiahnite tu.

Ak chcete používať moju konzolu, stačí tlačidlo v jeho kóde premapovať nasledovne:

#define BTN_UP 11 (namiesto 13)

#define BTN_LEFT 10 (namiesto 12)

#define BTN_RIGHT 12 (namiesto 11)

Tu je k dispozícii stohovač od Nikity Kuryleva. Viac informácií tu.

Opäť musíte premapovať jedno tlačidlo v inej časti kódu: stačí nahradiť digitalRead (2) za digitalRead (13)

Krok 3: Príloha 1: Ďalšie podrobnosti o tom, ako zostaviť ovládače

Príloha 1: Ďalšie podrobnosti o tom, ako zostaviť ovládače
Príloha 1: Ďalšie podrobnosti o tom, ako zostaviť ovládače
Príloha 1: Ďalšie podrobnosti o tom, ako zostaviť ovládače
Príloha 1: Ďalšie podrobnosti o tom, ako zostaviť ovládače
Príloha 1: Ďalšie podrobnosti o tom, ako zostaviť ovládače
Príloha 1: Ďalšie podrobnosti o tom, ako zostaviť ovládače
Príloha 1: Ďalšie podrobnosti o tom, ako zostaviť ovládače
Príloha 1: Ďalšie podrobnosti o tom, ako zostaviť ovládače

Ovládač môžete realizovať mnohými rôznymi spôsobmi, v závislosti od dostupného materiálu a vášho vkusu.

Rád ich realizujem pomocou drevených škatúľ (pozri obrázky na tejto stránke). Hlavný box pre Arduino, VGA konektor a tlačidlá prvého hráča a potenciometer; druhý (menší) iba pre tlačidlo a koliesko druhého hráča (potrebné pre Ponga a kresliacu hračku). Ďalšou možnosťou je dať všetko do jednej väčšej škatule.

Najprv odporúčam pripojiť port VGA. Na prvom a druhom obrázku môžete vidieť niekoľko podrobností: všimnite si dva 470 ohmové odpory pre červený a zelený zapojené na piny 6 a 7 a dva 68 ohmy na piny 3 a 9 pre horizontálny a vertikálny synchronizačný signál.

Môžete si vybrať rôzne farebné kombinácie v závislosti od toho, ktoré piny pripojíte ku konektoru VGA DSUB15, piny 1, 2 a 3 predstavujú červenú, zelenú, modrú (RGB). Spojil som piny 1 a 2, takže mám nasledujúcu kombináciu farieb: (0, 0) = čierna; (1, 0) = červená; (0, 1) = zelená; (1, 1) = žltá.

Pre všetky rôzne možnosti navrhujem prečítať si podrobnosti na stránke, kde sťahujete knižnice VGAx.

Hneď ako je konektor VGA pripravený, môžete pripraviť všetky ostatné káble pre tlačidlá, kolieska a reproduktor (pozri obrázok 2).

Teraz dajte všetko dohromady: pamätajte, že každý kolík tlačidla musí byť prepojený so zemou cez odpor 1 alebo 2 kOhm, inak keď je tlačidlo otvorené, stav kolíka môže byť nedefinovaný. To znamená, že ak zostane kolík odpojený, môžete na ňom mať náhodné (statické) napätie, ktoré ho môže aktivovať. Viac detektívov nájdete v schéme v druhom kroku tohto pokynu.

Posledným krokom je opraviť všetko na svojom mieste. Použil som tavnú pištoľ, ale môžete použiť vami preferovanú metódu.

Krok 4: Príloha 2: Niektoré úvahy o medziach pamäte

Je úžasné, že jednoduché Arduino je schopné generovať VGA signál a všetky tieto hry dohromady. Skutočným hrdlom fľaše je nedostatok SRAM. Mikrokontrolér AVR má k dispozícii iba 2048 bajtov na ukladanie a manipuláciu s premennými a knižnica VGAx ukladá premenné obrazovky do framebuffera s rozlíšením 120 x 60 pixelov, kde každý pixel potrebuje 2 bity (4 farby), teda celkom 1 800 bajtov. To znamená, že pre premenné skice zostáva iba 248 bajtov. Navyše, podľa mojich skúseností, jeden by mal nechať najmenej 100 bytov voľných, aby sa predišlo nestabilite. Pri použití viac ako 1950 bajtov dynamickej pamäte začne mikrokontrolér vykazovať zvláštne a nepredvídateľné správanie.

To znamená, že všetky premenné musia byť zdieľané medzi rôznymi hrami, a preto je kód dosť nečitateľný a ťažko laditeľný. Nie je to len záležitosť „pridať novú hru“do predchádzajúceho náčrtu, ale celý kód musí byť hlboko upravený a optimalizovaný.

Ďalej som musel použiť minimálny možný variabilný formát: napríklad pre všetky súradnice som musel použiť „byte“namiesto „int“alebo v iných prípadoch som musel uprednostniť „int“pred „float“.

Nakoniec moje uznanie patrí Sandrovi Maffiodoovi alias Smafferovi, tvorcovi knižnice VGAx a úžasnej hry BitNinja. Bez tejto knižnice by sa tento projekt nemohol uskutočniť.

Ďakujem tiež Nikite Kurylev za jednoduchú, ale zábavnú hru Stacker.

Odporúča: