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:42]
alexandru.lintmaier [Descriere generală]
pm:prj2025:rnedelcu:alexandru.lintmaier [2025/05/28 12:33] (current)
alexandru.lintmaier [Download]
Line 30: Line 30:
  
 <note tip> <note tip>
-Componente folosite:+| Nume Componentă | Cantitate | Descriere | 
 +|---|---|---| 
 +| Arduino UNO R3 | 1 | Microcontroller ATmega328P | 
 +| LCD 16x2 cu I2C | 1 | Display cu interfață I2C (adresa 0x27) | 
 +| Butoane tactile | 3 | LEFT, SELECT, RIGHT | 
 +| LED Verde | 1 | Feedback pozitiv | 
 +| LED Roșu | 1 | Feedback negativ | 
 +| Buzzer Pasiv | 1 | Feedback audio | 
 +| Rezistențe 220Ω | 3 | Pentru LED-uri si Buzzer | 
 +| Rezistențe 10kΩ | 3 | Pull-down pentru butoane | 
 +| Breadboard | 1 | Montaj circuit | 
 +| Fire de conectare | Diverse | Conexiuni |
  
-Microcontroler:​ Arduino UNO / ATmega328P 
  
-2 butoane (Select / Navigare)+**Funcționalitate hardware & conexiuni**
  
-LED RGB+1. Arduino UNO 
 +   - Rol: controler principal cu microcontroller ATmega328P 
 +   - Alimentare: 5V prin USB sau alimentator extern
  
-LCD 16x2 (I2C sau paralel)+2. LCD 16x2 cu I2C 
 +   - Rol: afișează starea jocului, meniurile și progresul 
 +   - Alimentare: 5V și GND 
 +   - Comunicare: SDA (A4), SCL (A5) - interfață I2C
  
-(Opțional) Card SD pentru salvare scoruri/​nume+3. Butoane 
 +   - Configurare:​ pull-down extern cu rezistențe de 10kΩ 
 +   - Stare default: LOW, HIGH la apăsare 
 +   - Debouncing: software cu delay de 200ms
  
-Rezistențe de pull-down pentru ​butoane+4. LED-uri 
 +   - Verde (pin 8): feedback pentru litere corecte 
 +   - Roșu (pin 10): feedback ​pentru ​greșeli
  
-Sursă alimentare 5V+5. Buzzer pasiv (pin 7) 
 +   - Emite tonuri diferite pentru success/​fail/​navigare 
 +   - Folosește funcția tone() pentru generarea frecvențelor
  
-Scheme electrice și semnale: 
  
-Butoanele conectate la pini digitali cu întreruperi externe 
  
-PWM pentru controlul culorii LED-ului RGB+**Tabel cu alocarea pinilor**
  
-LCD conectat prin interfață I2C pentru economie de pini+| Pin Arduino | Funcție | Nume Reg. MCU | Direcție | Motiv alegere | 
 +|---|---|---|---|---| 
 +| 2 | Buton LEFT | PD2 | IN | Navigare alfabet | 
 +| 4 | Buton SELECT | PD4 | IN | Selecție literă 
 +| 6 | Buton RIGHT | PD6 | IN | Navigare alfabet | 
 +| 7 | Buzzer | PD7 | OUT | Feedback audio | 
 +| 8 | LED Verde | PB0 | OUT | Feedback pozitiv | 
 +| 10 | LED Roșu | PB2 | OUT | Feedback negativ | 
 +| A4 | SDA (I2C) | PC4 | OUT | Date către LCD | 
 +| A5 | SCL (I2C) | PC5 | OUT | Ceas I2C |
  
 {{:​pm:​prj2025:​rnedelcu:​tinkercad3.png?​200|}} {{:​pm:​prj2025:​rnedelcu:​tinkercad3.png?​200|}}
Line 58: 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 67: 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 95: Line 165:
  
 <note tip> <note tip>
-Care au fost rezultatele obţinute în urma realizării proiectului vostru.+Proiectul a fost implementat cu succes, oferind o experiență de joc interactivă și intuitivă. Sistemul funcționează stabil, cu timp de răspuns rapid la input-uri și feedback clar pentru utilizator. 
 + 
 +Caracteristici finale: 
 +- 24 de cuvinte organizate în 4 categorii 
 +- 3 niveluri de dificultate funcționale 
 +- Interface LCD clar și responsive 
 +- Feedback audio/​vizual consistent 
 +- Sistem de restart automat functional 
 + 
 +Îmbunătățiri posibile: 
 +- Adăugarea unui card SD pentru cuvinte suplimentare 
 +- Implementarea unui sistem de scoruri 
 +- Timer pentru limitarea timpului de joc 
 +- Mai multe categorii de cuvinte
 </​note>​ </​note>​
  
 ===== 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.1748079768.txt.gz · Last modified: 2025/05/24 12:42 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