Sadržaj:

Arduino VGA konzola s pet igara: 4 koraka
Arduino VGA konzola s pet igara: 4 koraka

Video: Arduino VGA konzola s pet igara: 4 koraka

Video: Arduino VGA konzola s pet igara: 4 koraka
Video: Animated GIF on the ESP8266 Serial console 2024, Prosinac
Anonim
Image
Image
Arduino VGA konzola s pet igara
Arduino VGA konzola s pet igara
Arduino VGA konzola s pet igara
Arduino VGA konzola s pet igara

U svojim prethodnim Instructablesima reproducirao sam pojednostavljene verzije nekih od najpopularnijih klasičnih arkadnih igara, pomoću golog Arduina i nekoliko drugih komponenti. Kasnije sam ih spojio pet u jednu skicu. Ovdje ću vam pokazati kako možete izgraditi jednostavnu konzolu koja može igrati Pong, Breakout, Bomber, Tetris i igračku za crtanje inspiriranu Etch-a-Sketch-om. Ova se konzola može koristiti i za igranje Snakea, te još dvije igre drugih autora: Bit Ninja Sandra Maffioda zvanog "Smaffer" i Stacker Nikite Kuryleva.

Glavna značajka je generiranje VGA signala, zahvaljujući biblioteci VGAx, pa konzoli treba VGA monitor. Moj je cilj, kao i obično, izbjeći bilo kakvu "posebnu komponentu" za njegovu izgradnju, tada vam ne trebaju nikakvi podržavajući IC ili štitovi! Jedine komponente su dva potenciometra, pet tipki, nekoliko otpornika i konektor DSUB15 (VGA). Piezo zvučnik nije obavezan. Kako slike izgledaju, možete vidjeti na slikama na ovoj stranici.

VGAx knjižnica omogućuje korištenje četiri boje rezolucije 120 x 60 piksela, ne mnogo, ali dovoljno za ovu konzolu za retro igre. Grafika je sirova, ali zahvaljujući upotrebi potenciometara igre se odvijaju glatko. Dostupni su i jednostavni zvučni efekti.

Korak 1: Kako izgraditi vlastitu Arduino VGA konzolu

Kako izgraditi vlastitu Arduino VGA konzolu
Kako izgraditi vlastitu Arduino VGA konzolu
Kako izgraditi vlastitu Arduino VGA konzolu
Kako izgraditi vlastitu Arduino VGA konzolu

Prvo preuzmite ArduinoVGAgame.ino i/ili Snake.ino kodove na dnu ove stranice i kopirajte ih na svoje računalo u direktorij s istim imenom. Preuzmite VGAx knjižnicu s ove veze na GitHubu. Najjednostavniji način je kopirati ga u podmapu softvera Arduino pod nazivom "knjižnice", kako bi se odmah prepoznala.

VAŽNO: ova knjižnica radi za Arduno IDE 1.6.4, ali nije u potpunosti kompatibilna sa starijim ili novijim verzijama.

Prenesite kôd na svoju Arduino ploču (testirao sam i Uno i Nano). Upozorenje o nedostatku memorije je normalno. Ako nemate drugih pogrešaka, sve je u redu i možete odmah početi s izgradnjom vlastite konzole.

Za ovo vam je potrebno:

  • Arduino Uno Rev. 3 ili Arduino Nano 3.x (ATmega328)
  • priključak DSUB15, tj. VGA ženski priključak ili VGA kabel za rezanje.
  • otpornici: 2 x 68 Ohma i 2 x 470 Ohma i 5 x 1 do 2 kOhm
  • dva linearna potenciometra od 10 kOhm (slične vrijednosti su također u redu)
  • pet gumba
  • neki komad kabela
  • jednu ili dvije lijepe kutije za stavljanje svih komponenti.

Fakultativno:

  • matična ploča ili ploča s trakama
  • piezo zvučnik

Shema je prikazana na vrhu ovog koraka, zajedno s primjerom gotove "konzole".

shema prikazuje kako spojiti gumb i potenciometar. Točnije, morate spojiti pet gumba na pinove 5, 10, 11, 12 i 13 respektivno. Radnje koje izvodi svaki gumb opisane su u gornjoj desnoj tablici na shemi. S lijeve strane prikazano je kako spojiti potenciometar (potrebna su vam dva potenciometra na pinove A1 i A2). Zvučnik mora biti spojen na analogni pin A0.

Arduino ploču s VGA konektorom stavio sam u drvenu kutiju u kojoj se nalazi i prvi potenciometar za reprodukciju i četiri gumba, dok se potenciometar za drugi player i njegova tipka za početak nalaze u zasebnoj i manjoj kutiji.

Ako vam se sviđa ova igračka i odlučite je reproducirati, zahvalan sam ako napišete komentar ili pošaljete sliku u odjeljak za komentare ispod.

Korak 2: Igre drugih autora

Sandro Maffiodo nedavno je objavio igru BitNinja. Više informacija možete pronaći ovdje, a kod preuzeti ovdje.

Da biste koristili moju konzolu, samo morate preslikati gumb u njegovu kodu na sljedeći način:

#define BTN_UP 11 (umjesto 13)

#define BTN_LEFT 10 (umjesto 12)

#define BTN_RIGHT 12 (umjesto 11)

Slagač, iz Nikite Kuryleva, dostupan je ovdje. Više informacija ovdje.

Ponovno morate promijeniti jednu tipku u drugom dijelu koda: samo zamijenite digitalRead (2) sa digitalRead (13)

Korak 3: Dodatak 1: Više pojedinosti o tome kako izgraditi kontrolere

Dodatak 1: Više pojedinosti o tome kako izgraditi kontrolere
Dodatak 1: Više pojedinosti o tome kako izgraditi kontrolere
Dodatak 1: Više pojedinosti o tome kako izgraditi kontrolere
Dodatak 1: Više pojedinosti o tome kako izgraditi kontrolere
Dodatak 1: Više pojedinosti o tome kako izgraditi kontrolere
Dodatak 1: Više pojedinosti o tome kako izgraditi kontrolere
Dodatak 1: Više pojedinosti o tome kako izgraditi kontrolere
Dodatak 1: Više pojedinosti o tome kako izgraditi kontrolere

Regulator možete realizirati na mnogo različitih načina, ovisno o dostupnom materijalu i vašem ukusu.

Volim ih realizirati drvenim kutijama (pogledajte slike na ovoj stranici). Glavna kutija za Arduino, VGA konektor i tipke prvog igrača te potenciometar; drugi (manji) samo za gumb i kotačić drugog igrača (potreban za Pong i igračku za crtanje). Druga je mogućnost staviti sve u jednu veću kutiju.

Prvo preporučujem spajanje VGA porta. Na prvoj i drugoj slici možete vidjeti neke detalje: obratite pozornost na dva otpornika od 470 Ohma za Crveno i Zeleno spojeni na pinove 6 i 7, te dva 68 Ohma na pinove 3 i 9 za vodoravnu i okomitu sinkronizaciju signala.

Možete odabrati različite kombinacije boja ovisno o tome koje pinove priključite na VGA DSUB15 priključak, pinovi 1, 2 i 3 predstavljaju crvenu, zelenu, plavu (RGB) respektivno. Spojio sam pinove 1 i 2, pa imam sljedeću kombinaciju boja: (0, 0) = crna; (1, 0) = crveno; (0,1) = zelena; (1, 1) = žuta.

Za sve različite mogućnosti, predlažem da pročitate pojedinosti na stranici na kojoj preuzimate VGAx knjižnice.

Čim je VGA konektor spreman, možete pripremiti sve ostale kabele za gumbe, kotače i zvučnik (pogledajte sliku 2).

Sada samo spojite sve: imajte na umu da svaki pin gumba mora biti spojen na masu kroz otpornik od 1 ili 2 kOhm, inače kad je gumb otvoren, stanje pina može biti nedefinirano. To znači da ako je pin ostavljen isključen, na njemu možete imati slučajni (statički) napon koji ga može aktivirati. Za više detalja pogledajte shemu u drugom koraku ovog uputstva.

Zadnji korak je popraviti sve na svom mjestu. Koristio sam pištolj za vruće ljepilo, ali možete koristiti željeni način.

Korak 4: Dodatak 2: Neka razmatranja o ograničenjima memorije

Nevjerojatno je da jednostavan Arduino može generirati VGA signal i sve te igre zajedno. Pravi grlić je nedostatak SRAM-a. AVR mikrokontroler ima samo 2048 bajtova dostupnih za spremanje i upravljanje varijablama, a VGAx knjižnica sprema varijable zaslona u framebuffer 120x60 piksela gdje svakom pikselu trebaju 2 bita (4 boje), za ukupno 1800 bajtova. To znači da je za varijable skice ostalo samo 248 bajtova. Nadalje, prema mom iskustvu, treba ostaviti najmanje 100 bajtova slobodnim kako bi se izbjegle nestabilnosti. Koristeći iznad 1950 bajtova dinamičke memorije, mikrokontroler počinje pokazivati čudno i nepredvidljivo ponašanje.

To znači da se sve varijable moraju dijeliti između različitih igara, što kôd čini prilično nečitkim i teškim za ispravljanje pogrešaka. Nije samo pitanje "dodati novu igru" prethodnoj skici, već se sav kôd mora duboko izmijeniti i optimizirati.

Nadalje, morao sam koristiti minimalno mogući format varijable: na primjer, za sve koordinate morao sam koristiti "byte" umjesto "int" ili, u drugim slučajevima, morao sam preferirati "int" umjesto "float".

Konačno, moje priznanje ide Sandru Maffiodu zvanom Smaffer, tvorcu VGAx biblioteke i sjajne igre BitNinja. Bez ove knjižnice ovaj se projekt ne bi mogao realizirati.

Hvala i Nikiti Kurylevu na jednostavnoj, ali smiješnoj igri Stacker.

Preporučeni: