PONG

E-mail contact: rares.danila@stud.acs.upb.ro

Introducere

Ce face proiectul?

Proiectul simulează o versiune a bine-cunoscutului joc PONG cu interfață grafică pe un display LCD. Pornirea si resetarea se vor face prin intermediul unor butoane. Controlul “rachetelor” care vor lovi mingea se va face cu un joystick pentru un jucător și cu un senzor de zgomot pentru celălalt. Un potențiometru va controla viteza bilei. Pentru fiecare jucător va exista un LED, care se va aprinde când acesta marchează un punct. Iar dacă un jucător a câștigat, LED-ul corespunzător acestuia se va aprinde și stinge in mod repetat, iar după un timp se resetează jocul. Punctul este înscris când unul dintre jucători nu mai poate lovi bila.

Scopul proiectului

Proiectul propune rememorarea vremurilor când Gaming-ul era doar un simplu concept teoretic. Acest proiect va reaminti de unde a plecat domeniul respectiv. Rezultatul dorit este distracția obținută în urma experimentării unei versiuni de PONG implementată cu noi componente.

Ideea de la care am pornit

Am vrut neapărat să implementez un joc cu componente electronice, pentru a experimenta în ce fel erau făcute când au început să ia amploare. PONG a părut candidatul perfect pentru o astfel de implementare, având în vedere că este primul joc video făcut vreodată.

Utilitate

Proiectul poate fi folosit de oricine dorește să ia o pauză de la activitatea de rutină, reușind să își antreneze reflexele și abilitatea de a lua decizii repede.

Descriere generală

Descrierea funcționalității

Pentru a începe un joc se apasă pe butonul de start. După apăsare, va apărea pe display-ul LCD interfața grafică a jocului PONG cu mingea în mijloc. Direcția în care va pleca mingea se va selecta în funcție de scor. În funcție de cine a marcat, i se va aprinde un LED. Când un jucător va ajunge la 5 puncte marcate, jocul se va termina. Pentru cel care a câștigat, LED-ul se va aprinde și stinge în mod repetat. Jocul poate fi și resetat, printr-un buton. Dacă acel buton este apăsat se revine la starea inițială, și anume: ambii jucători au 0 puncte, mingea este in centrul ecranului și niciun LED nu este aprins. În funcție de valoarea pe care este setat potențiometrul, se va stabili viteza bilei.

Diagramă bloc

Hardware Design

Schemă Hardware

Listă de piese

1. Arduino Uno
2. 2 Breadboard-uri
3. Fire mamă-tată, tată-tată
4. Joystick
5. Senzor de zgomot
6. 2 LED-uri
7. Potențiometru
8. LCD Nokia 5110
9. 2 butoane
10. Rezistențe

Software Design

Am lucrat cu Arduino IDE pentru partea de software a acestui proiect.

Bibliotecile externe folosite sunt:
<Arduino.h> - biblioteca de baza pentru funcțiile IDE-ului
<SPI.h> - folosită pentru comunicarea între piesele ce se folosesc de Serial Peripheral Interface
<stdlib.h> - necesară la conversia unui număr într-un șir de caractere (funcția itoa)
“LCD_Functions.h” - bibliotecă pe care am găsit-o pe google, necesară la desenarea figurilor geometrice de pe LCD

Detaliile implementării

Bila se mișcă doar stânga sau dreapta, fără a face unghiuri când se lovește de barele jucătorilor.

Coliziunea are loc dacă barele sunt pe mijlocul axei Oy a ecranului și bila se află fie la începutul axei Ox (unde se află și bara controlată prin joystick), fie la finalul axei Ox (unde se află și bara controlată prin senzor de zgomot).

LED-ul roșu se aprinde când înscrie jucătorul corespunzător senzorului de sunet.

LED-ul albastru se aprinde când înscrie jucătorul corespunzător joystick-ului.

Rezultate Obţinute

Poză proiect:

Click mai jos pentru videoclipul ce prezintă proiectul:

Concluzii

Lucrând la acest proiect, pot spune că am învățat în sfârșit ceea ce așteptam de foarte mult timp, și anume ce înseamnă cu adevărat să lucrezi cu materiale hardware. Am învățat să nu subestimez puterea curentului electric (motiv pentru care mi-am cumpărat din start mai multe LED-uri deși am folosit doar două pentru proiect) și să tratez cu grijă cuplarea firelor cu restul pieselor (am rupt capetele la 4 fire). Din punct de vedere practic, am învățat cum poți dicta unor piese hardware ce să facă prin scrierea de cod într-un IDE specific.

Download

Arhiva cu sursele: pong.zip

Documentație: readme.pdf

Bibliografie/Resurse

pm/prj2021/dbrigalda/pong.txt · Last modified: 2021/05/31 20:55 by rares.danila
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0