Hoe de klassieke Pong-game te recreëren met behulp van Arduino

Pong was de allereerste videogame die de massamarkt bereikte. Voor de eerste keer in de geschiedenis is het concept van een videogame dankzij de Atari 2600 in het ouderlijk huis terechtgekomen - het is dus maar goed dat we een klein eerbetoon brengen aan dit historische juweeltje.

Pong was de allereerste videogame die de massamarkt bereikte.  Voor de eerste keer in de geschiedenis is het concept van een videogame dankzij de Atari 2600 in het ouderlijk huis terechtgekomen - het is dus maar goed dat we een klein eerbetoon brengen aan dit historische juweeltje.
Advertentie

arduino pong Pong was de allereerste videogame die de massamarkt bereikte. Voor de eerste keer in de geschiedenis werd het concept van een 'videogame' dankzij de Atari 2600 in het ouderlijk huis gebracht - dus het is maar goed dat we een klein eerbetoon brengen aan dit historische juweeltje. Nu kun je dat (weliswaar wat saaie gameplay) opnieuw beleven met 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- stekker x1 (als je meer dan één hebt, kun je ook geluid aansluiten. Een voor de video is een absoluut minimum)
  • Drukknopschakelaar x1
  • 10k ohm weerstand x1

arduino pong

Je zult ook de TV Out Arduino-bibliotheek van hier downloaden - download de TVoutBeta1.zip, de nieuwste versie. Plaats de resulterende mappen allemaal in uw / arduino / libraries- 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.

arduino pong spel

Soldeer beide weerstanden van 470 ohm en 1k ohm op de middensignaallijn van uw RCA-stekker - dit levert een synchronisatiesignaal 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.

arduino pong spel

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.

arduino pong spel

Test analoge potentiometer ingangen

Oké, we hebben de tv-uitvoer aan het werk, laten we nu eens gaan werken met de controllers. De bedrading van de "potten" 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).

arduino pong project

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 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.

arduino pong project

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.

arduino pong project

Merk op dat de code ook audio-uitvoer bevat: ik kon geen RCA-pluggen meer vinden om dat te testen, maar als je er wat hebt, sluit je de signaalpin rechtstreeks op D11 aan en moet je een aantal aangename retrotonen krijgen.

arduino pong

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 te gebruiken als goedkoop monitorapparaat. Je kunt natuurlijk ook kleur weergeven.

Denk je dat je Arduino Pong gaat proberen, of misschien je eigen retro videogame remake maken? Vertel ons in de comments of je hebt!

In this article