Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2025:apredescu:florian.ariasu [2025/05/25 21:43]
florian.ariasu
pm:prj2025:apredescu:florian.ariasu [2025/05/28 11:25] (current)
florian.ariasu
Line 3: Line 3:
 ===== Introducere ===== ===== 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, efecte sonore prin buzzer ​și salvarea progresului pe un card microSD.+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. 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.
Line 16: Line 16:
   * 4 nivele progresive cu complexitate crescută (capcane, following ghost, power-ups)   * 4 nivele progresive cu complexitate crescută (capcane, following ghost, power-ups)
   * Sistem de imunitate temporară cu efecte vizuale speciale (LED RGB Blue pe PWM)   * Sistem de imunitate temporară cu efecte vizuale speciale (LED RGB Blue pe PWM)
-  * Debugging și testare prin comunicație serială UART, utilizând Serial Monitor din Arduino IDE 
  
 ===== Descriere generală ===== ===== Descriere generală =====
Line 95: Line 94:
   * **Sistem de Salvare**: Progresul se salvează automat la fiecare mișcare, permițând continuarea jocului după restart   * **Sistem de Salvare**: Progresul se salvează automat la fiecare mișcare, permițând continuarea jocului după restart
   * **Efecte Vizuale**: Jucătorul pulsează când are imunitate, LED-ul albastru face efecte de fading   * **Efecte Vizuale**: Jucătorul pulsează când are imunitate, LED-ul albastru face efecte de fading
-  * **Audio Feedback**: Sunete distincte pentru fiecare acțiune (power-up, game over, victorie)+  * **Audio Feedback**: Sunete distincte pentru fiecare acțiune (power-up, game over, win, dot collection)
  
  
Line 140: Line 139:
   * **Adafruit_SSD1306.h** – driver pentru afișajele OLED cu controller SSD1306 (comunicare I2C).   * **Adafruit_SSD1306.h** – driver pentru afișajele OLED cu controller SSD1306 (comunicare I2C).
  
-  * **SPI.h, ​Wire.h** – librării standard pentru ​comunicația SPI și I2C.+  * **Wire.h** – librărie standard pentru ​comunicarea ​I2C.
   * Toate librăriile sunt disponibile prin Library Manager în Arduino IDE sau deja incluse implicit în cazul SPI/Wire.   * Toate librăriile sunt disponibile prin Library Manager în Arduino IDE sau deja incluse implicit în cazul SPI/Wire.
  
 ==== Componente hardware utilizate ==== ==== Componente hardware utilizate ====
  
-  * **Display OLED 128x64** (conectat prin I2C la pinii A4 – SDA, A5 – SCL)+  * **Display OLED 128x64** (conectat prin I2C pe pinii A4 – SDA, A5 – SCL)
  
   * **5 Butoane** pentru control direcțional și acțiune (pini D2–D6)   * **5 Butoane** pentru control direcțional și acțiune (pini D2–D6)
Line 154: Line 153:
  
   * **Buzzer** pentru semnale audio (pin A1)   * **Buzzer** pentru semnale audio (pin A1)
 +
 +  * **Modul SD Card** conectat prin SPI pe pinii MISO - D12, MOSI - D11, SCK - D13, CS - D10
  
 ==== Algoritmi și structuri implementate ==== ==== Algoritmi și structuri implementate ====
Line 165: Line 166:
   * **Sistemul fantomei** - O fantomă apare în nivelurile 3 și 4, deplasându-se pentru a urmări jucătorul.   * **Sistemul fantomei** - O fantomă apare în nivelurile 3 și 4, deplasându-se pentru a urmări jucătorul.
  
-  * **Power-up și imunitate** - La nivelul 4, este introdus un tile special de tip power-up, care activează imunitatea temporară (5 secunde).+  * **Power-up și imunitate** - La nivelul 4, este introdus un tile special de tip power-up, care activează imunitatea temporară (5 secunde) ​în care fantoma este de asemenea înghețată.
  
 **Efecte imunitate:​** **Efecte imunitate:​**
   * Fantoma nu mai produce Game Over la coliziune   * Fantoma nu mai produce Game Over la coliziune
 +  * Fantoma este înghețată
   * LED-ul albastru pulsează   * LED-ul albastru pulsează
   * Jucătorul are o animație grafică specială   * Jucătorul are o animație grafică specială
Line 206: Line 208:
   * Dezactivează automat imunitatea după 5 secunde și oprește LED-ul albastru   * Dezactivează automat imunitatea după 5 secunde și oprește LED-ul albastru
  
-=== playPowerUpSound(),​ playGameOverSound(),​ playWinSound() ===+=== playPowerUpSound(),​ playGameOverSound(),​ playWinSound(), playDotSound() ===
   * Emit tonuri sonore diferite prin buzzer în funcție de evenimentul declanșat   * Emit tonuri sonore diferite prin buzzer în funcție de evenimentul declanșat
  
Line 220: Line 222:
  
 **Extindere modulară** pentru niveluri multiple (până la 4), fiecare cu logică specifică. **Extindere modulară** pentru niveluri multiple (până la 4), fiecare cu logică specifică.
- 
-==== Concluzie ==== 
- 
-Proiectul integrează hardware divers cu logică de joc completă, gestionare de evenimente, animații grafice și feedback în timp real. Este un exemplu complex de utilizare a microcontrolerului Arduino UNO în jocuri embedded cu interfață interactivă. 
  
 Descrierea codului aplicației (firmware): Descrierea codului aplicației (firmware):
Line 229: Line 227:
   * **Librării și surse 3rd-party**:​ Adafruit_GFX,​ Adafruit_SSD1306,​ SPI, Wire   * **Librării și surse 3rd-party**:​ Adafruit_GFX,​ Adafruit_SSD1306,​ SPI, Wire
   * **Algoritmi și structuri implementate**:​ Matrice 2D pentru hartă, algoritm de urmărire pentru fantomă, sistem de imunitate temporară, generare aleatoare de puncte   * **Algoritmi și structuri implementate**:​ Matrice 2D pentru hartă, algoritm de urmărire pentru fantomă, sistem de imunitate temporară, generare aleatoare de puncte
-  * **Surse și funcții implementate**:​ Gestionare completă a jocului cu 4 nivele progresive, sistem de feedback vizual/​audio,​ control prin butoane și potentiometru+  * **Surse și funcții implementate**:​ Gestionare completă a jocului cu 4 nivele progresive, sistem de feedback vizual / audio, control prin butoane și potențiometru
  
-===== Download ​=====+===== Rezultate Obţinute ​=====
  
-<note warning>​ +În urma realizării proiectului ​am reușit următoarele milestone-uri:
-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 Alin331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**. +  ​* **Hardware**: 
-</​note>​+      ​Butoane conectate corect și funcționale 
 +      ​Display OLED conectat corespunzător și funcțional,​ atât că am conectat pe un breadboard, ulteriordin cauza unor mici probleme cu placa de prototipare 
 +      ​Buzzer funcțional 
 +      ​Potențiometru funcțional 
 +      ​LED RGB anod comun funcțional și cu PWM pe albastru 
 +      * Modul Card SD conectat corect
  
-===== Jurnal =====+  * **Software**:​ 
 +     * 4 niveluri progresive din punct de vedere al dificultății 
 +     * Semnale vizuale și sonore prin LED, respectiv buzzer, pentru câștig, pierdere și activarea funcției de imunitate 
 +     * Viteză ajustabilă prin potențiometru în funcție de nivel 
 +     * Efect vizual pe OLED al jucătorului cât timp se află sub protecția imunității 
 +     * Modulul SD Card nu a fost implementat
  
-<note tip> +===== Concluzie ===== 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. + 
-</note>+Î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-manAm 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 ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +**Resurse Hardware** 
-Listă ​cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse ​Hardware**. + 
-</note>+  * [[https://​ww1.microchip.com/​downloads/​en/​DeviceDoc/​Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf|ATmega328P Datasheet]] 
 +  
 +  * [[https://​www.robofun.ro/​platforme-de-dezvoltare/​arduino-uno-r3-atmega328p-placa-de-dezvoltare-compatibila-cu-arduino-cablu-usb.html|Placa Arduino UNO R3]] 
 + 
 +  ​[[https://​www.emag.ro/​modul-citire-scriere-card-sd-compatibil-arduino-oky3001/​pd/​DL5Y07MBM/​|Modul microSD]] 
 + 
 +  ​[[https://​www.emag.ro/​card-de-memorie-goodram-microsd-2gb-sdu2ggrsr-microsd/​pd/​E9T63BBBM/?​ref=history-shopping_424527401_24434_1|Card microSD]] 
 + 
 +  ​[[https://​www.emag.ro/​afisaj-oled-alb-0-96-inch-rezolutie-128x64-pixeli-i2c-spi-tensiune-3-5v-controler-ssd1306-compatibil-cu-arduino-stm32-msp430-dimensiuni-27x27x4mm-lizibilitate-excelenta-c3/​pd/​D767C1YBM/​|Display OLED]] 
 + 
 +---- 
 + 
 +**Resurse ​Software** 
 + 
 +  * [[https://​www.arduino.cc/​en/​software|Arduino IDE]] 
 + 
 +  * [[https://​docs.arduino.cc/​language-reference/​en/​functions/​communication/​SPI/​|Librărie SPI.h]] 
 + 
 +  * [[https://​docs.arduino.cc/​hardware/​uno-rev3/​|Documentație Arduino UNO]] 
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
pm/prj2025/apredescu/florian.ariasu.1748198634.txt.gz · Last modified: 2025/05/25 21:43 by florian.ariasu
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