This is an old revision of the document!


PONG GAME

Introducere

  • Proiectul consta in implementarea unui joc de tip Pong pentru doi jucatori utilizand o placa de dezvoltare ATmega328P Xplained Mini, un display OLED 128×64 si module LED pentru feedback vizual. Fiecare jucator controleaza o paleta prin intermediul a doua butoane, unul pentru deplasarea in sus si unul pentru deplasarea in jos. Scopul jocului este de a lovi mingea si de a inscrie puncte impotriva adversarului.

Descriere generală

  • Sistemul implementat reprezinta un joc interactiv in timp real pentru doi jucatori. Fiecare jucator controleaza o paleta aflata pe marginea ecranului, iar mingea se deplaseaza continuu intre cele doua parti. Directia mingii se modifica in functie de coliziunea cu marginile ecranului sau cu paletele jucatorilor.
  • Jocul include un sistem de scor care este actualizat automat atunci cand unul dintre jucatori nu reuseste sa loveasca mingea. Afisarea elementelor grafice se realizeaza pe display-ul OLED, iar interactiunea utilizatorului este realizata prin intermediul butoanelor. Pentru imbunatatirea experientei de joc, sistemul poate genera semnale sonore folosind un buzzer la evenimente precum coliziunile sau marcarea unui punct.
  • Proiectul foloseste si doua module LED de tip semafor pentru feedback vizual. Acestea indica starea jocului in timpul countdown-ului, marcheaza vizual momentul in care un jucator inscrie si evidentiaza castigatorul la finalul meciului.

Hardware Design

Lista de piese (Bill of Materials):

  • Placa de dezvoltare ATmega328P Xplained Mini: Microcontrollerul principal care gestioneaza logica jocului, citirea input-urilor si controlul perifericelor.
  • Display OLED 0.96” SSD1306 cu interfata I2C: Ecran grafic utilizat pentru afisarea paletelor, mingii si scorului in timpul jocului.
  • Module buton KY-004: 4 bucati utilizate pentru controlul paletelor celor doi jucatori prin miscari sus si jos.
  • Modul buzzer pasiv KY-006: Utilizat pentru generarea efectelor sonore controlabile prin software la coliziuni sau marcarea punctelor.
  • Module LED semafor compatibile Arduino: 2 bucati utilizate pentru feedback vizual, cate unul pentru fiecare jucator. Acestea indica starea jocului, marcheaza inscrierea unui punct si semnalizeaza castigatorul.
  • Breadboard 400 puncte: Folosit pentru realizarea conexiunilor hardware si prototiparea circuitului fara lipire.
  • Fire Dupont Tata-Tata si Tata-Mama: Utilizate pentru realizarea conexiunilor electrice intre placa de dezvoltare, module si breadboard.

Conexiunile hardware finale sunt urmatoarele:

Componenta Pin componenta Conectare
OLED SSD1306 VCC VCC microcontroller
OLED SSD1306 GND GND microcontroller
OLED SSD1306 SDA PC4 microcontroller
OLED SSD1306 SCL PC5 microcontroller
Componenta Pin componenta Conectare
Buton P1_UP KY-004 S D2 microcontroller
Buton P1_DOWN KY-004 S D3 microcontroller
Buton P2_UP KY-004 S D4 microcontroller
Buton P2_DOWN KY-004 S D5 microcontroller
Toate butoanele KY-004 - GND breadboard
Toate butoanele KY-004 pin mijloc neconectat
Componenta Pin componenta Conectare
Buzzer pasiv KY-006 S D6 microcontroller
Buzzer pasiv KY-006 minus GND breadboard
Componenta Pin componenta Conectare
Modul LED Player 1 R D7 microcontroller
Modul LED Player 1 Y D8 microcontroller
Modul LED Player 1 G D9 microcontroller
Modul LED Player 1 GND GND breadboard
Modul LED Player 2 R D10 microcontroller
Modul LED Player 2 Y D11 microcontroller
Modul LED Player 2 G D12 microcontroller
Modul LED Player 2 GND GND breadboard
Componenta Conectare
Breadboard GND microcontroller → bara GND breadboard
  • Breadboard-ul este folosit pentru distribuirea conexiunii de masa catre butoane, buzzer si modulele LED. Display-ul OLED este conectat direct la microcontroller deoarece foloseste interfata I2C, prin pinii PC4 si PC5. Butoanele sunt configurate in cod cu INPUT_PULLUP, motiv pentru care pinul de mijloc al modulelor KY-004 ramane neconectat, iar apasarea butonului conecteaza pinul de semnal la GND.

Software Design

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR)
  • librării şi surse 3rd-party (e.g. Procyon AVRlib)
  • algoritmi şi structuri pe care plănuiţi să le implementaţi
  • (etapa 3) surse şi funcţii implementate

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

pm/prj2026/ciprian.popescu0411/vlad_mihai.enea.1778676346.txt.gz · Last modified: 2026/05/13 15:45 by vlad_mihai.enea
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