This shows you the differences between two versions of the page.
|
pm:prj2025:vstoica:cristina.szabo [2025/05/30 01:41] 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 106: | Line 108: | ||
| == 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. | + | 2. 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. | + | 3. Acces direct la registrii ADC si I/O pentru eficienta sporita si control total. |
| - | - Afisaj grafic OLED controlat prin I2C, ca aplicatie practica a interfetelor seriale studiate. | + | 4. Afisaj grafic OLED controlat prin I2C, ca aplicatie practica a interfetelor seriale studiate. |
| == Structura si interactiunea dintre functionalitati == | == Structura si interactiunea dintre functionalitati == | ||
| Line 141: | Line 137: | ||
| == Calibrarea senzorilor == | == Calibrarea senzorilor == | ||
| - | - Senzorul LDR a fost calibrat folosind citiri brute din `analogReadReg()` la pornirea sistemului. | + | 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. |
| - | - Valoarea de prag (`threshold = 100`) a fost stabilita prin testare practica in mai multe conditii de lumina. | + | == 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. | |
| - | - Citirea se face cu acces direct la registrii ADC pentru eficienta si viteza. | + | |
| - | + | ||
| - | == Optimizari == | + | |
| - | + | ||
| - | - Folosirea ISR si a timerului hardware pentru delay-uri precise, fara blocaj. | + | |
| - | + | ||
| - | - Acces direct la registri (`PORTD`, `ADMUX`, etc.) pentru viteza mai mare decat functiile standard Arduino. | + | |
| ===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
| + | Am atasat o arhiva cu codul meu si un filmulet de prezentare a proiectului. | ||
| - | <note tip> | + | {{:pm:prj2025:vstoica:brick_breaker_game.zip|}} |
| - | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
| - | </note> | + | |
| ===== Concluzii ===== | ===== 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. | |
| - | ===== Download ===== | + | |
| - | + | ||
| - | <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**. | + | |
| - | </note> | + | |
| <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> | ||