Hur man återskapar det klassiska pongspelet med Arduino

Hur man återskapar det klassiska pongspelet med Arduino / DIY

Pong var den första videogame som nått massmarknaden. För första gången i historien, begreppet a “TV-spel” togs in i familjen hem, tack vare Atari 2600 - så det är bara rätt att vi betalar lite hyllning till den här historiska pärlan. Nu kan du återuppleva det (visserligen lite tråkig gameplay) med hjälp av en Arduino och några vanliga komponenter.

Jag kommer inte att ljuga - det är osannolikt att din dotter kommer att ge upp sin Nintendo DS, och det här kommer inte ge timmarna roligt för hela familjen - men det är ett fantastiskt och enkelt projekt för att förbättra din Arduino-kodning. Och om du bara har börjat, glöm inte att kolla in vår nybörjares Arduino guide.

Vi gör två grundläggande kontroller, och videon kommer att matas ut till din TV via en vanlig kompositvideokabel.

Krav på Arduino Pong

  • 470 ohm motstånd x1
  • 1k ohm motstånd x1
  • 10 k ohm Potentiometer (twiddly variabelt motstånd) x2
  • Arduino x1 (någon version)
  • RCA plugg x1 (om du har mer än en, kan du koppla in ljud också. En för videon är ett minimum)
  • tryckknapp växla x1
  • 10k ohm motstånd x1

Du kommer också att ladda ner TV-ut Arduino-biblioteket härifrån - hämta TVoutBeta1.zip, den senaste versionen. Placera de resulterande mapparna i din / Arduino / bibliotek katalog och starta om Arduino IDE om den redan är öppen.

Testa TV-ut

Ta ut RCA-kontakten och ta bort det yttre skiktet bort. Samla upp avskärmningen, vrid och lägg bort den åt sidan. Detta är din mark. I mitten borde vara en annan kabel med plastskärmning - igen, ta bort det här så att du har din signallinje.

Lödda både 470 ohm och 1k ohm motstånd till mittsignalledningen på din RCA-kontakt - detta ger en synkroniseringssignal och den aktuella videosignalen, kombinerad för att producera analog videoingång. 470 ohm motståndet ska slits in i digital IO-stift D07, medan 1k ohm-motståndet går till stift D09.

Dessa stift ställs in av biblioteket vi importerar, så du kan inte ändra dem. En av dina Arduino GND-pinnar ska gå till avskärmning (utsidan) av RCA.

Nu kan du gå och ladda i ett exempel; även om både PAL och NTSC tillhandahålls, borde det inte riktigt betyda med moderna digitala TV-apparater - NTSC-demo fungerade bra för mig trots att de var i Storbritannien. Anslut till din TV, och få en härlig retro 3D-kub. Oooooh yeah - Är du upphetsad än? jag är.

Test Analoga Potentiometer Ingångar

Okej, vi har TV-utgången fungerande, nu ska vi gå med kontrollerna. Kablarna hos “kastruller” är inte så kritisk - var och en borde ha 3 stift och den centrala enheten producerar nästan alltid utsignalen. Wire det till A0 och A1 (en för varje kruka). På en av sidostiften spelar det ingen roll vilken - tråd upp + 5V. Den andra stiftet på andra sidan bör gå till marken.

Här har jag lagt dem båda inför varje enskild brödbräda, för jag har bara korta ledningar. För en polerad produkt, vill du använda någon gammal nätverkskabel för att ge dig lite avstånd (så du kan faktiskt sitta i soffan för att spela).

Ladda sedan upp ett av de grundläggande exempel skisserna som följer med Arduino - den analoga ingången en. Denna demonstration blinkar inombordsdioden snabbare eller långsammare beroende på ingången på A0.

Det testar inte den andra A1-potten, men om du har A0 ansluten direkt så kan jag inte se hur du skulle göra ett misstag på A1, så låt oss anta att det är bra och gå vidare.

Lägg till en startbrytare

Slutligen lägger vi till en startströmbrytare på D02. Se kopplingsschemat här för hur du gör det. Denna omkopplare används för att starta spelet när det är i menyn.

Pong-koden

Vi använder en kod som ursprungligen skrevs av Lamonica, modifierad av duboisvb för två spelare, och uppdateras av mig själv för att använda den senaste betaversionen av TV-ut-biblioteket. Du kan visa och ladda ner koden från denna pastebin.

Det är ganska länge men enkelt kod som inte skulle kräva någon förklaring från mig. Liksom de flesta spel beror det på ett spelläge (meny, spel, spel över) och läser inmatningsvärdena för båda styrenheterna och växlar varje iteration av slingan. Utöver det är metoderna för att rita skärmen, bollen, paddlarna och spellogiken.

Observera att koden innehåller ljudutgång också: Jag kunde inte hitta några fler RCA-pluggar för att testa det, men om du har några, koppla sedan signalstiftet direkt till D11, och du bör få några tilltalande retrotoner.

För att vara ärlig visste jag inte att Arduino kunde ens göra tv utan någon oerhört komplex kodning. TV-biblioteket gör det väldigt enkelt. Även om du inte är med i retro spel, använder du den här grundläggande TV-ut-ett bra sätt att utnyttja befintlig utrustning som en billig bildskärmsenhet. Du kan självklart också skriva ut färg.

Tror du att du ska gå på Arduino Pong, eller kanske skapa en egen retro videogame-remake? Berätta i kommentarerna om du har!

Utforska mer om: Arduino, Retro Gaming.