Innehållsförteckning:
- Steg 1: Hur man bygger en egen Arduino VGA -konsol
- Steg 2: Spel från andra författare
- Steg 3: Bilaga 1: Mer information om hur man bygger kontrollerna
- Steg 4: Bilaga 2: Några överväganden om minnesgränserna
Video: Arduino VGA -konsol med fem spel: 4 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
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
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
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:
Spel med 4 knappar med en analog ingång: 6 steg (med bilder)
Spel med 4 knappar med en analog ingång: Denna instruerbara funktion fokuserar på att använda en analog ingångslinje för flera knappar som kan detekteras oberoende av varandra. Och för att markera användningen av dessa knappar ingår programvara för att spela fyra olika spel med 4 knappar. Alla spel (8 tum
Aruduino LED -spel Snabbt klickande spel för två spelare: 8 steg
Aruduino LED -spel Snabbklickande spel för två spelare: Detta projekt är inspirerat av @HassonAlkeim. Om du är villig att ta en djup titt här är en länk som du kan kolla in https://www.instructables.com/id/Arduino-Two-Player-Fast-Button-Clicking-Game/. Detta spel är en förbättrad version av Alkeims. Det är en
Fem snygga små projekt: 6 steg
Five Neat Little Projects: Fick älska kretsar som blinkar och låter när du visar elektronik till unga människor. Dessa fem kretsar som tar bara några minuter att bygga, de är lätta att modifiera för att ändra blinkningshastigheterna eller på tider. Den första kretsen
Hur man laddar upp spel till Arduboy och 500 spel till Flash-cart: 8 steg
Hur man laddar upp spel till Arduboy och 500 spel till Flash-cart: Jag gjorde några hemlagade Arduboy med Serial Flash-minne som kan lagra max 500 spel att spela på vägen. Jag hoppas kunna dela hur man laddar spel till det, inklusive hur man lagrar spel i det seriella flashminnet och skapar ett eget konsoliderat spelpaket
Fem centers lutningssensor: 4 steg (med bilder)
Fem centers lutningssensor: Detta är en grundläggande lutningssensor inspirerad av boll-och-bur-stil sensorer, men 2d istället för 3d. Ett fångat nickel ansluter par ledningar beroende på sensorriktningen. Dessa är snabba att bygga och ganska billiga; Jag kom med dem för ett projekt med