Innehållsförteckning:

Arduino VGA -konsol med fem spel: 4 steg
Arduino VGA -konsol med fem spel: 4 steg

Video: Arduino VGA -konsol med fem spel: 4 steg

Video: Arduino VGA -konsol med fem spel: 4 steg
Video: الفرق بين الهارد ديسك hdd vs ssd 2024, Juli
Anonim
Image
Image
Arduino VGA -konsol med fem spel
Arduino VGA -konsol med fem spel
Arduino VGA -konsol med fem spel
Arduino VGA -konsol med fem spel

I mina tidigare instruktioner har jag återgivit förenklade versioner av några av de mest populära klassiska arkadspelen, med en ren Arduino och några andra komponenter. Senare sammanfogade jag fem av dem i en enda skiss. Här kommer jag att visa hur du kan bygga en enkel konsol för att spela Pong, Breakout, Bomber, Tetris och en ritleksak inspirerad till Etch-a-Sketch. Denna konsol kan också användas för att spela Snake och ytterligare två spel skrivna av andra författare: Bit Ninja av Sandro Maffiodo aka "Smaffer" och Stacker av Nikita Kurylev.

Huvudfunktionen är generering av en VGA -signal, tack vare VGAx -biblioteket, så konsolen behöver en VGA -bildskärm. Mitt mål, som vanligt, är att undvika någon "speciell komponent" för att bygga den, du behöver inte då någon stödjande IC eller sköldar! De enda komponenterna är två potentiometrar, fem knappar, få motstånd och en DSUB15 (VGA) kontakt. En piezohögtalare är valfri. Du kan se hur dessa spel ser ut på bilderna på den här sidan.

VGAx-biblioteket gör det möjligt att använda fyra färger med en upplösning på 120 x 60 pixlar, inte många men tillräckligt för den här retro-spelkonsolen. Grafiken är rå, men tack vare användningen av potentiometrarna går spelen smidigt. Enkla ljudeffekter finns också.

Steg 1: Hur man bygger en egen Arduino VGA -konsol

Hur man bygger din egen Arduino VGA -konsol
Hur man bygger din egen Arduino VGA -konsol
Hur man bygger din egen Arduino VGA -konsol
Hur man bygger din egen Arduino VGA -konsol

Ladda först ner ArduinoVGAgame.ino- och/eller Snake.ino -koder längst ner på denna sida och kopiera dem till din dator i en katalog med samma namn. Ladda ner VGAx -biblioteket från den här länken på GitHub. Det enklaste sättet är att kopiera det i undermappen för Arduino -programvaran med namnet "bibliotek", för att genast bli igenkänd.

VIKTIGT: detta bibliotek fungerar för Arduno IDE 1.6.4 men det är inte helt kompatibelt med äldre eller nyare versioner.

Ladda upp koden i ditt Arduino -kort (jag testade både Uno och Nano). En varning för lågt tillgängligt minne är normalt. Om du inte har andra fel är allt ok och du kan omedelbart börja bygga din egen konsol.

För detta behöver du:

  • en Arduino Uno Rev. 3 eller Arduino Nano 3.x (ATmega328)
  • en DSUB15 -kontakt, dvs en VGA -honkontakt eller en VGA -kabel som ska klippas.
  • motstånd: 2 x 68 Ohm och 2 x 470 Ohm och 5 x 1 till 2 kOhm
  • två 10 kOhm linjära potentiometrar (liknande värden är också bra)
  • fem knappar
  • någon kabel
  • en eller två fina lådor för att lägga alla komponenter.

Fakultativ:

  • en brödbräda eller en bandbräda
  • en piezohögtalare

Schemat visas överst i detta steg, tillsammans med ett exempel på en färdig "konsol".

schemat visar hur du ansluter en knapp och en potentiometer. Mer specifikt måste du ansluta fem knappar till stift 5, 10, 11, 12 respektive 13. Åtgärden som utförs av varje knapp beskrivs i den övre högra tabellen i schemat. Till vänster visas hur du ansluter en potentiometer (du behöver två potentiometrar till stiften A1 och A2). Högtalaren måste anslutas till analog stift A0.

Jag placerade Arduino -kortet med VGA -kontakten i en trälåda, som också rymmer den första spelarens potentiometer och fyra knappar, medan den andra spelarens potentiometer och hans startknapp finns i en separat och mindre låda.

Om du gillar den här leksaken och du bestämmer dig för att reproducera den, uppskattar jag om du skriver en kommentar eller skickar en bild i kommentarsfältet nedan.

Steg 2: Spel från andra författare

Sandro Maffiodo har nyligen publicerat spelet BitNinja. Youn kan hitta mer information här och ladda ner koden här.

För att använda min konsol behöver du bara göra om knappen i hans kod enligt följande:

#define BTN_UP 11 (istället för 13)

#define BTN_LEFT 10 (istället för 12)

#define BTN_RIGHT 12 (istället för 11)

Staplare, från Nikita Kurylev, finns här. Mer information här.

Återigen måste du göra om en knapp i en annan del av koden: ersätt bara digitalRead (2) med digitalRead (13)

Steg 3: Bilaga 1: Mer information om hur man bygger kontrollerna

Bilaga 1: Mer information om hur man bygger kontrollerna
Bilaga 1: Mer information om hur man bygger kontrollerna
Bilaga 1: Mer information om hur man bygger kontrollerna
Bilaga 1: Mer information om hur man bygger kontrollerna
Bilaga 1: Mer information om hur man bygger kontrollerna
Bilaga 1: Mer information om hur man bygger kontrollerna
Bilaga 1: Mer information om hur man bygger kontrollerna
Bilaga 1: Mer information om hur man bygger kontrollerna

Du kan realisera regulatorn på många olika sätt, beroende på tillgängligt material och din smak.

Jag gillar att förverkliga dem med trälådor (se bilderna på denna sida). En huvudbox för Arduino, VGA -kontakten och de första spelarknapparna och potenziometern; en andra (mindre) en bara för den andra spelarens knapp och hjul (behövs för Pong och ritleksaken). En annan möjlighet är att lägga allt i en enda större låda.

Först rekommenderar jag att ansluta VGA -porten. På den första och andra bilden kan du se några detaljer: notera de två 470 Ohm -motstånden för rött och grönt som är anslutna till stift 6 respektive 7 och två 68 ohm till stift 3 och 9 för horisontell och vertikal synkroniseringssignal.

Du kan välja olika färgkombinationer beroende på vilka stift du ansluter på VGA DSUB15 -kontakten, stiften 1, 2 och 3 representerar rött, grönt, blått (RGB). Jag kopplade stiften 1 och 2, så jag har följande färgkombination: (0, 0) = svart; (1, 0) = röd; (0, 1) = grön; (1, 1) = gul.

För alla olika möjligheter föreslår jag att du läser detaljerna på sidan där du laddar ner VGAx -biblioteken.

Så snart VGA -kontakten är klar kan du förbereda alla andra kablar för knapparna, hjulen och högtalaren (se bild 2).

Nu är det bara att sätta ihop allt: kom ihåg att varje knappstift måste anslutas till marken genom ett 1 eller 2 kOhm -motstånd, annars när knappen är öppen kan stiftets tillstånd vara odefinierat. Detta innebär att om stiftet lämnas frånkopplat kan du ha en slumpmässig (statisk) spänning på den som kan aktivera den. Se mer detaljerade scheman i det andra steget i denna instruerbara.

Det sista steget är att fixa allt på plats. Jag använde varmlimpistolen, men du kan använda din föredragna metod.

Steg 4: Bilaga 2: Några överväganden om minnesgränserna

Det är fantastiskt att en enkel Arduino kan generera en VGA -signal och alla dessa spel tillsammans. Den riktiga flaskhalsen är bristen på SRAM. AVR -mikrokontrollern har endast 2048 byte tillgänglig för att lagra och manipulera variablerna, och VGAx -biblioteket lagrar skärmvariablerna i en 120 x 60 pixlar rambuffer där varje pixel behöver 2 bitar (4 färger), totalt 1800 byte. Det betyder att det bara finns 248 byte kvar för skissvariablerna. Enligt min erfarenhet bör man lämna minst 100 byte ledigt för att undvika instabilitet. Genom att använda över 1950 byte dynamiskt minne börjar mikrokontrollern att visa udda och oförutsägbara beteenden.

Detta innebär att alla variabler måste delas mellan de olika spelen, och detta gör koden ganska oläslig och svår att felsöka. Det är inte bara en fråga om att "lägga till ett nytt spel" till den föregående skissen, utan all kod måste vara djupt modifierad och optimerad.

Dessutom var jag tvungen att använda det minsta möjliga variabla formatet: till exempel för alla koordinaterna måste jag använda "byte" istället för "int" eller, i andra fall, måste jag föredra "int" istället för "float".

Slutligen går min kunskap till Sandro Maffiodo aka Smaffer, skaparen av VGAx -biblioteket och det fantastiska spelet BitNinja. Utan detta bibliotek hade detta projekt inte kunnat förverkligas.

Tack också till Nikita Kurylev för det enkla men roliga spelet Stacker.

Rekommenderad: