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:37]
cristina.szabo [Software Design]
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 =====
  
Line 100: Line 102:
 Am folosit bibliotecile:​ Am folosit bibliotecile:​
  
-`Wire.h` pentru comunicatia I2C cu ecranul OLED. +`Wire.h` pentru comunicatia I2C cu ecranul OLED. 
-`Adafruit_GFX.h` si `Adafruit_SSD1306.h` pentru a putea desena si scrie pe ecran.+ 
 +`Adafruit_GFX.h` si `Adafruit_SSD1306.h` pentru a putea desena si scrie pe ecran. 
  
 == Element de noutate == == Element de noutate ==
-Proiectul include un mod automat de detectare a luminozitatii ambientale folosind un senzor LDR. +Proiectul include un mod automat de detectare a luminozitatii ambientale folosind un senzor LDR. In functie de lumina detectata, jocul isi inverseaza culorile pentru a fi vizibil si in intuneric, si in lumina puternica. Jocul foloseste un timer hardware (Timer1) pentru intarzieri precise fara a bloca logica programului. Jocul poate fi pus pe pauza si resetat prin intreruperi generate de butoane.
-In functie de lumina detectata, jocul isi inverseaza culorile pentru a fi vizibil si in intuneric, si in lumina puternica. +
-Jocul foloseste un timer hardware (Timer1) pentru intarzieri precise fara a bloca logica programului. +
-Jocul poate fi pus pe pauza si resetat prin intreruperi generate de butoane.+
  
 == Justificarea utilizarii functionalitatilor din laborator == == Justificarea utilizarii functionalitatilor din laborator ==
-Intreruperi externe pentru butoanele de pauza si reset. +1. Intreruperi externe pentru butoanele de pauza si reset. 
-Timer hardware (Timer1) pentru realizarea unui delay neblocant inainte de startul jocului si la reseturi. + 
-Acces direct la registrii ADC si I/O pentru eficienta sporita si control total. +2. Timer hardware (Timer1) pentru realizarea unui delay neblocant inainte de startul jocului si la reseturi. 
-Afisaj grafic OLED controlat prin I2C, ca aplicatie practica a interfetelor seriale studiate.+ 
 +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 == == Structura si interactiunea dintre functionalitati ==
-* La pornire, jocul verifica lumina ambientala si seteaza modul de afisare (light/​dark). 
-* Se initializeaza paleta, minge si caramizi. 
-* 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 == +- La pornire, jocul verifica lumina ambientala si seteaza modul de afisare ​(light/dark).
-* 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 == +Se initializeaza paletamingea si caramizile.
-* Folosirea ISR si a timerului hardware pentru delay-uri precisefara blocaj. +
-* Acces direct la registri (`PORTD`, `ADMUX`, etc.) pentru viteza mai mare decat functiile standard Arduino.+
  
-===== Rezultate Obţinute =====+- Joystick-ul controleaza paleta, iar mingea se misca automat, interactiunea fiind desenata in timp real pe ecran.
  
-<note tip> +- Coliziunile cu caramizile sunt detectate si tratate, iar vietile sunt afisate cu LED-uri.
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +
-</​note>​+
  
-===== Concluzii =====+- Se foloseste un timer hardware pentru intarzieri fara a bloca restul programului.
  
-===== Download =====+- Jocul poate fi pus pe pauza sau resetat oricand prin intreruperi externe.
  
-<note warning>​ +- Starea de castig ​sau pierdere ​este afisata ​pe ecran si permite reluarea jocului prin buton.
-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**. +== Calibrarea senzorilor ==
-</​note>​+
  
 +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.1748558253.txt.gz · Last modified: 2025/05/30 01:37 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