Innholdsfortegnelse:

Arduino VGA -konsoll med fem spill: 4 trinn
Arduino VGA -konsoll med fem spill: 4 trinn

Video: Arduino VGA -konsoll med fem spill: 4 trinn

Video: Arduino VGA -konsoll med fem spill: 4 trinn
Video: AMD Sempron Cpu processor .Removing pins For Gold Recovery 2024, Juli
Anonim
Image
Image
Arduino VGA -konsoll med fem spill
Arduino VGA -konsoll med fem spill
Arduino VGA -konsoll med fem spill
Arduino VGA -konsoll med fem spill

I mine tidligere instrukser har jeg gjengitt forenklede versjoner av noen av de mest populære klassiske arkadespillene, ved hjelp av en bar Arduino og få andre komponenter. Senere slo jeg sammen fem av dem i en enkelt skisse. Her vil jeg vise hvordan du kan bygge en enkel konsoll som kan spille Pong, Breakout, Bomber, Tetris og en tegneserie som er inspirert til Etch-a-Sketch. Denne konsollen kan også brukes til å spille Snake, og ytterligere to spill skrevet av andre forfattere: Bit Ninja av Sandro Maffiodo aka "Smaffer" og Stacker av Nikita Kurylev.

Hovedfunksjonen er generering av et VGA -signal, takket være VGAx -biblioteket, og derfor trenger konsollen en VGA -skjerm. Målet mitt, som vanlig, er å unngå noen "spesiell komponent" for å bygge den, du trenger ikke støttende IC eller skjold! De eneste komponentene er to potensiometre, fem knapper, få motstander og en DSUB15 (VGA) -kontakt. En piezo -høyttaler er valgfri. Du kan se hvordan disse spillene ser ut på bildene på denne siden.

VGAx-biblioteket lar deg bruke fire farger med en oppløsning på 120 x 60 piksler, ikke mange, men nok for denne retro-spillkonsollen. Grafikken er rå, men takket være bruken av potensiometrene går spillene jevnt. Enkle lydeffekter er også tilgjengelige.

Trinn 1: Hvordan bygge din egen Arduino VGA -konsoll

Hvordan bygge din egen Arduino VGA -konsoll
Hvordan bygge din egen Arduino VGA -konsoll
Hvordan bygge din egen Arduino VGA -konsoll
Hvordan bygge din egen Arduino VGA -konsoll

Last ned først ArduinoVGAgame.ino og/eller Snake.ino -koder nederst på denne siden, og kopier dem til PCen i en katalog med samme navn. Last ned VGAx -biblioteket fra denne lenken på GitHub. Den enkleste måten er å kopiere den i Arduino -undermappen som heter "biblioteker", for å bli gjenkjent umiddelbart.

VIKTIG: dette biblioteket fungerer for Arduno IDE 1.6.4, men det er ikke fullt kompatibelt med eldre eller nyere versjoner.

Last opp koden i Arduino -kortet (jeg testet både Uno og Nano). En advarsel for lite tilgjengelig minne er normalt. Hvis du ikke har andre feil, er alt ok, og du kan umiddelbart begynne å bygge din egen konsoll.

For dette trenger du:

  • en Arduino Uno Rev. 3 eller Arduino Nano 3.x (ATmega328)
  • en DSUB15 -kontakt, dvs. en VGA -hunkontakt eller en VGA -kabel som skal kuttes.
  • motstander: 2 x 68 Ohm og 2 x 470 Ohm og 5 x 1 til 2 kOhm
  • to lineære potensiometre på 10 kOhm (lignende verdier er også fine)
  • fem knapper
  • et stykke kabel
  • en eller to fine esker for å sette alle komponentene.

Fakultativ:

  • et brødbrett eller et stripebrett
  • en piezo -høyttaler

Skjematikken er rapportert øverst i dette trinnet, sammen med et eksempel på en ferdig "konsoll".

skjematisk viser hvordan du kobler til en knapp og et potensiometer. Nærmere bestemt må du koble fem knapper til henholdsvis pinne 5, 10, 11, 12 og 13. Handlingen som utføres av hver knapp, er beskrevet i tabellen øverst til høyre i skjematikken. Til venstre er det vist hvordan du kobler et potensiometer (du trenger to potensiometre til pinnene A1 og A2). Høyttaleren må være koblet til analog pin A0.

Jeg plasserte Arduino -kortet med VGA -kontakten i en treboks, som også inneholder det første spillerpotensiometeret og fire knapper, mens det andre spillerpotensiometeret og startknappen hans er i en separat og mindre eske.

Hvis du liker denne leken og bestemmer deg for å reprodusere den, setter jeg pris på om du skriver en kommentar eller sender et bilde i kommentarfeltet nedenfor.

Trinn 2: Spill fra andre forfattere

Sandro Maffiodo har nylig publisert spillet BitNinja. Youn kan finne mer informasjon her og laste ned koden her.

For å bruke konsollen min, må du bare legge om knappen i koden på følgende måte:

#define BTN_UP 11 (i stedet for 13)

#define BTN_LEFT 10 (i stedet for 12)

#define BTN_RIGHT 12 (i stedet for 11)

Stabler, fra Nikita Kurylev, er tilgjengelig her. Mer informasjon her.

Igjen må du legge om en knapp i en annen del av koden: bare erstatt digitalRead (2) med digitalRead (13)

Trinn 3: Vedlegg 1: Flere detaljer om hvordan du bygger kontrollerne

Vedlegg 1: Flere detaljer om hvordan du bygger kontrollerne
Vedlegg 1: Flere detaljer om hvordan du bygger kontrollerne
Vedlegg 1: Flere detaljer om hvordan du bygger kontrollerne
Vedlegg 1: Flere detaljer om hvordan du bygger kontrollerne
Vedlegg 1: Flere detaljer om hvordan du bygger kontrollerne
Vedlegg 1: Flere detaljer om hvordan du bygger kontrollerne
Vedlegg 1: Flere detaljer om hvordan du bygger kontrollerne
Vedlegg 1: Flere detaljer om hvordan du bygger kontrollerne

Du kan realisere kontrolleren på mange forskjellige måter, avhengig av tilgjengelig materiale og din smak.

Jeg liker å realisere dem med trekasser (se bildene på denne siden). En hovedboks for Arduino, VGA -kontakten og knappene for første spiller og potensialmeter; en andre (mindre) en bare for den andre spillerknappen og hjulet (nødvendig for Pong og tegneleken). En annen mulighet er å sette alt i en enkelt større eske.

Først anbefaler jeg å koble til VGA -porten. På det første og andre bildet kan du se noen detaljer: legg merke til de to 470 Ohm -motstandene for rødt og grønt som er koblet til henholdsvis pinne 6 og 7, og to 68 ohm til pinnene 3 og 9 for horisontalt og vertikalt synkroniseringssignal.

Du kan velge forskjellige fargekombinasjoner avhengig av hvilke pinner du kobler til VGA DSUB15 -kontakten, pinnene 1, 2 og 3 representerer henholdsvis rød, grønn, blå (RGB). Jeg koblet pinnene 1 og 2, og derfor har jeg følgende fargekombinasjon: (0, 0) = svart; (1, 0) = rød; (0, 1) = grønn; (1, 1) = gul.

For alle forskjellige muligheter foreslår jeg å lese detaljene på siden der du laster ned VGAx -bibliotekene.

Så snart VGA -kontakten er klar, kan du forberede alle andre kabler for knappene, hjulene og høyttaleren (se bilde 2).

Nå er det bare å sette alt sammen: husk at hver knappestift må kobles til bakken gjennom en 1 eller 2 kOhm motstand, ellers kan knappen til pinnen være udefinert når knappen er åpen. Dette betyr at hvis pinnen blir frakoblet, kan du ha en tilfeldig (statisk) spenning på den som kan aktivere den. Se skjemaet for flere detaljer i det andre trinnet i denne instruksjonsboken.

Det siste trinnet er å fikse alt på plass. Jeg brukte den varme limpistolen, men du kan bruke din foretrukne metode.

Trinn 4: Vedlegg 2: Noen hensyn til minnegrenser

Det er utrolig at en enkel Arduino er i stand til å generere et VGA -signal og alle disse spillene sammen. Den virkelige flaskehalsen er mangelen på SRAM. AVR -mikrokontrolleren har bare 2048 byte tilgjengelig for å lagre og manipulere variablene, og VGAx -biblioteket lagrer skjermvariablene i en 120 x 60 piksler rammebuffer der hver piksel trenger 2 bits (4 farger), til sammen 1800 byte. Dette betyr at det bare er 248 byte igjen for skissevariablene. Etter min erfaring bør man la minst 100 byte stå igjen for å unngå ustabilitet. Ved å bruke over 1950 byte dynamisk minne begynner mikrokontrolleren å vise merkelig og uforutsigbar oppførsel.

Dette betyr at alle variablene må deles mellom de forskjellige spillene, og dette gjør koden ganske uleselig og vanskelig å feilsøke. Det er ikke bare et spørsmål om å "legge til et nytt spill" i den forrige skissen, men all koden må være dypt modifisert og optimalisert.

Videre måtte jeg bruke det minste mulige variabelformatet: for eksempel for alle koordinatene måtte jeg bruke "byte" i stedet for "int", eller i andre tilfeller måtte jeg foretrekke "int" i stedet for "float".

Til slutt går min kunnskap til Sandro Maffiodo aka Smaffer, skaperen av VGAx -biblioteket og det fantastiske spillet BitNinja. Uten dette biblioteket kunne dette prosjektet ikke ha blitt realisert.

Takk også til Nikita Kurylev for det enkle, men morsomme spillet Stacker.

Anbefalt: