Talaan ng mga Nilalaman:

Arduino VGA Console Sa Limang Laro: 4 na Hakbang
Arduino VGA Console Sa Limang Laro: 4 na Hakbang

Video: Arduino VGA Console Sa Limang Laro: 4 na Hakbang

Video: Arduino VGA Console Sa Limang Laro: 4 na Hakbang
Video: Arduino Mega HMI touch screen "7 inch TFT LCD" based Load controlling and display Seconds "Basics" 2024, Hulyo
Anonim
Image
Image
Arduino VGA Console Sa Limang Laro
Arduino VGA Console Sa Limang Laro
Arduino VGA Console Sa Limang Laro
Arduino VGA Console Sa Limang Laro

Sa aking nakaraang Mga Instructable, nag-kopya ako ng mga pinasimple na bersyon ng ilan sa mga pinakatanyag na klasikong arcade game, sa pamamagitan ng isang hubad na Arduino at ilang iba pang mga bahagi. Nang maglaon ay sumali ako sa lima sa kanila sa isang solong sketch. Ipapakita ko rito kung paano ka makakabuo ng isang simpleng console na maaaring maglaro ng Pong, Breakout, Bomber, Tetris at isang laruang guhit na inspirasyon sa Etch-a-Sketch. Ang console na ito ay maaaring magamit din upang maglaro ng Ahas, at dalawa pang mga laro na isinulat ng iba pang mga may-akda: Bit Ninja ni Sandro Maffiodo aka "Smaffer" at Stacker ni Nikita Kurylev.

Ang pangunahing tampok ay ang pagbuo ng isang VGA signal, salamat sa VGAx library, sa gayon ang console ay nangangailangan ng isang VGA monitor. Ang aking layunin, tulad ng dati, ay iwasan ang anumang "espesyal na sangkap" upang maitayo ito, hindi mo kailangan pagkatapos ng anumang sumusuporta sa IC o mga kalasag! Ang mga sangkap lamang ay dalawang potentiometers, limang mga pindutan, ilang resistors at isang konektor ng DSUB15 (VGA). Ang isang piezo speaker ay opsyonal. Maaari mong makita kung paano tumingin ang mga larong ito sa mga larawan sa pahinang ito.

Pinapayagan ng VGAx library na gumamit ng apat na kulay na may resolusyon na 120 x 60 pixel, hindi marami ngunit sapat para sa retro-game console na ito. Ang graphic ay hilaw ngunit, salamat sa paggamit ng mga potensyal, ang mga laro ay tumatakbo nang maayos. Ang mga simpleng sound effects ay magagamit din.

Hakbang 1: Paano Bumuo ng Iyong Sariling Arduino VGA Console

Paano Bumuo ng Iyong Sariling Arduino VGA Console
Paano Bumuo ng Iyong Sariling Arduino VGA Console
Paano Bumuo ng Iyong Sariling Arduino VGA Console
Paano Bumuo ng Iyong Sariling Arduino VGA Console

Una i-download ang ArduinoVGAgame.ino at / o ang Snake.ino code sa ilalim ng pahinang ito at kopyahin ang mga ito sa iyong PC sa isang direktoryo na may parehong pangalan. I-download ang VGAx library mula sa link na ito sa GitHub. Ang pinakamadaling paraan ay kopyahin ito sa Arduino software subfolder na pinangalanang "library", upang makilala kaagad.

MAHALAGA: gumagana ang library na ito para sa Arduno IDE 1.6.4 ngunit hindi ito ganap na katugma sa mas matanda o mas bagong mga bersyon.

I-upload ang code sa iyong Arduino board (Sinubukan ko ang parehong Uno at Nano). Ang isang babala para sa mababang magagamit na memorya ay normal. Kung wala kang iba pang mga pagkakamali ang lahat ay ok at maaari mong agad na simulan upang bumuo ng iyong sariling console.

Para sa mga ito kailangan mo:

  • isang Arduino Uno Rev. 3 o Arduino Nano 3.x (ATmega328)
  • isang Konektor ng DSUB15, ibig sabihin ay isang konektor ng babaeng VGA o isang VGA cable na puputulin.
  • resistors: 2 x 68 Ohm at 2 x 470 Ohm at 5 x 1 hanggang 2 kOhm
  • dalawang 10 kOhm linear potentiometers (ang mga katulad na halaga ay pagmultahin din)
  • limang mga pindutan
  • ilang piraso ng cable
  • isa o dalawang magagandang kahon upang mailagay ang lahat ng mga bahagi.

Nakakalamang:

  • isang breadboard o isang strip board
  • isang piezo speaker

Ang eskematiko ay iniulat sa tuktok ng hakbang na ito, kasama ang isang halimbawa ng isang natapos na "console".

ipinapakita ng eskematiko kung paano ikonekta ang isang pindutan at isang potensyomiter. Mas partikular, kailangan mong ikonekta ang limang mga pindutan sa mga pin 5, 10, 11, 12 at 13 ayon sa pagkakabanggit. Ang aksyon na isinagawa ng bawat pindutan ay inilarawan sa kanang itaas na talahanayan sa eskematiko. Sa kaliwa ipinapakita kung paano ikonekta ang isang potensyomiter (kailangan mo ng dalawang potentiometers sa mga pin na A1 at A2). Ang speaker ay dapat na konektado sa analog pin A0.

Inilagay ko ang Arduino board na may konektor ng VGA sa isang kahon ng kahoy, na hawak din ang unang potensyomiter ng manlalaro at apat na mga pindutan, habang ang pangalawang potensyomiter ng manlalaro at ang kanyang pindutan ng pagsisimula ay nasa isang hiwalay at mas maliit na kahon.

Kung gusto mo ang laruang ito at magpasya kang kopyahin ito, pinahahalagahan ko kung sumulat ka ng isang komento o magpadala ng isang larawan sa seksyon ng komento sa ibaba.

Hakbang 2: Mga Laro Mula sa Ibang Mga May-akda

Kamakailan lamang na inilathala ni Sandro Maffiodo ang larong BitNinja. Makakahanap ng mas maraming impormasyon si Youn dito at mai-download ang code dito.

Upang magamit ang aking console, kailangan mo lamang i-remap ang pindutan sa kanyang code tulad ng sumusunod:

# tukuyin ang BTN_UP 11 (sa halip na 13)

# tukuyin ang BTN_LEFT 10 (sa halip na 12)

# tukuyin ang BTN_RIGHT 12 (sa halip na 11)

Ang Stacker, mula sa Nikita Kurylev, ay magagamit dito. Dagdag pang impormasyon dito.

Muli, kailangan mong i-remap ang isang pindutan, sa iba't ibang bahagi ng code: palitan lamang ang digitalRead (2) ng digitalRead (13)

Hakbang 3: Apendiks 1: Maraming Detalye Tungkol sa Paano Bumuo ng Mga Controller

Apendiks 1: Higit pang Mga Detalye Tungkol sa Paano Bumuo ng Mga Controllers
Apendiks 1: Higit pang Mga Detalye Tungkol sa Paano Bumuo ng Mga Controllers
Apendiks 1: Higit pang Mga Detalye Tungkol sa Paano Bumuo ng Mga Controllers
Apendiks 1: Higit pang Mga Detalye Tungkol sa Paano Bumuo ng Mga Controllers
Apendiks 1: Higit pang Mga Detalye Tungkol sa Paano Bumuo ng Mga Controllers
Apendiks 1: Higit pang Mga Detalye Tungkol sa Paano Bumuo ng Mga Controllers
Apendiks 1: Higit pang Mga Detalye Tungkol sa Paano Bumuo ng Mga Controllers
Apendiks 1: Higit pang Mga Detalye Tungkol sa Paano Bumuo ng Mga Controllers

Maaari mong mapagtanto ang controller sa maraming iba't ibang mga paraan, nakasalalay sa magagamit na materyal at iyong panlasa.

Gusto kong mapagtanto ang mga ito sa mga kahon ng kahoy (tingnan ang mga larawan sa pahinang ito). Isang pangunahing kahon para sa Arduino, ang konektor ng VGA at ang mga unang pindutan ng manlalaro at potenziometer; isang segundo (mas maliit) isa para lamang sa pangalawang pindutan ng manlalaro at gulong (kinakailangan para sa Pong at laruang guhit). Ang isa pang posibilidad ay ilagay ang lahat sa isang solong mas malaking kahon.

