This shows you the differences between two versions of the page.
pm:prj2025:avaduva:darius.ignatescu [2025/05/24 20:39] darius.ignatescu |
pm:prj2025:avaduva:darius.ignatescu [2025/05/25 08:13] (current) darius.ignatescu [Demo video proiect cu explicatii] |
||
---|---|---|---|
Line 138: | Line 138: | ||
* 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. | * 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===== | ||
- | ===== Software Design ===== | + | * Pentru pozitia de minim a potentiometrului(maxim stanga, 0V), 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===== | ||
- | <note tip> | + | * 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. |
- | Descrierea codului aplicaţiei (firmware): | + | * Din punct de vedere logic, jocul este gandit la nivel de 6 stari, avand urmatoarele semnificatii: |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * START_GAME = starea initiala; e responsabila doar de contorizarea momentului in care a inceput propriu-zis jocul, dupa care trecem in starea CHOOSE_MOLE |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * CHOOSE_MOLE = se asteapta alegerea unui numar aleator care va desemna "Mole-ul" care iese la suprafata. Mai intai se verifica daca jucatorul a ales sa reseteze jocul(a apasat pe B5) sau nu. Daca 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 |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | * 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). |
- | * (etapa 3) surse şi funcţii implementate | + | * REFRESH_SCORE = aici actualizam statisticile, dupa care ne intoarcem in CHOOSE_MOLE |
- | </note> | + | * 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 ===== |