Sadržaj:

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

Video: Arduino VGA konzola sa pet igara: 4 koraka

Video: Arduino VGA konzola sa pet igara: 4 koraka
Video: Animated GIF on the ESP8266 Serial console 2024, Novembar
Anonim
Image
Image
Arduino VGA konzola sa pet igara
Arduino VGA konzola sa pet igara
Arduino VGA konzola sa pet igara
Arduino VGA konzola sa 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 konzola se može koristiti i za igranje Snakea, te još dvije igre drugih autora: Bit Ninja Sandra Maffioda zvanog "Smaffer" i Stacker Nikite Kuryleva.

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

VGAx biblioteka omogućava korištenje četiri boje s rezolucijom od 120 x 60 piksela, ne mnogo, ali dovoljno za ovu konzolu za retro igre. Grafika je neobrađena, 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 računalo u direktorij s istim imenom. Preuzmite VGAx biblioteku sa ove veze na GitHubu. Najlakši način je da ga kopirate u podmapu softvera Arduino pod nazivom "biblioteke", kako biste je odmah prepoznali.

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

Postavite kôd na svoju Arduino ploču (testirao sam i Uno i Nano). Upozorenje o nedostatku memorije je normalno. Ako nemate drugih greš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)
  • konektor DSUB15, odnosno VGA ženski konektor 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 dugmadi
  • neki komad kabla
  • jednu ili dvije lijepe kutije za stavljanje svih komponenti.

Fakultativno:

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

Shema je prikazana na vrhu ovog koraka, zajedno sa primjerom gotove „konzole“.

shema prikazuje kako spojiti dugme i potenciometar. Preciznije, morate spojiti pet tipki na pinove 5, 10, 11, 12 i 13 respektivno. Radnje koje vrši svako dugme opisane su u gornjoj desnoj tabeli na shemi. S lijeve strane je prikazano kako spojiti potenciometar (potrebna su vam dva potenciometra na pinove A1 i A2). Zvučnik mora biti priključen 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 su potenciometar za drugi player i njegovo dugme za pokretanje 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 i preuzeti kod ovdje.

Da biste koristili moju konzolu, samo morate preslikati dugme u njegovom 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č, Nikite Kuryleva, dostupan je ovdje. Više informacija ovdje.

Opet morate promijeniti jedno dugme u drugom dijelu koda: samo zamijenite digitalRead (2) sa digitalRead (13)

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

Dodatak 1: Više detalja o tome kako izgraditi kontrolere
Dodatak 1: Više detalja o tome kako izgraditi kontrolere
Dodatak 1: Više detalja o tome kako izgraditi kontrolere
Dodatak 1: Više detalja o tome kako izgraditi kontrolere
Dodatak 1: Više detalja o tome kako izgraditi kontrolere
Dodatak 1: Više detalja o tome kako izgraditi kontrolere
Dodatak 1: Više detalja o tome kako izgraditi kontrolere
Dodatak 1: Više detalja 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 dugmad za prvi igrač i potenciometar; drugi (manji) samo za dugme i točak drugog igrača (potrebno za Pong i igračku za crtanje). Druga mogućnost je da sve stavite u jednu veću kutiju.

Prvo preporučujem povezivanje VGA porta. Na prvoj i drugoj slici možete vidjeti neke detalje: obratite pažnju 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 horizontalnu i vertikalnu sinhronizaciju signala.

Možete odabrati različite kombinacije boja ovisno o tome koje pinove povežete na VGA DSUB15 konektor, 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) = žuto.

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

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

Sada samo spojite sve: zapamtite da svaki pin dugmeta mora biti spojen na masu kroz otpornik od 1 ili 2 kOhm, u protivnom stanje pina može biti nedefinirano kada je dugme otvoreno. To znači da ako pin ostane 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 ove igre zajedno. Pravi grlić je nedostatak SRAM-a. AVR mikrokontroler ima samo 2048 bajtova dostupnih za spremanje i upravljanje varijablama, a VGAx biblioteka sprema varijable ekrana 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 više od 1950 bajtova dinamičke memorije, mikrokontroler počinje pokazivati čudno i nepredvidivo 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 otklanjanje pogrešaka. Nije samo pitanje "dodati novu igru" prethodnoj skici, već sav kôd mora biti duboko izmijenjen i optimiziran.

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 biblioteke ovaj se projekt ne bi mogao realizirati.

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

Preporučuje se: