Tartalomjegyzék:

Arduino VGA konzol öt játékkal: 4 lépés
Arduino VGA konzol öt játékkal: 4 lépés

Videó: Arduino VGA konzol öt játékkal: 4 lépés

Videó: Arduino VGA konzol öt játékkal: 4 lépés
Videó: How I Play Games in 2022!! Modern CRT Gaming! 2024, Július
Anonim
Image
Image
Arduino VGA konzol öt játékkal
Arduino VGA konzol öt játékkal
Arduino VGA konzol öt játékkal
Arduino VGA konzol öt játékkal

Korábbi utasításomban a legnépszerűbb klasszikus ügyességi játékok egyszerűsített verzióit reprodukáltam, puszta Arduino és néhány más összetevő segítségével. Később öt vázlatot egyesítettem egyetlen vázlatban. Itt megmutatom, hogyan lehet felépíteni egy egyszerű konzolt, amely képes Pong, Breakout, Bomber, Tetris és Rajzjáték Etch-a-Sketch ihletésére. Ez a konzol használható Snake, és további két, más szerzők által írt játék is: Bit Ninja Sandro Maffiodo néven "Smaffer" és Stacker Nikita Kurylev.

A fő jellemzője a VGA jel generálása, köszönhetően a VGAx könyvtárnak, így a konzolnak VGA monitorra van szüksége. A célom, mint általában, elkerülni minden "különleges alkatrészt" az építéséhez, akkor nincs szükség semmilyen támogató IC -re vagy pajzsra! Az egyetlen alkatrész két potenciométer, öt gomb, kevés ellenállás és egy DSUB15 (VGA) csatlakozó. A piezo hangszóró opcionális. Ezen az oldalon látható képeken láthatja, hogyan néznek ki ezek a játékok.

A VGAx könyvtár négy szín használatát teszi lehetővé 120 x 60 pixeles felbontással, nem sok, de elég ehhez a retro játékkonzolhoz. A grafika nyers, de a potenciométerek használatának köszönhetően a játékok zökkenőmentesen futnak. Egyszerű hanghatások is rendelkezésre állnak.

Lépés: Hogyan készítsen saját Arduino VGA konzolt

Hogyan készítsünk saját Arduino VGA konzolt
Hogyan készítsünk saját Arduino VGA konzolt
Hogyan készítsünk saját Arduino VGA konzolt?
Hogyan készítsünk saját Arduino VGA konzolt?

Először töltse le az ArduinoVGAgame.ino és/vagy Snake.ino kódokat az oldal alján, és másolja át őket a számítógépére egy azonos nevű könyvtárba. Töltse le a VGAx könyvtárat a GitHub ezen a linkjén. A legegyszerűbb módja, ha bemásolja az Arduino szoftver alkönyvtárába, amelyet "könyvtáraknak" neveznek, hogy azonnal felismerje.

FONTOS: ez a könyvtár az Arduno IDE 1.6.4 -hez használható, de nem teljesen kompatibilis a régebbi vagy újabb verziókkal.

Töltsd fel a kódot az Arduino kártyádra (teszteltem az Uno -t és a Nano -t is). Az alacsony memóriahiányra vonatkozó figyelmeztetés normális. Ha nincs más hibája, minden rendben van, és azonnal elkezdheti a saját konzol építését.

Ehhez szüksége van:

  • egy Arduino Uno Rev. 3 vagy Arduino Nano 3.x (ATmega328)
  • egy DSUB15 csatlakozót, azaz egy VGA hüvelyes csatlakozót vagy egy VGA kábelt kell levágni.
  • ellenállások: 2 x 68 Ohm és 2 x 470 Ohm és 5 x 1-2 kOhm
  • két 10 kOhm -os lineáris potenciométer (hasonló értékek is megfelelőek)
  • öt gomb
  • valami kábel
  • egy vagy két szép doboz az összes alkatrész elhelyezéséhez.

Választható:

  • kenyérlap vagy szalagdeszka
  • piezo hangszóró

A vázlat ennek a lépésnek a tetején található, a kész „konzol” példájával együtt.

a vázlat bemutatja, hogyan kell csatlakoztatni a gombot és a potenciométert. Pontosabban öt gombot kell csatlakoztatni az 5, 10, 11, 12 és 13 érintkezőkhöz. Az egyes gombok által végrehajtott műveleteket a sematikus jobb felső táblázat tartalmazza. A bal oldalon látható a potenciométer csatlakoztatásának módja (két potenciométerre van szükség az A1 és A2 csapokhoz). A hangszórót az A0 analóg érintkezőhöz kell csatlakoztatni.

Az Arduino táblát a VGA csatlakozóval egy fadobozba helyeztem, amely az első játékos potenciométert és négy gombot is tartalmaz, míg a második játékos potenciométere és az indító gombja külön és kisebb dobozban van.

Ha tetszik ez a játék, és úgy dönt, hogy reprodukálja, megköszönném, ha megjegyzést írna vagy képet küldene az alábbi megjegyzés rovatba.

2. lépés: Játékok más szerzőktől

Sandro Maffiodo nemrég publikálta a BitNinja játékot. Youn itt talál további információkat és letöltheti a kódot.

A konzolom használatához csak át kell alakítania a gombot a kódjában az alábbiak szerint:

#define BTN_UP 11 (13 helyett)

#define BTN_LEFT 10 (12 helyett)

#define BTN_RIGHT 12 (11 helyett)

Stacker, Nikita Kurylev, itt érhető el. További információ itt.

Ismét újra kell készítenie egy gombot a kód különböző részeiben: csak cserélje ki a digitalRead (2) -et a digitalRead (13) -ra

3. lépés: 1. függelék: További részletek a vezérlők felépítéséről

1. függelék: További részletek a vezérlők felépítéséről
1. függelék: További részletek a vezérlők felépítéséről
1. függelék: További részletek a vezérlők felépítéséről
1. függelék: További részletek a vezérlők felépítéséről
1. függelék: További részletek a vezérlők felépítéséről
1. függelék: További részletek a vezérlők felépítéséről
1. függelék: További részletek a vezérlők felépítéséről
1. függelék: További részletek a vezérlők felépítéséről

A vezérlőt a rendelkezésre álló anyagtól és ízléstől függően sokféleképpen megvalósíthatja.

Szeretem őket fadobozokkal megvalósítani (lásd ezen az oldalon a képeket). Fő doboz az Arduino számára, a VGA csatlakozó, valamint az első lejátszó gombok és potenciométer; egy második (kisebb) csak a második játékos gombjához és kerékéhez (Ponghoz és a rajzjátékhoz szükséges). Egy másik lehetőség, hogy mindent egyetlen nagyobb dobozba helyez.

Először azt javaslom, hogy csatlakoztassa a VGA portot. Az első és a második képen néhány részletet láthat: vegye figyelembe a két 470 ohmos ellenállást a piros és a zöld számára, amelyek a 6 -os és a 7 -es tűhöz vannak csatlakoztatva, és két 68 ohmos ellenállást a 3 -as és 9 -es tűkhöz a vízszintes és függőleges szinkronizálási jelhez.

Különféle színkombinációk közül választhat, attól függően, hogy a VGA DSUB15 csatlakozóhoz mely tűket csatlakoztatja, az 1., 2. és 3. tű piros, zöld, kék (RGB). Összekötöttem az 1. és 2. tüskét, így a következő színkombinációm van: (0, 0) = fekete; (1, 0) = piros; (0, 1) = zöld; (1, 1) = sárga.

Javaslom, hogy minden különböző lehetőségnél olvassa el a VGAx könyvtárakat letöltő oldal részleteit.

Amint a VGA csatlakozó készen áll, előkészítheti az összes többi kábelt a gombokhoz, kerekekhez és hangszórókhoz (lásd 2. kép).

Most csak tegyen össze mindent: ne feledje, hogy minden gombostűt 1 vagy 2 kOhm -os ellenálláson keresztül kell a földhöz csatlakoztatni, ellenkező esetben, ha a gomb nyitva van, a csap állapota meghatározhatatlan lehet. Ez azt jelenti, hogy ha a csapot lekapcsolva hagyják, akkor véletlenszerű (statikus) feszültség lehet rajta, amely aktiválhatja. További részletekért lásd a vázlatot ennek az utasításnak a második lépésében.

Az utolsó lépés az, hogy mindent helyre kell hozni. Én forró ragasztópisztolyt használtam, de használhatja a kívánt módszert.

4. lépés: 2. függelék: Néhány szempont a memória korlátaival kapcsolatban

Elképesztő, hogy egy egyszerű Arduino képes VGA jelet generálni és ezeket a játékokat együtt. Az igazi palacknyak az SRAM hiánya. Az AVR mikrokontrollernek mindössze 2048 bájtja van a változók tárolására és manipulálására, a VGAx könyvtár pedig a képernyő változóit 120x60 képpontos keretbufferben tárolja, ahol minden képpont 2 bitre (4 szín), összesen 1800 bájtra van szüksége. Ez azt jelenti, hogy csak 248 bájt maradt a vázlatváltozókra. Továbbá tapasztalataim szerint legalább 100 bájt szabadon kell hagynia az instabilitás elkerülése érdekében. Az 1950 bájt feletti dinamikus memória felhasználásával a mikrokontroller furcsa és kiszámíthatatlan viselkedést mutat.

Ez azt jelenti, hogy az összes változót meg kell osztani a különböző játékok között, és ezáltal a kód meglehetősen olvashatatlan és nehezen hibakereshető. Nem csak az a kérdés, hogy "új játékot adunk" az előző vázlathoz, hanem minden kódot mélyen módosítani és optimalizálni kell.

Ezenkívül a lehető legkisebb változó formátumot kellett használnom: például minden koordinátához az "int" helyett a "byte" -t kellett használnom, vagy más esetekben az "int" -t kellett választanom a "float" helyett.

Végül tudtommal Sandro Maffiodo aka Smaffer, a VGAx könyvtár és a félelmetes BitNinja játék megalkotója. E könyvtár nélkül ez a projekt nem valósulhatott volna meg.

Köszönöm Nikita Kurylevnek is az egyszerű, de vicces Stacker játékot.

Ajánlott: