Sisällysluettelo:

Arduino VGA -konsoli viidellä pelillä: 4 vaihetta
Arduino VGA -konsoli viidellä pelillä: 4 vaihetta

Video: Arduino VGA -konsoli viidellä pelillä: 4 vaihetta

Video: Arduino VGA -konsoli viidellä pelillä: 4 vaihetta
Video: Подключение Arduino к VGA монитора. Ардуино проекты. 2024, Syyskuu
Anonim
Image
Image
Arduino VGA -konsoli viidellä pelillä
Arduino VGA -konsoli viidellä pelillä
Arduino VGA -konsoli viidellä pelillä
Arduino VGA -konsoli viidellä pelillä

Aiemmissa Instructables -ohjelmissani olen toistanut yksinkertaistettuja versioita joistakin suosituimmista klassisista arcade -peleistä paljaan Arduinon ja muutamien muiden komponenttien avulla. Myöhemmin liitin viisi niistä yhteen yhdessä luonnoksessa. Tässä näytän kuinka voit rakentaa yksinkertaisen konsolin, jolla voi pelata Pongia, Breakoutia, Bomberia, Tetristä ja Etch-a-Sketchin innoittamaa piirustuslelua. Tätä konsolia voidaan käyttää myös Snaken ja kahden muun kirjoittajan kirjoittaman pelin pelaamiseen: Sandro Maffiodon eli "Smafferin" Bit Ninja ja Nikita Kurylevin Stacker.

Tärkein ominaisuus on VGA -signaalin tuottaminen VGAx -kirjaston ansiosta, joten konsoli tarvitsee VGA -näytön. Tavoitteeni, kuten tavallista, on välttää "erikoiskomponentti" sen rakentamiseen, et tarvitse sitten mitään tukevaa IC: tä tai kilpiä! Ainoat komponentit ovat kaksi potentiometriä, viisi painiketta, muutama vastus ja DSUB15 (VGA) -liitin. Pietsokaiutin on valinnainen. Näet, miltä nämä pelit näyttävät tämän sivun kuvista.

VGAx-kirjaston avulla voidaan käyttää neljää väriä, joiden resoluutio on 120 x 60 pikseliä, ei paljon, mutta tarpeeksi tähän retropelikonsoliin. Grafiikka on raaka, mutta potentiometrien käytön ansiosta pelit toimivat sujuvasti. Saatavilla on myös yksinkertaisia äänitehosteita.

Vaihe 1: Kuinka rakentaa oma Arduino VGA -konsoli

Kuinka rakentaa oma Arduino VGA -konsoli
Kuinka rakentaa oma Arduino VGA -konsoli
Kuinka rakentaa oma Arduino VGA -konsoli
Kuinka rakentaa oma Arduino VGA -konsoli

Lataa ensin ArduinoVGAgame.ino- ja/tai Snake.ino -koodit tämän sivun alareunasta ja kopioi ne tietokoneellesi samannimiseen hakemistoon. Lataa VGAx -kirjasto tästä linkistä GitHubissa. Helpoin tapa on kopioida se Arduino -ohjelmiston alikansioon nimeltä "kirjastot", jotta se tunnistetaan välittömästi.

TÄRKEÄÄ: tämä kirjasto toimii Arduno IDE 1.6.4 -käyttöjärjestelmässä, mutta se ei ole täysin yhteensopiva vanhempien tai uudempien versioiden kanssa.

Lataa koodi Arduino -kortillesi (testasin sekä Uno- että Nano -kortteja). Varoitus alhaisesta muistista on normaali. Jos sinulla ei ole muita virheitä, kaikki on kunnossa ja voit heti aloittaa oman konsolin rakentamisen.

Tätä varten tarvitset:

  • Arduino Uno Rev. 3 tai Arduino Nano 3.x (ATmega328)
  • DSUB15 -liitin eli VGA -naarasliitin tai leikattava VGA -kaapeli.
  • vastukset: 2 x 68 ohmia ja 2 x 470 ohmia ja 5 x 1-2 kOhm
  • kaksi 10 kOhm lineaarista potentiometriä (vastaavat arvot ovat myös hyviä)
  • viisi painiketta
  • jonkinlainen kaapeli
  • yksi tai kaksi mukavaa laatikkoa kaikkien komponenttien sijoittamiseen.

Fakultatiivinen:

  • leipälauta tai nauhalevy
  • pietsokaiutin

Kaavio esitetään tämän vaiheen yläosassa yhdessä esimerkin kanssa valmiista "konsolista".

kaaviossa esitetään painikkeen ja potentiometrin yhdistäminen. Tarkemmin sanottuna sinun on kytkettävä viisi painiketta nastoihin 5, 10, 11, 12 ja 13. Kunkin painikkeen suorittama toiminto on kuvattu kaavion oikeassa yläkulmassa olevassa taulukossa. Vasemmalla näkyy potentiometrin liittäminen (tarvitset kaksi potentiometriä nastoihin A1 ja A2). Kaiutin on kytkettävä analogiseen nastaan A0.

Laitoin Arduino -levyn VGA -liittimellä puurasiaan, jossa on myös ensimmäisen pelaajan potentiometri ja neljä painiketta, kun taas toisen pelaajan potentiometri ja hänen käynnistyspainike ovat erillisessä ja pienemmässä laatikossa.

Jos pidät tästä lelusta ja päätät kopioida sen, kiitän, jos kirjoitat kommentin tai lähetät kuvan alla olevaan kommenttiosaan.

Vaihe 2: Pelit muilta tekijöiltä

Sandro Maffiodo on äskettäin julkaissut pelin BitNinja. Youn löytää lisätietoja täältä ja ladata koodin täältä.

Jos haluat käyttää konsolia, sinun on vain määritettävä painike uudelleen koodissaan seuraavasti:

#define BTN_UP 11 (13 sijasta)

#define BTN_LEFT 10 (12 sijasta)

#define BTN_RIGHT 12 (11: n sijasta)

Pinoaja, Nikita Kurylev, on saatavana täältä. Lisätietoja tästä.

Jälleen kerran, sinun on uusittava yksi painike koodin eri osassa: vaihda vain digitalRead (2) tilalle digitalRead (13)

Vaihe 3: Liite 1: Lisätietoja ohjainten rakentamisesta

Liite 1: Lisätietoja ohjaimien rakentamisesta
Liite 1: Lisätietoja ohjaimien rakentamisesta
Liite 1: Lisätietoja ohjaimien rakentamisesta
Liite 1: Lisätietoja ohjaimien rakentamisesta
Liite 1: Lisätietoja ohjaimien rakentamisesta
Liite 1: Lisätietoja ohjaimien rakentamisesta
Liite 1: Lisätietoja ohjaimien rakentamisesta
Liite 1: Lisätietoja ohjaimien rakentamisesta

Voit toteuttaa ohjaimen monella eri tavalla saatavilla olevan materiaalin ja makusi mukaan.

Haluan toteuttaa ne puulaatikoilla (katso tämän sivun kuvat). Päälaatikko Arduinolle, VGA -liitin ja ensimmäiset soittimen painikkeet ja potentiometri; toinen (pienempi) vain toisen pelaajan painiketta ja pyörää varten (tarvitaan Pongille ja piirustuslelulle). Toinen mahdollisuus on laittaa kaikki yhteen suurempaan laatikkoon.

Ensin kehotan kytkemään VGA -portin. Ensimmäisessä ja toisessa kuvassa on joitain yksityiskohtia: huomioi kaksi 470 ohmin punaista ja vihreää vastusta, jotka on kytketty nastoihin 6 ja 7, ja kaksi 68 ohmia nastoihin 3 ja 9 vaakasuuntaista ja pystysynkronointisignaalia varten.

Voit valita erilaisia väriyhdistelmiä sen mukaan, mitkä nastat liität VGA DSUB15 -liitäntään. Nastat 1, 2 ja 3 edustavat punaista, vihreää ja sinistä (RGB). Yhdistin nastat 1 ja 2, joten minulla on seuraava väriyhdistelmä: (0, 0) = musta; (1, 0) = punainen; (0, 1) = vihreä; (1, 1) = keltainen.

Kaikkien eri mahdollisuuksien osalta suosittelen lukemaan tiedot sivulta, jolta lataat VGAx -kirjastot.

Heti kun VGA -liitin on valmis, voit valmistella kaikki muut kaapelit painikkeita, pyöriä ja kaiutinta varten (katso kuva 2).

Kokoa nyt kaikki yhteen: muista, että jokainen napin nasta on kytkettävä maahan 1 tai 2 kOhm: n vastuksen kautta, muuten painikkeen ollessa auki tapin tila voi olla määrittelemätön. Tämä tarkoittaa sitä, että jos nasta jätetään irrottamatta, siinä voi olla satunnainen (staattinen) jännite, joka voi aktivoida sen. Katso lisätietoja kaaviosta tämän ohjeen toisessa vaiheessa.

Viimeinen vaihe on korjata kaikki paikoilleen. Käytin kuumaliimapistoolia, mutta voit käyttää haluamaasi menetelmää.

Vaihe 4: Liite 2: Muutamia huomioita muistirajoista

On hämmästyttävää, että yksinkertainen Arduino pystyy tuottamaan VGA -signaalin ja kaikki nämä pelit yhdessä. Todellinen pullonkaula on SRAM: n puute. AVR -mikrokontrollerissa on vain 2048 tavua käytettävissä muuttujien tallentamiseen ja käsittelyyn, ja VGAx -kirjasto tallentaa näyttömuuttujat 120 x 60 pikselin kehyspuskuriin, jossa jokainen pikseli tarvitsee 2 bittiä (4 väriä), yhteensä 1800 tavua. Tämä tarkoittaa, että luonnosmuuttujille on jäljellä vain 248 tavua. Lisäksi kokemukseni mukaan vähintään 100 tavua pitäisi jättää vapaaksi epävakauden välttämiseksi. Käyttämällä yli 1950 tavua dynaamista muistia mikrokontrolleri alkaa näyttää outoa ja arvaamatonta käyttäytymistä.

Tämä tarkoittaa, että kaikki muuttujat on jaettava eri pelien kesken, ja tämä tekee koodista melko lukukelvottoman ja vaikean virheenkorjauksen. Ei ole vain kysymys "uuden pelin lisäämisestä" edelliseen luonnokseen, vaan kaikki koodit on muutettava perusteellisesti ja optimoitava.

Lisäksi minun piti käyttää mahdollisimman pientä muuttujan muotoa: esimerkiksi kaikissa koordinaateissa minun oli käytettävä "tavua" "int": n sijasta tai muissa tapauksissa minun oli mieluummin "int" kuin "float".

Lopuksi, tietooni kuuluu Sandro Maffiodo eli Smaffer, VGAx -kirjaston ja mahtavan BitNinja -pelin luoja. Ilman tätä kirjastoa tätä projektia ei olisi voitu toteuttaa.

Kiitos myös Nikita Kuryleville yksinkertaisesta mutta hauskasta Stacker -pelistä.

Suositeltava: