Differences

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

Link to this comparison view

pm:prj2025:rnedelcu:alexandra.londraliu [2025/05/20 09:39]
alexandra.londraliu [Software Design]
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):
-  * Mediu de dezvoltare+  * mediu de dezvoltare: Arduino IDE 
-    -IDE: Arduino IDE +  ​* ​Limbaj de programare: C++ 
-    -Limbaj de programare: C++ +  * librării şi surse 3rd-party:​ 
-  * Librării şi surse 3rd-party:​ +  ​- ​    SPI.h - Librărie standard Arduino pentru comunicare SPI 
-    **SPI.h** - Librărie standard Arduino pentru comunicare SPI +  ​- ​    Adafruit_GFX.h - Librărie grafică pentru afișaje, dezvoltată de Adafruit 
-    **Adafruit_GFX.h** - Librărie grafică pentru afișaje, dezvoltată de Adafruit +  ​- ​    Adafruit_PCD8544.h - Librărie specifică pentru controlul afișajului Nokia 5110 (PCD8544), dezvoltată de Adafruit 
-    **Adafruit_PCD8544.h** - Librărie specifică pentru controlul afișajului Nokia 5110 (PCD8544), dezvoltată de Adafruit +  * algoritmi principali
-  * Algoritmi şi structuri implementatate+  ​- ​  Sistemul de management al nevoilor: 
-### Algoritmi principali +      -- Algoritm de foame: Nivelul de foame crește gradual în timp (5% la fiecare 30 secunde) 
- +      --    ​Algoritm de hrănire: Activat de un buton fizic, reduce nivelul de foame cu 20% pentru fiecare hrănire completă 
-#### Sistemul de management al nevoilor +  ​- ​  Sisteme de animație 
-**Algoritm de foame:** Nivelul de foame crește gradual în timp (5% la fiecare 30 secunde) +      --   Animație de dans: Deplasează pisica pe axa Y într-o mișcare oscilantă 
-**Algoritm de hrănire:** Activat de un buton fizic, reduce nivelul de foame cu 20% pentru fiecare hrănire completă +      --  ​Animație de alergare: Mișcă pisica pe axa X cu revenire pe partea stângă a ecranului când depășește marginea dreaptă 
- +      -- Animație de hrănire: Simulează hrănirea prin căderea obiectului "​mâncare"​ de la partea superioară a ecranului către poziția pisicii 
-#### Sisteme de animație +  ​-  ​Sistem de indicare vizuală a stării prin LED-uri 
-**Animație de dans:** Deplasează pisica pe axa Y într-o mișcare oscilantă +      --  ​LED verde: Indică stare de satisfacție completă, aprins când nivelul de foame este 0% 
-**Animație de alergare:** Mișcă pisica pe axa X cu revenire pe partea stângă a ecranului când depășește marginea dreaptă +      --   LED roșu: Indică stare de foame critică, aprins când nivelul de foame depășește 70% 
-**Animație de hrănire:** Simulează hrănirea prin căderea obiectului "​mâncare"​ de la partea superioară a ecranului către poziția pisicii +  ​-  ​Sistem de interacțiune 
- +      -- Interacțiune hardware: Utilizează un buton fizic pentru hrănirea animalului 
-#### Sistem de indicare vizuală a stării prin LED-uri +      -- Interacțiune software: Acceptă comenzi prin interfața serială pentru activarea diverselor animații și funcții 
-**LED verde:** Indică stare de satisfacție completă, aprins când nivelul de foame este 0% +  ​- ​ Mini-joc "​Prinde Șoriceii":​ 
-**LED roșu:** Indică stare de foame critică, aprins când nivelul de foame depășește 70% +      -- 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ă 
-#### Sistem de interacțiune +      -- Algoritm de detecție a coliziunilor:​ Verifică distanța relativă între pisică și șoricel pentru determinarea prinderii 
-**Interacțiune hardware:** Utilizează un buton fizic pentru hrănirea animalului +      -- Sistem de punctaj: Acordă puncte pentru fiecare șoricel prins și monitorizează progresul 
-**Interacțiune software:** Acceptă comenzi prin interfața serială pentru activarea diverselor animații și funcții +      -- 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 butoane 
-`setup()`: Inițializează componentele hardware, afișează mesaje de bun venit, configurează pinii pentru LED-uri și buton +      -- loop(): Buclă principală care verifică comenzile, ​butoanele, actualizează nivelul de foame și gestionează modul de joc 
-`loop()`: Buclă principală care verifică comenzile, ​butonul, actualizează nivelul de foame și starea LED-urilor +  ​-  ​Funcții de verificare și procesare 
- +      -- checkCommands():​ Verifică și procesează comenzile primite prin interfața serială 
-#### Funcții de verificare și procesare +      -- checkButton():​ Verifică starea butonului cu debounce pentru a evita citirile false 
-`checkCommands()`: Verifică și procesează comenzile primite prin interfața serială +      -- checkHungry():​ Actualizează nivelul de foame și generează mesaje de avertizare 
-`checkButton()`: Verifică starea butonului cu debounce pentru a evita citirile false +      -- updateLedStatus():​ Controlează starea LED-urilor în funcție de nivelul de foame 
-`checkHungry()`: Actualizează nivelul de foame și generează mesaje de avertizare +  ​- ​ Funcții de joc 
-`updateLedStatus()`: Controlează starea LED-urilor în funcție de nivelul de foame +      -- startGame():​ Inițializează variabilele de joc și pornește mini-jocul "​Prinde Șoricii"​ 
- +      -- runMouseGame():​ Gestionează logica principală a jocului (mișcarea șoricelului,​ verificarea coliziunilor) 
-#### Funcții de afișare +      -- checkGameButtons():​ Procesează input-ul de la butoanele de control ale jocului cu debounce 
-`drawCat()`: Desenează sprite-ul pisicii și informațiile de stare pe ecran +      -- spawnNewMouse():​ Generează un nou șoricel pe o poziție aleatorie și crește progresiv viteza 
-`drawHearts()`: Desenează inimi decorative animate (opțional) +      -- checkCollision():​ Verifică dacă pisica a prins șoricelul bazat pe pozițiile relative 
-`drawFood()`: Desenează obiectul "​mâncare"​ în timpul procesului de hrănire +      -- handleGameWon()/​handleGameLost():​ Gestionează stările de sfârșit de joc 
-`updateDisplay()`: Actualizează întregul conținut al afișajului +      -- endGame(): Închide jocul și oferă recompense pisicii bazate pe performanță 
-   * Structura datelor: +      -- updateGameDisplay():​ Actualizează afișajul specific pentru modul de joc 
-**Bitmap-uri pentru sprite-uri:** Definite ca array-uri de bytes pentru reprezentarea vizuală a pisicii, inimilor și mâncării +  - Funcții de afișare 
-- **Variabile ​de stare:** Utilizate pentru a urmări poziția obiectelornivelul de foamestarea butonului, etc. +      -- drawCat(): Desenează sprite-ul pisicii și informațiile de stare pe ecran 
-- **Variabile de temporizare:​** Folosite pentru sincronizarea animațiilor și actualizărilor +      -- drawHearts():​ Desenează inimi decorative animate (opțional) 
 +      -- drawFood(): Desenează obiectul "​mâncare"​ în timpul procesului de hrănire 
 +      -- updateDisplay():​ Actualizează întregul conținut al afișajului ​în modul normal 
 +      -- handleAnimations()Gestionează toate tipurile ​de animații (dansalergarehrănire)
 </​note>​ </​note>​
 +===== Rezultate Obţinute =====
  
 +<note tip>
 +Rezultate Obținute:
  
 +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%
  
-===== Rezultate Obţinute ===== +Rezultat Final: 
- +Tamagotchi funcțional cu 7 comenzi, 3 butoane, mini-joc interactiv și gestionare completă a stării animalului virtual!</​note>​
-<note tip> +
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +
-</​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 proiectuluisurse, 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 106: Line 116:
  
 <note tip> <note tip>
-Puteți avea și secțiune ​de jurnal în care să poată urmări asistentul ​de proiect progresul proiectului.+   * 12.05: am primit comanda cu piesele necesare 
 +   * 13.05: este gata parte din hardware 
 +   * 16.05: am ars lcd-ul si am dat comanda ​de altul 
 +   * 18.05: am facut rost de alt lcd 
 +   * 20.05: gata o parte din software 
 +   * 22.05: gata software & hardware 
 +   * 25.05: am infrumusetat aspectul vizual al proiectului 
 </​note>​ </​note>​
  
pm/prj2025/rnedelcu/alexandra.londraliu.1747723190.txt.gz · Last modified: 2025/05/20 09:39 by alexandra.londraliu
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