This is an old revision of the document!


Guess the number

Introducere

Am creat un joc cu Arduino care îți permite să ghicești numere. Ai un ecran care îți arată informațiile, două butoane pentru a juca, LED-uri care se aprind în diferite culori și un buzzer care face sunete. Jocul funcționează in felul urmator: alegi cât de greu vrei să fie - poți ghici numere de la 1 la 10 dacă vrei să fie ușor, de la 1 la 100 pentru mediu, sau de la 1 la 1000 dacă vrei să fie greu. Fiecare nivel îți dă timp diferit să ghicești - de la 2 minute (cel ușor) până la 1 minut (cel greu). Buzzer-ul face sunete diferite să îți arate cât de aproape ești. Dacă ești foarte aproape, sunetele sunt rapide și înalte. Dacă ești departe, sunetele sunt lente și joase. LED-ul verde se aprinde când câștigi, cel roșu când greșești, și sunt melodii speciale pentru când câștigi sau pierzi. Introduci numărul cifră cu cifră apăsând butoanele, și poți să încerci din nou de câte ori vrei fără să oprești jocul.

Descriere generală

O schema bloc:

Componente Hardware - Arduino (microcontroller principal) - LCD I2C 16×2 (afișare informații) - 2 LED-uri (feedback vizual - verde/roșu) - 2 Butoane (input utilizator - selecție/confirmare) - Buzzer (feedback audio)

Module Software - Modul Inițializare - configurare hardware și meniu principal - Modul Dificultate - selecție nivel și setare parametri - Modul Joc Principal - loop principal cu timer și input - Modul Verificare - logica de ghicire și feedback - Modul Audio - sisteme de sunete contextuale

Ordinea de executie: Inițializare → Selecție Dificultate → Joc Activ → Feedback → Reset/Restart

Hardware Design

Componente Hardware:

1. Microcontroller Arduino

- Model: Arduino UNO (ATmega328P)

- Tensiune operare: 5V

- Memorie: 32KB Flash, 2KB SRAM, 1KB EEPROM

2. Display LCD I2C (16×2)

- Specificații: 16 coloane × 2 rânduri

- Protocol: I2C (Inter-Integrated Circuit)

- Tensiune: 5V

- Pini conectați:

  1. SDA → A4
  2. SCL → A5
  3. VCC → 5V
  4. GND → GND

3. LED-uri Indicator

LED Verde (Succes)

- Pin Arduino: 4

LED Roșu (Eroare/Timp Expirat)

- Pin Arduino: 5

4. Butoane de Control

Buton Selecție

- Pin Arduino: 2

Buton Confirmare

- Pin Arduino: 3

5. Buzzer Audio

- Pin Arduino: A0

- Tip: Buzzer pasiv

- Tensiune: 5V

- Control: functia `tone()`

Software Design

Mediu de dezvoltare: Arduino IDE

Librării:

- Wire.h (pentru comunicația I2C cu LCD-ul)

- LiquidCrystal_I2C.h (pentru controlul display-ului LCD I2C)

Structuri și algoritmi:

- Stări precum SELECTIE_DIFICULTATE, JOC_ACTIV, VERIFICARE_GHICIRE, JOC_TERMINAT, RESTART

- Timer non-blocking bazat pe millis() pentru countdown-ul în timp real

- Debouncing software cu interval de 300ms pentru stabilitatea butoanelor

- Algoritm de construire progresivă a numărului (cifră cu cifră) adaptat pe dificultate

- Generator aleator pentru randomizare

- Sistem de feedback audio adaptat cu frecvențe variabile bazate pe proximitatea ghicirii

- PWM pentru controlul buzzer-ului și generarea tonurilor

- Algoritm de verificare cu feedback directional (prea mic/prea mare)

Funcții implementate:

- `setup()` – inițializare hardware și configurare pin-uri

- `loop()` – bucla principală

- `gestionareSelectieDificultate()` – gestionează selecția și confirmarea nivelului

- `initializeazaJoc()` – setează parametrii specifici dificultății

- `verificaTimp()` – monitorizează timer-ul și actualizează display-ul în timp real

- `verificaGhicire()` – compară numărul introdus cu cel ales random și oferă feedback

- `sunetApropiere()` – calculează și reproduce feedback audio bazat pe distanța până la răspuns

- `resetareGhicireCurenta()` – resetează starea pentru o nouă încercare fără restart complet

- `timpExpirat()` – gestionează sfârșitul jocului când timpul expiră

- `melodieVictorie()`, `sunetEsec()`, `tonScurt()` – funcții audio pentru feedback contextual

- `afisareMeniuDificultate()`, `afisareDificultate()` – gestionarea interfeței utilizator

Rezultate Obţinute

Proiectul și-a atins toate obiectivele, creând un joc fara probleme.

Limitări identificate: -Lipsa persistenței datelor la restart (scoruri, statistici)

-Feedback audio limitat la un singur buzzer (monoton)

-Interface fixă fără personalizare pentru utilizatori

-Dependența de alimentarea externă (fără baterie)

Ce mai poate fi adaugat:

LED RGB pentru efecte vizuale mai complexe în loc de LED-urile simple

Card SD pentru salvarea scorurilor și statisticilor de joc

Mod Multiplayer - doi jucători alternează

Mod Sprint - ghicește cât mai multe numere în timp limitat

Concluzii

Download

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.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2025/rnedelcu/catalin.aldobritei.1748101253.txt.gz · Last modified: 2025/05/24 18:40 by catalin.aldobritei
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