INHOUDSOPGAWE:

Arduino VGA -konsole met vyf speletjies: 4 stappe
Arduino VGA -konsole met vyf speletjies: 4 stappe

Video: Arduino VGA -konsole met vyf speletjies: 4 stappe

Video: Arduino VGA -konsole met vyf speletjies: 4 stappe
Video: MKS SGEN L V1.0 - A4988 Stepper Drivers 2024, November
Anonim
Image
Image
Arduino VGA -konsole met vyf speletjies
Arduino VGA -konsole met vyf speletjies
Arduino VGA -konsole met vyf speletjies
Arduino VGA -konsole met vyf speletjies

In my vorige instruksies het ek vereenvoudigde weergawes van sommige van die gewildste klassieke arcade -speletjies weergegee deur middel van 'n kaal Arduino en 'n paar ander komponente. Later het ek vyf van hulle saamgevoeg in 'n enkele skets. Hier sal ek wys hoe u 'n eenvoudige konsole kan bou om Pong, Breakout, Bomber, Tetris en 'n teken speelgoed te speel wat geïnspireer is op Etch-a-Sketch. Hierdie konsole kan ook gebruik word om Snake te speel, en nog twee speletjies wat deur ander outeurs geskryf is: Bit Ninja deur Sandro Maffiodo aka "Smaffer" en Stacker deur Nikita Kurylev.

Die belangrikste kenmerk is die opwekking van 'n VGA -sein, danksy die VGAx -biblioteek, dus het die konsole 'n VGA -monitor nodig. My doel is, soos gewoonlik, om 'n 'spesiale komponent' te vermy om dit te bou; u benodig dan geen ondersteunende IC of skilde nie! Die enigste komponente is twee potensiometers, vyf knoppies, min weerstande en 'n DSUB15 (VGA) -aansluiting. 'N Piëzo -luidspreker is opsioneel. U kan sien hoe hierdie speletjies op die foto's op hierdie bladsy lyk.

Met die VGAx-biblioteek kan u vier kleure met 'n resolusie van 120 x 60 pixels gebruik, nie veel nie, maar genoeg vir hierdie retro-spelkonsole. Die grafiek is rou, maar danksy die gebruik van die potensiometers loop die speletjies vlot. Daar is ook eenvoudige klankeffekte beskikbaar.

Stap 1: Hoe om u eie Arduino VGA -konsole te bou

Hoe om u eie Arduino VGA -konsole te bou
Hoe om u eie Arduino VGA -konsole te bou
Hoe om u eie Arduino VGA -konsole te bou
Hoe om u eie Arduino VGA -konsole te bou

Laai eers die ArduinoVGAgame.ino- en/of Snake.ino -kodes onderaan hierdie bladsy af en kopieer dit na u rekenaar in 'n gids met dieselfde naam. Laai die VGAx -biblioteek af vanaf hierdie skakel op GitHub. Die maklikste manier is om dit in die submap van die Arduino -sagteware met die naam "biblioteke" te kopieer, om onmiddellik herken te word.

BELANGRIK: hierdie biblioteek werk vir Arduno IDE 1.6.4, maar dit is nie ten volle versoenbaar met ouer of nuwer weergawes nie.

Laai die kode op u Arduino -bord op (ek het Uno en Nano getoets). 'N Waarskuwing vir 'n lae beskikbare geheue is normaal. As u nie ander foute het nie, is alles in orde en kan u onmiddellik u eie konsole begin bou.

Hiervoor benodig u:

  • 'n Arduino Uno Rev. 3 of Arduino Nano 3.x (ATmega328)
  • 'n DSUB15 -aansluiting, dws 'n VGA -vroulike aansluiting of 'n VGA -kabel wat gesny moet word.
  • weerstande: 2 x 68 Ohm en 2 x 470 Ohm en 5 x 1 tot 2 kOhm
  • twee 10 kOhm lineêre potensiometers (soortgelyke waardes is ook goed)
  • vyf knoppies
  • 'n stuk kabel
  • een of twee mooi bokse om al die komponente in te sit.

Fakulteit:

  • 'n broodbord of 'n strookbord
  • 'n piëzo -luidspreker

Die skematika word bo -aan hierdie stap weergegee, tesame met 'n voorbeeld van 'n voltooide 'konsole'.

die skema toon hoe u 'n knoppie en 'n potensiometer kan koppel. Meer spesifiek, moet u vyf knoppies aan penne 5, 10, 11, 12 en 13 onderskeidelik verbind. Die aksie wat deur elke knoppie uitgevoer word, word in die skematiese tabel regs bo beskryf. Links word gewys hoe om 'n potensiometer aan te sluit (u benodig twee potensiometers aan penne A1 en A2). Die luidspreker moet gekoppel word aan die analoog pen A0.

Ek het die Arduino -bord met die VGA -aansluiting in 'n houtkas geplaas, wat ook die eerste speler -potensiometer en vier knoppies bevat, terwyl die tweede speler -potensiometer en sy startknoppie in 'n aparte en kleiner boks is.

As u van hierdie speelding hou en besluit om dit weer te gee, waardeer ek dit as u 'n opmerking skryf of 'n foto stuur in die kommentaarafdeling hieronder.

Stap 2: Speletjies van ander skrywers

Sandro Maffiodo het die spel BitNinja onlangs bekend gemaak. Youn kan meer inligting hier kry en die kode hier aflaai.

Om my konsole te gebruik, hoef u net die knoppie in sy kode soos volg te verander:

#define BTN_UP 11 (in plaas van 13)

#define BTN_LEFT 10 (in plaas van 12)

#define BTN_RIGHT 12 (in plaas van 11)

Stapelaar, van Nikita Kurylev, is hier beskikbaar. Meer inligting hier.

U moet weer 'n knoppie in 'n ander deel van die kode verander: vervang net digitalRead (2) met digitalRead (13)

Stap 3: Bylaag 1: Meer besonderhede oor hoe om die beheerders te bou

Bylaag 1: Meer besonderhede oor hoe om die beheerders te bou
Bylaag 1: Meer besonderhede oor hoe om die beheerders te bou
Bylaag 1: Meer besonderhede oor hoe om die beheerders te bou
Bylaag 1: Meer besonderhede oor hoe om die beheerders te bou
Bylaag 1: Meer besonderhede oor hoe om die beheerders te bou
Bylaag 1: Meer besonderhede oor hoe om die beheerders te bou
Bylaag 1: Meer besonderhede oor hoe om die beheerders te bou
Bylaag 1: Meer besonderhede oor hoe om die beheerders te bou

U kan die beheerder op baie verskillende maniere besef, afhangende van die beskikbare materiaal en u smaak.

Ek hou daarvan om dit met houtkaste te besef (sien die foto's op hierdie bladsy). 'N Hoofkas vir die Arduino, die VGA -aansluiting en die knoppies van die eerste speler en potenziometer; 'n tweede (kleiner) een net vir die tweede speler se knoppie en wiel (benodig vir Pong en die speelding). 'N Ander moontlikheid is om alles in 'n groter boks te plaas.

Eers beveel ek aan om die VGA -poort aan te sluit. In die eerste en tweede foto's kan u 'n paar besonderhede sien: let op die twee 470 Ohm -weerstande vir rooi en groen wat onderskeidelik op penne 6 en 7 gekoppel is, en twee 68 ohm aan penne 3 en 9 vir horisontale en vertikale sinchronisasie -sein.

U kan verskillende kleurkombinasies kies, afhangende van watter penne u op die VGA DSUB15 -aansluiting aansluit, die penne 1, 2 en 3 verteenwoordig onderskeidelik rooi, groen, blou (RGB). Ek het die penne 1 en 2 verbind, dus het ek die volgende kleurkombinasie: (0, 0) = swart; (1, 0) = rooi; (0, 1) = groen; (1, 1) = geel.

Vir alle verskillende moontlikhede stel ek voor dat u die besonderhede op die bladsy lees waar u die VGAx -biblioteke aflaai.

Sodra die VGA -aansluiting gereed is, kan u al die ander kabels voorberei vir die knoppies, wiele en luidspreker (sien prent 2).

Sit nou alles bymekaar: onthou dat elke knoppen deur 'n 1 of 2 kOhm -weerstand met die aarde verbind moet word, anders kan die toestand van die pen nie gedefinieer wees as die knoppie oop is nie. Dit beteken dat as die pen ontkoppel word, u 'n ewekansige (statiese) spanning kan hê wat dit kan aktiveer. Kyk vir meer detail die skematiese in die tweede stap van hierdie instruksies.

Die laaste stap is om alles reg te maak. Ek het die warmlijmpistool gebruik, maar u kan die metode wat u verkies, gebruik.

Stap 4: Bylaag 2: 'n paar oorwegings oor die geheue -perke

Dit is ongelooflik dat 'n eenvoudige Arduino 'n VGA -sein en al hierdie speletjies saam kan genereer. Die ware bottelnek is die gebrek aan SRAM. Die AVR -mikrobeheerder het slegs 2048 grepe beskikbaar om die veranderlikes te stoor en te manipuleer, en die VGAx -biblioteek stoor die skermveranderlikes in 'n framebuffer van 120x60 pixels waar elke pixel 2 bisse (4 kleure) benodig, vir 'n totaal van 1800 grepe. Dit beteken dat daar slegs 248 grepe oor is vir die sketsveranderlikes. Volgens my ervaring moet u ten minste 100 grepe vry laat om onstabiliteit te vermy. Deur meer as 1950 grepe dinamiese geheue te gebruik, begin die mikrobeheerder vreemde en onvoorspelbare gedrag toon.

Dit beteken dat al die veranderlikes onder die verskillende speletjies gedeel moet word, en dit maak die kode redelik onleesbaar en moeilik om te ontfout. Dit is nie net 'n kwessie om ''n nuwe speletjie' by die vorige skets te voeg nie, maar al die kode moet diep gewysig en geoptimaliseer word.

Verder moes ek die minimum moontlike veranderlike formaat gebruik: byvoorbeeld, vir al die koördinate moes ek 'byte' in plaas van 'int' gebruik, of, in ander gevalle, moes ek 'int' in plaas van 'float' verkies.

Uiteindelik gaan my kennis aan Sandro Maffiodo, oftewel Smaffer, die skepper van die VGAx -biblioteek en die wonderlike spel BitNinja. Sonder hierdie biblioteek sou hierdie projek nie kon realiseer nie.

Dankie ook aan Nikita Kurylev vir die eenvoudige, maar snaakse spel Stacker.

Aanbeveel: