Differences

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

Link to this comparison view

pm:prj2025:rnedelcu:alexandru.lintmaier [2025/05/24 12:54]
alexandru.lintmaier [Rezultate Obţinute]
pm:prj2025:rnedelcu:alexandru.lintmaier [2025/05/28 12:33] (current)
alexandru.lintmaier [Download]
Line 44: Line 44:
  
  
-===== Funcționalitate hardware & conexiuni ​=====+**Funcționalitate hardware & conexiuni**
  
 1. Arduino UNO 1. Arduino UNO
Line 70: Line 70:
  
  
-===== Tabel cu alocarea pinilor ​=====+**Tabel cu alocarea pinilor**
  
 | Pin Arduino | Funcție | Nume Reg. MCU | Direcție | Motiv alegere | | Pin Arduino | Funcție | Nume Reg. MCU | Direcție | Motiv alegere |
Line 87: Line 87:
 {{:​pm:​prj2025:​rnedelcu:​tinkercad4.png?​200|}} {{:​pm:​prj2025:​rnedelcu:​tinkercad4.png?​200|}}
  
-{{:​pm:​prj2025:​rnedelcu:​poza_proiect.jpg?200|}}+{{:​pm:​prj2025:​rnedelcu:​pozaa.jpg?200|}}
  
  
Line 96: Line 96:
  
 <note tip> <note tip>
-Medii și librării: 
  
-Arduino IDE+**Biblioteci utilizate**
  
-Librărie ​LiquidCrystal_I2C ​pentru ​LCD+  - LiquidCrystal_I2C.h: control ​LCD 16x2 prin I2C la adresa 0x27
  
-TimerOne pentru contorizarea timpului 
  
-EEPROM sau SD.h dacă se implementează salvare scoruri+**Structura software** 
 +Programul este organizat în următoarele module functionale:​
  
-Funcționalități software planificate:​+1. Inițializare (setup()) 
 +  - Configurare LCD și pini 
 +  - Crearea caracterelor personalizate pentru spânzurătoare 
 +  - Afișare mesaj de bun venit
  
-Interfață de navigare alfabet ​(cu accelerare la apăsare lungă)+2. Selecția configurației ​(start()) 
 +  - Navigare prin categorii: Animale, Fructe, Țări, Aleator 
 +  - Selectare dificultate:​ Ușor, Mediu, Greu 
 +  - Alegerea aleatoare a cuvântului din setul corespunzător
  
-Afișare progres pe LCD (cu actualizări dinamice)+3. Bucla principală (loop()
 +  - Gestionarea input-urilor de la butoane 
 +  - Navigarea prin alfabet (A-Z) 
 +  - Procesarea selecției de litere 
 +  - Actualizarea stării jocului
  
-Semnalizare stări cu LED RGB+4. Afișare și feedback (drawGame(),​ drawHangman()) 
 +  - Desenarea progresului cuvântului 
 +  - Afișarea spânzurătorii progresive 
 +  - Feedback vizual/​audio pentru acțiuni
  
-Cronometru integrat cu întreruperi+5. Logica de joc (hasWon(), gameOver()) 
 +  - Verificarea condițiilor de victorie/​înfrângere 
 +  - Gestionarea sfârșitului de joc și restart
  
-Niveluri de dificultate (opțional: număr de greșeli permise, lungimea cuvântului)+**Funcționalități implementate**
  
-Introducere nume utilizator ​pentru ​highscore ​(opțional)+  - 4 categorii de cuvinte cu câte 6 cuvinte fiecare 
 +  - 3 niveluri de dificultate (2 cuvinte per nivel per categorie) 
 +  - Navigare prin alfabet cu butoane LEFT/​RIGHT 
 +  - Selecție litere cu feedback audio/​vizual 
 +  - Afișare progresivă a spânzurătorii (8 caractere personalizate) 
 +  - Contorizare greșeli (maximum 6) 
 +  - Detectare automată victorie/​înfrângere 
 +  - Sistem de restart automat 
 +  - Debouncing software ​pentru ​butoane 
 + 
 +**Algoritmi principali** 
 + 
 +1. Algoritm de navigare: 
 +  - Incrementare/​decrementare ciclică prin alfabet ​(A-Z) 
 +  - Limitare la capetele intervalului 
 + 
 +2. Algoritm de verificare literă: 
 +  - Căutare în cuvântul ​țintă cu indexOf() 
 +  - Marcare literă ca ghicită în array boolean 
 +  - Actualizare progres și contorizare greșeli 
 + 
 +3. Algoritm de verificare victorie: 
 +  - Iterare prin toate literele cuvântului 
 +  - Verificare dacă toate sunt marcate ca ghicite 
 + 
 +4. Algoritm de afișare spânzurătoare:​ 
 +  - Afișare progresivă a 8 caractere personalizate 
 +  - Mapare numărul greșelilor la părțile corpului
 </​note>​ </​note>​
  
Line 142: Line 183:
 ===== Concluzii ===== ===== Concluzii =====
  
 +Proiectul a demonstrat cu succes implementarea unui joc interactiv pe platformă Arduino, combinând multiple concepte de programare embedded: interfațarea I2C, gestionarea input-urilor,​ generarea de sunete și crearea unei interfețe utilizator intuitive.
 +
 +Aspectele cele mai valoroase ale implementării:​
 +- Utilizarea eficientă a caracterelor personalizate LCD pentru grafică
 +- Organizarea modulară a codului pentru ușurință în dezvoltare
 +- Implementarea unui sistem de feedback multi-modal (vizual/​audio)
 +- Gestionarea corectă a stărilor de joc și tranziților
 +
 +Proiectul oferă o bază solidă pentru dezvoltarea ulterioară și poate fi extins cu funcționalități suplimentare cum ar fi conectivitate,​ scoruri online sau AI pentru generarea dinamică de cuvinte.
 ===== Download ===== ===== Download =====
  
 <note warning> <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**.+Arhiva 
 +{{:pm:prj2025:rnedelcu:spanzuratoarea.zip|}}  
 </​note>​ </​note>​
  
pm/prj2025/rnedelcu/alexandru.lintmaier.1748080474.txt.gz · Last modified: 2025/05/24 12:54 by alexandru.lintmaier
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