This shows you the differences between two versions of the page.
pm:prj2024:tdicu:george.marin2610 [2024/05/19 20:37] george.marin2610 [Jurnal] |
pm:prj2024:tdicu:george.marin2610 [2024/05/20 09:16] (current) george.marin2610 [Descriere generală] |
||
---|---|---|---|
Line 5: | Line 5: | ||
<note tip> | <note tip> | ||
* **Ce face?** | * **Ce face?** | ||
- | Proiectul creează un sistem interactiv format dintr-un display și un difuzor. Display-ul afișează grupul de butoane vizat, iar led-ul indică culoarea corectă. Sistemul calculează un scor în funcție de acuratețea și viteza cu care se apasă butoanele. Scorurile sunt salvate pe un card SD pentru a crea un clasament. | + | Proiectul creează un sistem interactiv format dintr-un display și un difuzor. Display-ul afișează grupul de butoane vizat, iar led-ul indică culoarea corectă. Sistemul calculează un scor în funcție de viteza cu care se apasă butoanele. Scorurile sunt salvate pe un card SD pentru a crea un clasament. |
* **Care este scopul?** | * **Care este scopul?** | ||
Scopul principal este de a crea un joc distractiv și captivant care poate fi utilizat de persoane de toate vârstele. Jocul poate fi folosit pentru a îmbunătăți coordonarea mână-ochi, reflexele și viteza de reacție. | Scopul principal este de a crea un joc distractiv și captivant care poate fi utilizat de persoane de toate vârstele. Jocul poate fi folosit pentru a îmbunătăți coordonarea mână-ochi, reflexele și viteza de reacție. | ||
Line 16: | Line 16: | ||
Utilizatorul are următoarele opțiuni: | Utilizatorul are următoarele opțiuni: | ||
* Începerea unui joc: | * Începerea unui joc: | ||
- | * Primește pe display instrucțiuni cu butoanele care trebuie să fie apăsate. | + | * Primește pe display instrucțiuni (LEFT/RIGHT) cu butoanele care trebuie să fie apăsate |
- | * Scorul (afișat în timp real) va fi calculat în funcție de acuratețea și viteza apăsării butoanelor. | + | * Primește prin intermediul LED-urilor instrucțiuni (BLUE/YELLOW/RED) cu butoanele care trebuie să fie apăsate |
- | * La finalul jocului, poate alege dacă să salveze scorul obținut. | + | * Scorul va fi calculat în funcție de viteza apăsării butoanelor (delay în ms) |
- | * Afișarea rezultatelor anterioare: | + | * Salvarea scorului obținut |
- | * Clasament (Leaderboard) | + | * Primește informații legate de ranking |
- | {{:pm:prj2024:tdicu:diagrama_pm_grmm.png?500|}} | + | {{ :pm:prj2024:tdicu:diagrama_pm_grmm_light.png |}} |
===== Hardware Design ===== | ===== Hardware Design ===== | ||
- | <note tip> | + | **Listă de piese:** |
- | * Listă de piese: | + | |
* 1 x Arduino Uno | * 1 x Arduino Uno | ||
* 2 x Breadboards | * 2 x Breadboards | ||
Line 33: | Line 32: | ||
* 1 x Modul SD Card | * 1 x Modul SD Card | ||
* 3 x LED-uri | * 3 x LED-uri | ||
- | </note>{{ :pm:prj2024:tdicu:proiect_pm_grmm_sch.png?800 |}} | + | |
- | {{ :pm:prj2024:tdicu:proiect_pm_pic_grmm.jpg?700 |}} | + | **Schemă electrică:** |
+ | {{ :pm:prj2024:tdicu:proiect_pm_grmm_sch.png?800 |}} | ||
+ | **Implementare fizică:** | ||
+ | {{ :pm:prj2024:tdicu:implementare_fizica_grmm_cropped.jpg?800 |}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | **Descrierea codului:** | ||
+ | Proiectul este conceput pentru a rula un joc bazat pe timpul de reacție, utilizând un Arduino, un LCD, LED-uri pentru indicii vizuale și un buton pentru interacțiunea utilizatorului. Firmware-ul gestionează inițializarea jocului, logica jocului, interacțiunea cu utilizatorul și gestionarea scorurilor. Timpul de reacție al jucătorului este înregistrat și penalizat dacă nu se încadrează în pragul de timp așteptat. | ||
- | <note tip> | + | **Mediu de dezvoltare:** |
- | Descrierea codului aplicaţiei (firmware): | + | Firmware-ul a fost dezvoltat folosind Arduino IDE. |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | //Biblioteci şi surse 3rd-party:// |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | * **LiquidCrystal Library**: interfațarea cu LCD-ul |
- | * (etapa 3) surse şi funcţii implementate | + | * **SD Library**: interfațarea cu un modul de card SD, pentru citirea și scrierea datelor pe un card SD |
- | </note> | + | |
+ | **Algoritmi şi structuri:** | ||
+ | * **Selecția aleatorie a LED-urilor:** Un algoritm pentru a selecta aleatoriu unul dintre cele trei LED-uri (albastru, galben, roșu) pentru a se aprinde. | ||
+ | * **Detecția apăsării butoanelor:** O structură pentru a detecta apăsările butoanelor și a determina dacă a fost apăsat butonul corect în funcție de culoarea LED-ului și zona butoanelor (STÂNGA sau DREAPTA). | ||
+ | * **Calcularea timpului de reacție:** Un algoritm pentru a calcula timpul de reacție al jucătorului (suma timpilor individuali). | ||
+ | |||
+ | **Surse și funcții implementate:** | ||
+ | * **setup():** Inițializează componentele hardware și afișează mesajul inițial pe LCD. | ||
+ | * **loop():** Conține bucla principală a jocului, verificând apăsările butonului pentru a începe jocul sau a salva scorul. | ||
+ | * **startGame():** Resetează variabilele jocului și începe jocul. | ||
+ | * **playGame():** Gestionează logica principală a jocului, inclusiv aprinderea LED-urilor, detectarea apăsărilor butoanelor și înregistrarea timpilor de reacție. | ||
+ | * **endGame():** Calculează timpul total și mediu de reacție, le afișează și gestionează promptul de salvare a scorului. | ||
+ | * **saveScore():** Scrie scorul jucătorului pe cardul SD. | ||
+ | * **getScoreRanking():** Citește scorurile de pe cardul SD și calculează clasamentul jucătorului. | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | Proiectul a realizat cu succes un joc interactiv bazat pe reacție, care măsoară și înregistrează timpii de reacție ai jucătorilor. Jocul aprinde corect LED-urile, detectează apăsările corecte și incorecte ale butoanelor, calculează timpii de reacție și penalizează răspunsurile întârziate. Scorurile sunt salvate pe un card SD, iar clasamentele jucătorilor sunt determinate pe baza scorurilor anterioare. LCD-ul oferă feedback și instrucțiuni clare, îmbunătățind experiența utilizatorului. |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | |
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | Proiectul a demonstrat utilizarea eficientă a platformei Arduino pentru crearea unui joc interactiv cu feedback în timp real și gestionarea scorurilor. Integrarea diverselor componente, inclusiv LED-uri, butoane, un LCD și un card SD, a evidențiat versatilitatea și capacitatea Arduino-ului. Utilizarea bibliotecilor a simplificat procesul de dezvoltare și a permis concentrarea pe logica jocului și experiența utilizatorului. Îmbunătățiri viitoare ar putea include mecanici de joc mai complexe, mecanisme suplimentare de feedback și o gestionare și afișare a scorurilor mai avansată. | ||
===== Download ===== | ===== Download ===== | ||
Line 71: | Line 87: | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | <note> | + | Software utilizat: |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | * https://www.arduino.cc/ |
- | </note> | + | * https://fritzing.org/ |
+ | |||
+ | Resurse: | ||
+ | * https://docs.arduino.cc/built-in-examples/digital/Button/ | ||
+ | * https://www.youtube.com/watch?v=Y23vMfynUJ0 | ||
+ | * https://forum.arduino.cc/t/newbie-multiplexing-i-think-help/55944/8 | ||
+ | * https://forum.arduino.cc/t/turn-on-a-led-with-a0-a1-a2-a3-a4-a5-a6/300252 | ||
+ | * https://forum.arduino.cc/t/use-tx-as-digital-io-while-using-rx-to-receive-data/971746/3 | ||
+ | * https://arduino.stackexchange.com/questions/43182/writing-int-long-on-sd-card | ||
+ | * https://forum.arduino.cc/t/arduino-uno-writing-garbage-on-sd-card/355766/4 | ||
+ | * https://forum.arduino.cc/t/interface-both-the-sd-card-module-and-lcd-display-to-arduino/157555 | ||
<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> | ||