This shows you the differences between two versions of the page.
pm:prj2025:rnedelcu:alexandra.londraliu [2025/05/20 09:58] alexandra.londraliu [Jurnal] |
pm:prj2025:rnedelcu:alexandra.londraliu [2025/05/27 16:15] (current) alexandra.londraliu [Download] |
||
---|---|---|---|
Line 22: | Line 22: | ||
Lista de piese: | Lista de piese: | ||
* Microcontroler: Arduino UNO | * Microcontroler: Arduino UNO | ||
- | * 1 buton | + | * 3 butoane |
* 2 LED-uri RGB | * 2 LED-uri RGB | ||
* Display Nokia 5110 | * Display Nokia 5110 | ||
Line 30: | Line 30: | ||
===== Software Design ===== | ===== Software Design ===== | ||
- | |||
- | |||
<note tip> | <note tip> | ||
Descrierea codului aplicaţiei (firmware): | Descrierea codului aplicaţiei (firmware): | ||
Line 54: | Line 52: | ||
-- Interacțiune hardware: Utilizează un buton fizic pentru hrănirea animalului | -- Interacțiune hardware: Utilizează un buton fizic pentru hrănirea animalului | ||
-- Interacțiune software: Acceptă comenzi prin interfața serială pentru activarea diverselor animații și funcții | -- Interacțiune software: Acceptă comenzi prin interfața serială pentru activarea diverselor animații și funcții | ||
+ | - Mini-joc "Prinde Șoriceii": | ||
+ | -- Algoritm de control al jocului: Sistem de stare pentru gestionarea fazelor de joc (în desfășurare, câștigat, pierdut) | ||
+ | -- Algoritm de mișcare a șoricelului: Deplasare pe axa Y cu viteză progresivă crescândă | ||
+ | -- Algoritm de detecție a coliziunilor: Verifică distanța relativă între pisică și șoricel pentru determinarea prinderii | ||
+ | -- Sistem de punctaj: Acordă puncte pentru fiecare șoricel prins și monitorizează progresul | ||
+ | -- Control dual cu butoane: Folosește 2 butoane fizice pentru mișcarea pisicii pe axa X în timpul jocului | ||
* funcţii implementate: | * funcţii implementate: | ||
- Funcții principale | - Funcții principale | ||
- | -- setup(): Inițializează componentele hardware, afișează mesaje de bun venit, configurează pinii pentru LED-uri și buton | + | -- setup(): Inițializează componentele hardware, afișează mesaje de bun venit, configurează pinii pentru LED-uri și butoane |
- | -- loop(): Buclă principală care verifică comenzile, butonul, actualizează nivelul de foame și starea LED-urilor | + | -- loop(): Buclă principală care verifică comenzile, butoanele, actualizează nivelul de foame și gestionează modul de joc |
- Funcții de verificare și procesare | - Funcții de verificare și procesare | ||
-- checkCommands(): Verifică și procesează comenzile primite prin interfața serială | -- checkCommands(): Verifică și procesează comenzile primite prin interfața serială | ||
Line 63: | Line 67: | ||
-- checkHungry(): Actualizează nivelul de foame și generează mesaje de avertizare | -- checkHungry(): Actualizează nivelul de foame și generează mesaje de avertizare | ||
-- updateLedStatus(): Controlează starea LED-urilor în funcție de nivelul de foame | -- updateLedStatus(): Controlează starea LED-urilor în funcție de nivelul de foame | ||
+ | - Funcții de joc | ||
+ | -- startGame(): Inițializează variabilele de joc și pornește mini-jocul "Prinde Șoricii" | ||
+ | -- runMouseGame(): Gestionează logica principală a jocului (mișcarea șoricelului, verificarea coliziunilor) | ||
+ | -- checkGameButtons(): Procesează input-ul de la butoanele de control ale jocului cu debounce | ||
+ | -- spawnNewMouse(): Generează un nou șoricel pe o poziție aleatorie și crește progresiv viteza | ||
+ | -- checkCollision(): Verifică dacă pisica a prins șoricelul bazat pe pozițiile relative | ||
+ | -- handleGameWon()/handleGameLost(): Gestionează stările de sfârșit de joc | ||
+ | -- endGame(): Închide jocul și oferă recompense pisicii bazate pe performanță | ||
+ | -- updateGameDisplay(): Actualizează afișajul specific pentru modul de joc | ||
- Funcții de afișare | - Funcții de afișare | ||
-- drawCat(): Desenează sprite-ul pisicii și informațiile de stare pe ecran | -- drawCat(): Desenează sprite-ul pisicii și informațiile de stare pe ecran | ||
-- drawHearts(): Desenează inimi decorative animate (opțional) | -- drawHearts(): Desenează inimi decorative animate (opțional) | ||
-- drawFood(): Desenează obiectul "mâncare" în timpul procesului de hrănire | -- drawFood(): Desenează obiectul "mâncare" în timpul procesului de hrănire | ||
- | -- updateDisplay(): Actualizează întregul conținut al afișajului | + | -- updateDisplay(): Actualizează întregul conținut al afișajului în modul normal |
+ | -- handleAnimations(): Gestionează toate tipurile de animații (dans, alergare, hrănire) | ||
</note> | </note> | ||
- | |||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
<note tip> | <note tip> | ||
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | Rezultate Obținute: |
- | </note> | + | |
+ | Funcționalități Implementate: | ||
+ | * Animal virtual complet: pisică interactivă cu sistem de foame | ||
+ | * Hrănire prin buton: reduce foamea cu 20% | ||
+ | * Animații multiple - dans, alergare, hrănire | ||
+ | * Mini-joc "Prinde Șoarecii" - cu 2 butoane de control | ||
+ | * Feedback vizual - LED verde/roșu + afișaj Nokia 5110 | ||
+ | * Control dual - comenzi seriale + butoane fizice | ||
+ | |||
+ | Performanță Tehnică: | ||
+ | * Memorie optimizată - funcționează pe Arduino Uno | ||
+ | * Interfață responsivă - debouncing 50ms pentru butoane | ||
+ | * Update automat - foame +5% la 30 secunde | ||
+ | * Sistem de recompense - jocul reduce foamea cu 40% | ||
+ | |||
+ | Rezultat Final: | ||
+ | Tamagotchi funcțional cu 7 comenzi, 3 butoane, mini-joc interactiv și gestionare completă a stării animalului virtual!</note> | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
- | ===== 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ă ;-). | + | {{:pm:prj2025:rnedelcu:alexandra_londraliu.zip|}}===== Download ===== |
- | 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**. | ||
</note> | </note> | ||
Line 94: | Line 121: | ||
* 18.05: am facut rost de alt lcd | * 18.05: am facut rost de alt lcd | ||
* 20.05: gata o parte din software | * 20.05: gata o parte din software | ||
+ | * 22.05: gata software & hardware | ||
+ | * 25.05: am infrumusetat aspectul vizual al proiectului | ||
</note> | </note> |