Una ay inirekomenda ko upang ikonekta ang port ng VGA. Sa una at pangalawang larawan maaari mong makita ang ilang mga detalye: tandaan ang dalawang 470 Ohm resistors para sa Red at Green na konektado sa mga pin 6 at 7 ayon sa pagkakabanggit, at dalawang 68 Ohm sa mga pin 3 at 9 para sa pahalang at patayong signal ng pagsabay.

Maaari kang pumili ng iba't ibang mga kumbinasyon ng kulay depende sa mga pin na ikinonekta mo sa konektor ng VGA DSUB15, ang mga pin na 1, 2 at 3 ay kumakatawan sa Red, Green, Blue (RGB) ayon sa pagkakabanggit. Ikinonekta ko ang mga pin na 1 at 2, sa gayon mayroon akong sumusunod na kumbinasyon ng kulay: (0, 0) = itim; (1, 0) = pula; (0, 1) = berde; (1, 1) = dilaw.

Para sa lahat ng magkakaibang posibilidad, iminumungkahi kong basahin ang mga detalye sa pahina kung saan mo i-download ang mga aklatan ng VGAx.

Sa sandaling handa na ang konektor ng VGA, maaari mong ihanda ang lahat ng iba pang mga kable para sa mga pindutan, gulong at speaker (tingnan ang larawan 2).

Ngayon ay pagsamahin lamang ang lahat: tandaan na ang bawat pindutan ng pin ay kailangang maging connectet sa lupa sa pamamagitan ng isang 1 o 2 kOhm risistor, kung hindi man kapag binuksan ang pindutan ang estado ng pin ay maaaring hindi natukoy. Nangangahulugan ito na kung ang pin ay naiwan na naka-disconnect maaari kang magkaroon ng isang random (static) boltahe dito na maaaring buhayin ito. Tingnan para sa higit pang deteils ang eskematiko sa pangalawang hakbang ng itinuturo na ito.

Ang huling hakbang ay upang ayusin ang lahat sa lugar. Ginamit ko ang hot-glue-gun, ngunit maaari mong gamitin ang iyong ginustong pamamaraan.

Hakbang 4: Apendiks 2: Ilang Pagsasaalang-alang Tungkol sa Mga Limitasyon sa memorya

Kamangha-mangha na ang isang simpleng Arduino ay nakalikha ng isang signal ng VGA at lahat ng mga larong ito. Ang tunay na bote-leeg ay ang kawalan ng SRAM. Ang AVR microcontroller ay mayroon lamang 2048 bytes na magagamit upang maiimbak at manipulahin ang mga variable, at ang library ng VGAx ay nag-iimbak ng mga variable ng screen sa isang 120x60 pixel framebuffer kung saan ang bawat pixel ay nangangailangan ng 2 bits (4 na kulay), para sa isang kabuuang 1800 bytes. Nangangahulugan ito na may 248 bytes lamang na natitira para sa mga variable ng sketch. Bukod dito, sa aking karanasan, dapat mag-iwan ang isa ng hindi bababa sa 100 bytes na libre upang maiwasan ang mga kawalang-tatag. Gamit ang higit sa 1950 bytes ng pabago-bagong memorya, ang microcontroller ay nagsisimulang magpakita ng kakaiba at hindi mahuhulaan na pag-uugali.

Nangangahulugan ito na ang lahat ng mga variable ay dapat ibahagi sa iba't ibang mga laro, at ginagawa nitong hindi mabasa ang code at mahirap i-debug. Hindi lamang isang bagay na "magdagdag ng bagong laro" sa nakaraang sketch, ngunit ang lahat ng code ay dapat na malalim na mabago at ma-optimize.

Bukod dito, kinailangan kong gumamit ng pinakamaliit na posibleng format ng variable: halimbawa, para sa lahat ng mga koordinasyon na kailangan kong gumamit ng "byte" sa halip na "int" o, sa ibang mga kaso, mas gusto ko ang "int" sa halip na "float".

Sa wakas, ang aking pagkilala ay napupunta kay Sandro Maffiodo aka Smaffer, ang tagalikha ng VGAx library at ang kahanga-hangang laro na BitNinja. Kung wala ang silid-aklatan na ito, hindi maisasakatuparan ang proyektong ito.

Salamat din kay Nikita Kurylev para sa simple ngunit nakakatawang laro na Stacker.

Inirerekumendang: