Turinys:

„Arduino VGA“konsolė su penkiais žaidimais: 4 žingsniai
„Arduino VGA“konsolė su penkiais žaidimais: 4 žingsniai

Video: „Arduino VGA“konsolė su penkiais žaidimais: 4 žingsniai

Video: „Arduino VGA“konsolė su penkiais žaidimais: 4 žingsniai
Video: Run a VGA monitor using Arduino | Arduino gaming console 2024, Liepa
Anonim
Image
Image
„Arduino VGA“konsolė su penkiais žaidimais
„Arduino VGA“konsolė su penkiais žaidimais
„Arduino VGA“konsolė su penkiais žaidimais
„Arduino VGA“konsolė su penkiais žaidimais

Ankstesnėse instrukcijose atkūriau supaprastintas kai kurių populiariausių klasikinių arkadinių žaidimų versijas, naudodamas „Arduino“ir keletą kitų komponentų. Vėliau aš sujungiau penkis iš jų į vieną eskizą. Čia aš parodysiu, kaip galite sukurti paprastą konsolę, kuri galėtų žaisti „Pong“, „Breakout“, „Bomber“, „Tetris“, ir piešimo žaislą, įkvėptą „Etch-a-Sketch“. Šią konsolę taip pat galima naudoti žaidžiant „Snake“ir dar du kitus autorių parašytus žaidimus: „Sand N Maja“, „Smaffer“, „Bit Ninja“ir Nikitos Kurylevo „Stacker“.

Pagrindinis bruožas yra VGA signalo generavimas VGAx bibliotekos dėka, todėl konsolėms reikia VGA monitoriaus. Mano tikslas, kaip įprasta, yra vengti „specialaus komponento“jo sukūrimui, jums nereikia jokių palaikančių IC ar skydų! Vieninteliai komponentai yra du potenciometrai, penki mygtukai, keli rezistoriai ir DSUB15 (VGA) jungtis. Pjezo garsiakalbis neprivalomas. Kaip atrodo šie žaidimai, galite pamatyti šio puslapio nuotraukose.

„VGAx“biblioteka leidžia naudoti keturias spalvas, kurių skiriamoji geba yra 120 x 60 pikselių, o ne daug, bet pakankamai šiai retro žaidimų konsolėms. Grafika yra neapdorota, tačiau dėl potenciometrų naudojimo žaidimai vyksta sklandžiai. Galimi ir paprasti garso efektai.

1 žingsnis: Kaip sukurti savo „Arduino VGA“konsolę

Kaip sukurti savo „Arduino VGA“konsolę
Kaip sukurti savo „Arduino VGA“konsolę
Kaip sukurti savo „Arduino VGA“konsolę
Kaip sukurti savo „Arduino VGA“konsolę

Pirmiausia šio puslapio apačioje atsisiųskite „ArduinoVGAgame.ino“ir (arba) „Snake.ino“kodus ir nukopijuokite juos į savo kompiuterį to paties pavadinimo kataloge. Atsisiųskite „VGAx“biblioteką iš šios nuorodos „GitHub“. Lengviausias būdas yra nukopijuoti jį į „Arduino“programinės įrangos pakatalogį, pavadintą „bibliotekos“, kad būtų nedelsiant atpažintas.

SVARBU: ši biblioteka veikia „Arduno IDE 1.6.4“, tačiau ji nėra visiškai suderinama su senesnėmis ar naujesnėmis versijomis.

Įkelkite kodą į „Arduino“plokštę (išbandžiau ir „Uno“, ir „Nano“). Įspėjimas apie mažai atminties yra normalus. Jei neturite kitų klaidų, viskas gerai ir galite nedelsdami pradėti kurti savo konsolę.

Tam jums reikia:

  • „Arduino Uno Rev. 3“arba „Arduino Nano 3.x“(ATmega328)
  • DSUB15 jungtis, t. y. VGA patelė arba VGA kabelis, kurį reikia nupjauti.
  • rezistoriai: 2 x 68 omai ir 2 x 470 omų ir 5 x 1-2 kOhm
  • du 10 kOhm linijiniai potenciometrai (panašios vertės taip pat tinka)
  • penki mygtukai
  • kažkoks laido gabalas
  • viena ar dvi gražios dėžutės, skirtos sudėti visus komponentus.

Fakultatyvus:

  • duonos lentą arba juostelę
  • pjezo garsiakalbis

Schema pateikiama šio veiksmo viršuje kartu su baigtos „konsolės“pavyzdžiu.

schemoje parodyta, kaip prijungti mygtuką ir potenciometrą. Tiksliau, jūs turite prijungti penkis mygtukus atitinkamai prie 5, 10, 11, 12 ir 13 kaiščių. Kiekvieno mygtuko veiksmas aprašytas schemos viršutinėje dešinėje lentelėje. Kairėje pusėje parodyta, kaip prijungti potenciometrą (jums reikia dviejų potenciometrų prie kaiščių A1 ir A2). Garsiakalbis turi būti prijungtas prie analoginio kištuko A0.

Aš įdėjau „Arduino“plokštę su VGA jungtimi į medinę dėžę, kurioje taip pat yra pirmasis žaidėjo potenciometras ir keturi mygtukai, o antrasis žaidėjo potenciometras ir jo paleidimo mygtukas yra atskiroje ir mažesnėje dėžutėje.

Jei jums patinka šis žaislas ir nusprendėte jį atgaminti, dėkoju, jei parašysite komentarą arba atsiųsite paveikslėlį žemiau esančiame komentarų skyriuje.

2 žingsnis: Žaidimai iš kitų autorių

Sandro Maffiodo neseniai paskelbė žaidimą „BitNinja“. Youn galite rasti daugiau informacijos čia ir atsisiųsti kodą čia.

Jei norite naudoti mano konsolę, tiesiog pakeiskite jo kodo mygtuką taip:

#define BTN_UP 11 (vietoj 13)

#define BTN_LEFT 10 (vietoj 12)

#define BTN_RIGHT 12 (vietoj 11)

Stacker, iš Nikita Kurylev, yra čia. Daugiau informacijos čia.

Vėlgi, jūs turite pakartoti vieną mygtuką kitoje kodo dalyje: tiesiog pakeiskite „digitalRead“(2) į „digitalRead“(13)

3 žingsnis: 1 priedas. Daugiau informacijos apie valdiklių kūrimą

1 priedas. Daugiau informacijos apie valdiklių kūrimą
1 priedas. Daugiau informacijos apie valdiklių kūrimą
1 priedas. Daugiau informacijos apie valdiklių kūrimą
1 priedas. Daugiau informacijos apie valdiklių kūrimą
1 priedas. Daugiau informacijos apie valdiklių kūrimą
1 priedas. Daugiau informacijos apie valdiklių kūrimą
1 priedas. Daugiau informacijos apie valdiklių kūrimą
1 priedas. Daugiau informacijos apie valdiklių kūrimą

Valdiklį galite realizuoti įvairiais būdais, priklausomai nuo turimos medžiagos ir jūsų skonio.

Man patinka juos realizuoti su medinėmis dėžėmis (žr. Paveikslėlius šiame puslapyje). Pagrindinė „Arduino“dėžutė, VGA jungtis ir pirmieji grotuvo mygtukai bei potenciometras; antrasis (mažesnis) skirtas tik antrojo žaidėjo mygtukui ir ratui (reikalingas „Pong“ir piešimo žaislui). Kita galimybė - viską sudėti į vieną didesnę dėžę.

Pirmiausia siūlau prijungti VGA prievadą. Pirmoje ir antroje nuotraukose galite pamatyti kai kurias detales: atkreipkite dėmesį į du 470 omų rezistorius raudonai ir žaliai, prijungtus prie atitinkamai 6 ir 7 kaiščių, ir du 68 omų prie 3 ir 9 kaiščių horizontaliam ir vertikaliam sinchronizavimo signalui.

Galite pasirinkti skirtingus spalvų derinius, priklausomai nuo to, kuriuos kaiščius jungiate prie VGA DSUB15 jungties, 1, 2 ir 3 kaiščiai yra atitinkamai raudona, žalia, mėlyna (RGB). Sujungiau 1 ir 2 kaiščius, todėl turiu tokį spalvų derinį: (0, 0) = juoda; (1, 0) = raudona; (0, 1) = žalia; (1, 1) = geltona.

Dėl visų skirtingų galimybių siūlau perskaityti išsamią informaciją puslapyje, kuriame atsisiunčiate „VGAx“bibliotekas.

Kai tik VGA jungtis bus paruošta, galėsite paruošti visus kitus kabelius mygtukams, ratams ir garsiakalbiui (žr. 2 pav.).

Dabar tiesiog sudėkite viską: atminkite, kad kiekvienas mygtuko kaištis turi būti prijungtas prie žemės per 1 arba 2 kOhm rezistorių, kitaip atidarius mygtuką, kaiščio būsena gali būti neapibrėžta. Tai reiškia, kad jei kaištis bus atjungtas, ant jo gali būti atsitiktinė (statinė) įtampa, kuri gali jį suaktyvinti. Daugiau informacijos rasite schemoje antrame šios instrukcijos žingsnyje.

Paskutinis žingsnis yra sutvarkyti viską savo vietose. Aš naudojau karšto klijų pistoletą, tačiau galite naudoti pageidaujamą metodą.

4 veiksmas: 2 priedas: kai kurios mintys apie atminties ribas

Nuostabu, kad paprastas „Arduino“sugeba generuoti VGA signalą ir visus šiuos žaidimus kartu. Tikrasis butelio kaklelis yra SRAM trūkumas. AVR mikrovaldiklis turi tik 2048 baitus kintamiesiems saugoti ir jais manipuliuoti, o VGAx biblioteka ekrano kintamuosius saugo 120x60 pikselių kadrų buferyje, kur kiekvienam pikseliui reikia 2 bitų (4 spalvos), iš viso 1800 baitų. Tai reiškia, kad eskizo kintamiesiems liko tik 248 baitai. Be to, mano patirtis rodo, kad norint išvengti nestabilumo reikėtų palikti laisvą bent 100 baitų. Naudodamas daugiau nei 1950 baitų dinaminės atminties, mikrovaldiklis pradeda rodyti keistą ir nenuspėjamą elgesį.

Tai reiškia, kad visi kintamieji turi būti bendrinami skirtinguose žaidimuose, todėl kodas yra gana neįskaitomas ir sunkiai derinamas. Tai ne tik „pridėti naują žaidimą“prie ankstesnio eskizo, bet visas kodas turi būti labai pakeistas ir optimizuotas.

Be to, turėjau naudoti mažiausią įmanomą kintamojo formatą: pavyzdžiui, visoms koordinatėms turėjau naudoti „baitą“, o ne „int“, arba kitais atvejais turėjau teikti pirmenybę „int“, o ne „float“.

Galiausiai mano žinios atitenka Sandro Maffiodo, dar žinomam kaip Smaffer, VGAx bibliotekos ir nuostabaus žaidimo BitNinja kūrėjui. Be šios bibliotekos šis projektas negalėjo būti įgyvendintas.

Taip pat ačiū Nikitai Kurylev už paprastą, bet juokingą žaidimą Stacker.

Rekomenduojamas: