Differences

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

Link to this comparison view

pm:prj2025:avaduva:darius.ignatescu [2025/05/24 20:35]
darius.ignatescu [Motivare alegere biblioteci folosite]
pm:prj2025:avaduva:darius.ignatescu [2025/05/25 08:13] (current)
darius.ignatescu [Demo video proiect cu explicatii]
Line 124: Line 124:
  
   * SPI.h: o folosesc pentru transmiterea datelor catre afisor(ecran) pentru afisarea datelor.   * SPI.h: o folosesc pentru transmiterea datelor catre afisor(ecran) pentru afisarea datelor.
-  
  
 +=====Evidentiere element de noutate al proiectului=====
  
-===== Software Design =====+    * Se evidentiaza ca element de noutate reglarea gradului de dificultate(viteza de aparitie a unui "​Mole"​) prin intermediul unui potentiometru (intre 0.5s pentru dificultate mare si 2s pentru dificultate mai scazuta).
  
 +=====Justificare utilizare functionalitati din laborator in cadrul proiectului=====
  
-<note tip> +    * Laboratorul 2: Intreruperi ==Am setat timer-ul 2 sa genereze o intrerupere care are ca efect oprirea jocului dupa un timp stabilit(60 de secundesi care poate fi modificat prin inlocuirea timpului de divizare a frecventei de numarare(prescaler-ul). 
-Descrierea codului aplicaţiei ​(firmware): + 
-  mediu de dezvoltare ​(if any) (e.gAVR StudioCodeVisionAVR+    ​Laboratorul 3: Timere. PWM ==> Comanda servomotoarelor s-a facut prin stabilirea unghiului de rotatie de la 0 la 90 de grade si implicit a gradului de modulare a factorului ​de umplere(duty cyclecorespunzator unghiului stabilit. De asemenea, pinii de comanda ai servomotoarelor au trebuit obligatoriu sa faca parte din grupa pinilor care suporta operatii PWM(pinii cu ~ de pe placuta Arduino Uno: 3,​5,​6,​9,​10,​11). 
-  librării şi surse 3rd-party (e.gProcyon AVRlib+ 
-  algoritmi şi structuri ​pe care plănuiţi să le implementaţi +    * Laboratorul 4: ADC ==> Am folosit conversia analog-digitala(ADC-ul pe Arduino Uno pe 10 biti, deci valori intre 0 si 1023) pentru a avea o corespondenta intre pozitia butonului potentiometrului si valoarea frecventei de aparitie a viermelui. 
-  * (etapa 3surse şi funcţii implementate + 
-</note>+    * Laboratorul 5: SPI ==> Am folosit materia din acest laborator deoarece am ales sa afisez datele corespunzatoare starii jocului pe un display folosind SPI, care e compatibil cu biblioteci accesibile din library manager in Arduino IDE. 
 + 
 +=====Calibrare elemente de senzoristica===== 
 + 
 +    * Pentru pozitia de minim a potentiometrului(maxim stanga0V), conform maparii facute prin program, am obtinut frecventa cea mai mare de aparitie a viermelui(1 / 0.5s = 2Hz), iar pentru pozitia de maxim a potentiometrului(5V,​ maxim dreapta) am obtinut frecventa cea mai mica de aparitie(0.5 Hz = 1 / 2s
 + 
 +=====Explicare schelet si interactiune intre functionalitati===== 
 + 
 +    ​In partea de set-up configuram butoanele in stare de pull-up si initializam afisajul pe display-ul SPI si timer 2 pentru a cauza mai tarziu terminarea jocului dupa 60 de secunde printr-o intrerupere. 
 +    * Din punct de vedere logic, jocul este gandit la nivel de 6 stari, avand urmatoarele semnificatii:​ 
 +      * START_GAME = starea initiala; ​responsabila doar de contorizarea momentului in care a inceput propriu-zis jocul, dupa care trecem in starea CHOOSE_MOLE 
 +      * CHOOSE_MOLE = se asteapta alegerea unui numar aleator care va desemna "​Mole-ul"​ care iese la suprafataMai intai se verifica daca jucatorul a ales sa reseteze jocul(a apasat pe B5) sau nuDaca se continua jocul curent, alegem un "​Mole"​ aleator (diferit intre iteratii consecutive pentru un joc mai interesant), ridicam steguletul corespunzator acestuia, crestem numarul de aparitii si tranzitionam in starea SURFACE_MOLE 
 +      SURFACE_MOLE = un "​Mole"​ este la suprafata si trebuie sa fie lovit pentru a obtine puncte(trebuie ca butonul corespunzator sa fie apasat in tr-un timp mai mic decat cel de reactie). Cand apasam ​pe buton sau expira timpul, "​Mole-ul"​ intra in vizuina si mergem in starea de actualizare a tabelei(REFRESH_SCORE). 
 +      * REFRESH_SCORE = aici actualizam statisticile,​ dupa care ne intoarcem in CHOOSE_MOLE 
 +      RESET_WAIT = ajungem in aceasta stare daca se apasa pe B5(RESET_BUTTON de la pin 8); se reseteaza jocul dupa ce tin apasat macar jumatate de secunda, dupa care eliberez 
 +      * GAME_OVER = stare finala; ajung aici dupa ce expira timpul  
 + 
 +    * Explicare setare durata la 60 de secunde 
 +      * Frecventa pe Arduino Uno este 16MHz = 16 000 000 Hz. Prin setarea prescaler-ului la 1024 rezulta 16000000 ​1024 = 15625 de tick-uri pe secunda. Prin setarea registrului OCR2A la 249, programul va itera prin 250 de valori(de la 0 la 249) pentru a produce a intrerupere ==o intrerupere are loc periodic la 250 / 15625 = 0.016s ==> este nevoie de 60s / 0.016s = 3750 de intreruperi ca sa pot sti ca a trecut un minut, timp dupa care trebuie sa opresc jocul.  
 +
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip> +    * Un joc interactiv pe care o sa il mai joc in viitor.
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +
-</​note>​+
  
-===== Concluzii ​=====+=====Demo video proiect cu explicatii=====
  
-===== Download =====+    * https://​www.youtube.com/​watch?​v=UiAcehrmnwM
  
-<note warning>​ +=====Link Github=====
-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**. +    ​https://​github.com/​dariuusss/​software-pm-milestone-3
-</​note>​+
  
-===== Jurnal ===== 
  
-<note tip> 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. 
-</​note>​ 
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
pm/prj2025/avaduva/darius.ignatescu.1748108105.txt.gz · Last modified: 2025/05/24 20:35 by darius.ignatescu
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