Differences

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

Link to this comparison view

pm:prj2025:vstoica:cristina.szabo [2025/05/30 01:31]
cristina.szabo
pm:prj2025:vstoica:cristina.szabo [2025/05/30 02:23] (current)
cristina.szabo [Concluzii]
Line 71: Line 71:
 Implementare hardware: Implementare hardware:
  
-{{:​pm:​prj2025:​vstoica:​hardware.jpg?300|}}+{{:​pm:​prj2025:​vstoica:​bbg1.jpeg?300|}} 
 +{{:​pm:​prj2025:​vstoica:​bbg2.jpeg?​300|}} 
  
 Schema electrica: Schema electrica:
  
-{{:​pm:​prj2025:​vstoica:​schematic_brick_breaker.png?​600|}} +{{:​pm:​prj2025:​vstoica:​bbg.png?​600|}} 
-{{:​pm:​prj2025:​vstoica:​cirkit_brick.png?​600|}}+
 ===== Software Design ===== ===== Software Design =====
 +
 == Surse si functii implementate == == Surse si functii implementate ==
  
-|| *Functie|| *Descriere* ||+| Functie | Descriere |
 | setup() | Initializare pini, afisaj, intreruperi,​ lumina ambientala, stare joc | | setup() | Initializare pini, afisaj, intreruperi,​ lumina ambientala, stare joc |
 | loop() | Executa logica jocului: miscare, coliziuni, afisare, verificare butoane, vieti si stare finala | | loop() | Executa logica jocului: miscare, coliziuni, afisare, verificare butoane, vieti si stare finala |
Line 93: Line 96:
 | ISR(PCINT2_vect) | Detecteaza apasarea butoanelor de pauza si reset, cu debounce minimal | | ISR(PCINT2_vect) | Detecteaza apasarea butoanelor de pauza si reset, cu debounce minimal |
  
-===== Rezultate Obţinute =====+== Stadiul actual al implementarii software ​== 
 +Proiectul este complet functional. Jocul poate fi jucat cu minge si paleta, caramizile se distrug corect, afisajul OLED actualizeaza toate informatiile,​ iar luminile LED indica numarul de vieti ramase. Sunt gestionate corect pauza, resetarea jocului si detectarea starii finale (castig sau pierdere).
  
-<note tip> +== Alegerea bibliotecilor == 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +Am folosit bibliotecile:​
-</​note>​+
  
-===== Concluzii =====+- `Wire.h` pentru comunicatia I2C cu ecranul OLED.
  
-===== Download =====+- `Adafruit_GFX.h` si `Adafruit_SSD1306.h` pentru a putea desena si scrie pe ecran.
  
-<note warning> 
-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**. +== Element de noutate == 
-</​note>​+Proiectul include un mod automat de detectare a luminozitatii ambientale ​folosind ​un senzor LDRIn functie ​de lumina detectata, jocul isi inverseaza culorile pentru a fi vizibil si in intuneric, si in lumina puternica. Jocul foloseste un timer hardware ​(Timer1pentru intarzieri precise fara a bloca logica programuluiJocul poate fi pus pe pauza si resetat prin intreruperi generate de butoane.
  
 +== Justificarea utilizarii functionalitatilor din laborator ==
 +1. Intreruperi externe pentru butoanele de pauza si reset.
 +
 +2. Timer hardware (Timer1) pentru realizarea unui delay neblocant inainte de startul jocului si la reseturi.
 +
 +3. Acces direct la registrii ADC si I/O pentru eficienta sporita si control total.
 +
 +4. Afisaj grafic OLED controlat prin I2C, ca aplicatie practica a interfetelor seriale studiate.
 +
 +== Structura si interactiunea dintre functionalitati ==
 +
 +- La pornire, jocul verifica lumina ambientala si seteaza modul de afisare (light/​dark).
 +
 +- Se initializeaza paleta, mingea si caramizile.
 +
 +- Joystick-ul controleaza paleta, iar mingea se misca automat, interactiunea fiind desenata in timp real pe ecran.
 +
 +- Coliziunile cu caramizile sunt detectate si tratate, iar vietile sunt afisate cu LED-uri.
 +
 +- Se foloseste un timer hardware pentru intarzieri fara a bloca restul programului.
 +
 +- Jocul poate fi pus pe pauza sau resetat oricand prin intreruperi externe.
 +
 +- Starea de castig sau pierdere este afisata pe ecran si permite reluarea jocului prin buton.
 +
 +== Calibrarea senzorilor ==
 +
 +Senzorul LDR a fost calibrat folosind citiri brute din `analogReadReg()` la pornirea sistemului. Valoarea de prag (`threshold = 100`) a fost stabilita prin testare practica in mai multe conditii de lumina. Citirea se face cu acces direct la registrii ADC pentru eficienta si viteza.
 +
 +== Optimizari si mediu de dezvoltare ==
 +Folosirea ISR si a timerului hardware pentru delay-uri precise, fara blocaj si accesul direct la registri (`PORTD`, `ADMUX`, etc.) pentru viteza mai mare decat functiile standard Arduino. Mediul de dezvoltare este PlatformIO, codul fiind scris in C++, combinat cu cateva functii din bibliotecile folosite.
 +
 +===== Rezultate Obţinute =====
 +Am atasat o arhiva cu codul meu si un filmulet de prezentare a proiectului.
 +
 +{{:​pm:​prj2025:​vstoica:​brick_breaker_game.zip|}}
 +
 +===== Concluzii =====
 +Am realizat un joc de tip breakout pe un ecran OLED folosind Arduino. Am folosit un fotorezistor pentru a detecta luminozitatea ambientala, astfel incat afisajul sa se adapteze automat la conditiile de iluminare, fie in modul intunecat, fie in modul deschis. Controlul paletei se face prin joystick, iar butoanele imi permit sa pun jocul pe pauza sau sa il resetez. Logica jocului include detectarea coliziunilor mingii cu zidurile, paleta si caramizile, iar eu urmaresc reducerea vietilor si determinarea castigatorului sau invinsului. Am folosit intreruperi pentru butoane si timer pentru delay-uri, ceea ce imbunatateste functionalitatea si raspunsul sistemului. Prin acest proiect am vrut sa creez o experienta interactiva si distractiva.
  
  
 <​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/vstoica/cristina.szabo.1748557901.txt.gz · Last modified: 2025/05/30 01:31 by cristina.szabo
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