Table of Contents

PAC-MAN

Introducere

Proiectul „PAC-MAN Portable” constă în realizarea unei mini-console portabile de joc, inspirată de titlul clasic PAC-MAN, implementată pe platforma Arduino Uno R3 (ATmega328P). Sistemul îmbină mai multe componente hardware și software, oferind funcționalități integrate precum afișare grafică pe display OLED, interacțiune prin butoane fizice, reglaj de viteză prin potențiometru, feedback vizual prin LED RGB, și efecte sonore prin buzzer.

Acest proiect are rolul de a demonstra integrarea și utilizarea eficientă a diferitelor interfețe hardware și protocoale de comunicație serială, fiind totodată un exemplu aplicat de dezvoltare embedded cu funcționalități avansate de joc.

Funcționalități cheie

Descriere generală

Consola este alcătuită dintr-un modul principal Arduino Uno R3 (ATmega328P), un display OLED 128×64 I2C (SSD1306), un LED RGB pentru feedback vizual, 5 butoane tactile pentru controlul jocului, un buzzer pentru efecte sonore și un potențiometru pentru ajustarea vitezei. De asemenea, include un modul SD card conectat prin SPI pentru salvarea automată a progresului. Toate componentele sunt montate pe breadboard pentru testare rapidă, apoi pe o placă de prototipare. Alimentarea se face fie prin USB, fie printr-o baterie de 9V conectată la Arduino printr-un suport cu jack (OKY0259).

Hardware Design

Componente:

Protocoale și Interfețe Hardware:

  1. GPIO
    • Utilizat pentru citirea butoanelor și controlul LED-urilor
  2. Timere / PWM
    • Utilizat pentru controlul intensității culorilor LED-ului RGB prin generarea de semnal digital cu factor de umplere variabil
  3. ADC
    • Utilizat pentru a citi valorile analogice de pe potențiometru (valori între 0–1023, rezultate din conversia tensiunii analogice 0–5V în valori digitale pe 10 biți)
  4. SPI
    • Utilizat pentru comunicarea cu modulul microSD; interfață rapidă, full-duplex, pe patru linii principale (MOSI, MISO, SCK, CS)
  5. I2C
    • Utilizat pentru comunicarea cu display-ul OLED; două fire (SDA, SCL) partajate între dispozitivele master / slave

Bill of Materials (BOM)

Componentă Tip Protocol Cantitate Link / Specificații
Arduino UNO R3 Controller - 1 datasheet
Buton (Sus - D2) Input GPIO 1 link-piesa
Buton (Jos - D3) Input GPIO 1 link-piesa
Buton (Stânga - D4) Input GPIO 1 link-piesa
Buton (Dreapta - D5) Input GPIO 1 link-piesa
Buton (Shoot - D6) Input GPIO 1 link-piesa
OLED Display 128 x 64 Output I2C 1 link-piesa
RGB LED (anod comun) Output GPIO / PWM 1 link-piesa
Potențiometru (10kΩ) Input ADC 1 link-piesa
Buzzer (pe A1) Output GPIO 1 link-piesa
Card SD + Modul I/O SPI 1 link-piesa
Breadboard 170 puncte - - 1 link-piesa
Placă prototipare 7×9 - - 1 link-piesa
Suport baterie 9V - - 1 link-piesa
Rezistență 220Ω - LED - - 3 -
Rezistență 10kΩ - butoane - - 5 -

Schemă Electrică

 Schematic

Descriere Detaliată

Caracteristici Advanced ale Jocului

Tabel Conexiuni Componente

Componentă Pin Arduino Funcție
Buton Sus D2 Control joc – mișcare sus (digital input)
Buton Jos D3 Control joc – mișcare jos (digital input)
Buton Stânga D4 Control joc – mișcare stânga (digital input)
Buton Dreapta D5 Control joc – mișcare dreapta (digital input)
Buton Shoot D6 Declanșare împușcare (digital input)
Potențiometru A0 Reglare dificultate – citire analogică (ADC)
Display OLED A4 (SDA), A5 (SCL) Afișaj stare joc
LED RGB - Roșu D7 Feedback – stare eșec (digital output)
LED RGB - Verde D8 Feedback – stare victorie (digital output)
LED RGB - Albastru D9 (PWM) Feedback – efecte fading (PWM output)
Buzzer A1 Sunete joc (digital output)
SD Card – MISO D12 Citire date (SPI)
SD Card – MOSI D11 Scriere date (SPI)
SD Card – SCK D13 Ceas SPI
SD Card – CS D10 Chip Select pentru SD (SPI)

Imagini Sugestive Implementare Hardware

Software Design

Mediu de dezvoltare

Librării și surse 3rd-party

Componente hardware utilizate

Algoritmi și structuri implementate

Efecte imunitate:

Condiții de terminare:

Funcții și comportamente principale

setup()

loop()

generateDots(uint8_t count)

drawTile(), drawPlayer(), drawGhost()

isImmunityActive()

playPowerUpSound(), playGameOverSound(), playWinSound(), playDotSound()

Funcționalități speciale

Controlul vitezei jocului printr-un potentiometru (analog A0), adaptând delay-ul de mișcare.

Feedback vizual și audio complet:

Extindere modulară pentru niveluri multiple (până la 4), fiecare cu logică specifică.

Descrierea codului aplicației (firmware):

Rezultate Obţinute

În urma realizării proiectului am reușit următoarele milestone-uri:

Concluzie

În concluzie, am încercat să fac acest joc cât mai interactiv, de aceea am folosit și funcția de imunitate la nivelul 4 astfel încât jucătorul să retrăiască adrenalina jocului clasic pac-man. Am adăugat diverse efecte vizuale / audio astfel încât jocul să îi țină pe cei care îl încearcă cât se poate de captivați și dornici să îl termine. Totodată nu am optat pentru foarte multe niveluri, astfel încât să nu intervină monotonia, ci am mers pe 4 niveluri, care cresc gradual ca dificultate, iar finalul reprezintă un apogeu după suspansul avut cât timp jucătorul se află sub efectul imunității. Acesta este proiectul implementat, denumit “PAC-MAN Portable”.

Bibliografie/Resurse

Resurse Hardware


Resurse Software

Export to PDF