Hoe de klassieke Pong-game te recreëren met behulp van Arduino
Pong was de allereerste videogame die de massamarkt bereikte. Voor het eerst in de geschiedenis is het concept van a “videogame” werd dankzij de Atari 2600 in het ouderlijk huis gebracht - het is dus maar goed dat we een klein eerbetoon brengen aan dit historische juweeltje. Nu, je kunt dat opnieuw beleven (toegegeven een beetje saaie gameplay) met behulp van een Arduino en enkele veelgebruikte componenten.
Ik zal niet liegen - het is onwaarschijnlijk dat je dochter haar Nintendo DS zal opgeven, en dit zal geen urenlang plezier voor het hele gezin opleveren - maar het is een geweldig en eenvoudig project om je Arduino-codering te verbeteren. En als je net begint, vergeet dan niet onze Arduino-beginnersgids te lezen.
We maken twee standaardcontrollers en de video wordt via een standaard composietvideokabel naar uw tv uitgevoerd.
Vereisten voor Arduino Pong
- 470 ohm weerstand x1
- 1k ohm weerstand x1
- 10k ohm Potentiometer (twiddly variabele weerstand) x2
- Arduino x1 (elke versie)
- RCA plug x1 (als je meer dan één hebt, kun je ook geluid aansluiten. Een voor de video is een absoluut minimum)
- Druk op de knop schakelaar x1
- 10k ohm weerstand x1
Je zult ook de TV Out Arduino-bibliotheek van hier downloaden - download de TVoutBeta1.zip, de nieuwste release. Plaats de resulterende mappen allemaal in uw / Arduino / bibliotheken map en start de Arduino IDE opnieuw als deze al is geopend.
Tv-uit testen
Neem je RCA-stekker en strip de buitenste laag weg. Verzamel de afscherming, draai en leg opzij. Dit is jouw grond. In het midden moet een andere kabel met plastic afscherming zijn - haal deze weer weg, zodat je je signaallijn hebt.
Soldeer beide weerstanden van 470 ohm en 1k ohm aan de centrale signaallijn van uw RCA-stekker - dit levert een sync-signaal en het werkelijke videosignaal, gecombineerd om de analoge video-ingang te produceren. De 470 ohm-weerstand moet in de digitale IO-pin D07 steken, terwijl de weerstand van 1k ohm naar pin D09 gaat.
Deze pinnen worden ingesteld door de bibliotheek die we importeren, dus u kunt ze niet wijzigen. Een van je Arduino GND-pinnen moet naar de afscherming (buitenkant) van de RCA gaan.
Nu kunt u doorgaan en een voorbeeld laden; hoewel zowel PAL als NTSC worden aangeboden, zou het eigenlijk niet zo moeten zijn met moderne digitale tv's - de NTSC-demo werkte prima ondanks dat ik in het Verenigd Koninkrijk was. Sluit aan op je tv en je krijgt een mooie retro 3D-kubus. Oooooh ja - ben je al enthousiast? ik ben.
Test analoge potentiometer ingangen
Oké, we hebben de tv-uitvoer aan het werken, nu laten we het proberen met de controllers. De bedrading van de “pannen” is niet zo kritisch - elk moet 3 pinnen hebben, en de centrale produceert bijna altijd het uitgangssignaal. Bekabel dat naar A0 en A1 (één voor elke pot). Op een van de zijpennen - het maakt niet uit wat - bedraad + 5V. De andere pin aan de andere kant moet naar de grond gaan.
Hier heb ik ze beiden tegenover elk op één breadboard gezet, omdat ik alleen korte draden heb. Voor een gepolijst product, wil je een oude netwerkkabel gebruiken om je een beetje afstand te geven (zodat je echt op de bank kunt zitten om te spelen).
Vervolgens laad je een van de standaard voorbeeldschetsen die bij de Arduino horen - de analoge schetsen. Deze demo zal de LED aan boord sneller of langzamer laten knipperen, afhankelijk van de invoer op A0.
Het test de andere A1-pot niet, maar als je A0 op de juiste manier hebt aangesloten, kan ik niet zien hoe je een fout zou maken op A1, dus laten we aannemen dat het goed is en verder gaan.
Voeg een startschakelaar toe
Ten slotte voegen we een startschakelaar toe aan D02. Raadpleeg het bedradingsschema hier voor hoe u dat moet doen. Deze schakelaar wordt gebruikt om het spel te starten in het menu.
De Pong-code
We gebruiken een code die oorspronkelijk is geschreven door Lamonica, aangepast door duboisvb voor twee spelers en door mijzelf bijgewerkt om de nieuwste bètaversie van de tv-outbibliotheek te gebruiken. U kunt de code van deze pastebin bekijken en downloaden.
Het is vrij lange maar eenvoudige code die geen uitleg van mij zou vereisen. Zoals bij de meeste spellen, vertrouwt het op een spelsituatie (menu, in-game, game over) en leest het de invoerwaarden van beide controllers en de switch van elke iteratie van de lus. Buiten dat zijn de methoden om het scherm, de bal, de peddels en de spellogica te tekenen.
Merk op dat de code bevat Audio uitgang too: Ik kon geen RCA-plug-ins meer vinden om dat te testen, maar als je er wat hebt, sluit je de signaalpin rechtstreeks op D11 aan en moet je wat aangename retrotonen krijgen.
Om eerlijk te zijn, wist ik niet dat Arduino zelfs tv kon maken zonder een enorm complexe codering; de TV Out-bibliotheek maakt het heel gemakkelijk. Zelfs als je niet van retrogaming houdt, is het gebruik van deze basis-tv-out een geweldige manier om bestaande apparatuur als goedkoop monitorapparaat te gebruiken. Je kunt natuurlijk ook kleur weergeven.
Denk je dat je Arduino Pong eens zult proberen, of misschien je eigen retro videogame remake maken? Vertel ons in de comments of je het hebt!
Ontdek meer over: Arduino, Retro Gaming.