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:25]
alexandra.londraliu [Hardware 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 ​(if any) (e.g. AVR Studio, CodeVisionAVR) +  * mediu de dezvoltare: Arduino IDE 
-  * librării şi surse 3rd-party ​(e.gProcyon AVRlib+  * Limbaj de programare: C++ 
-  * algoritmi ​şi structuri ​pe care plănuiţi să le implementaţ+  * librării şi surse 3rd-party
-  ​(etapa 3surse şi funcţii implementate+  -     SPI.h - Librărie standard Arduino pentru comunicare SPI 
 +  -     ​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 
 +  * algoritmi ​principali:​ 
 +  -   ​Sistemul de management al nevoilor: 
 +      -- 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ă 
 +  -   ​Sisteme de animație 
 +      --   ​Animație de dans: Deplasează pisica ​pe axa Y într-o mișcare oscilantă 
 +      --  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 
 +  -  Sistem de indicare vizuală a stării prin LED-uri 
 +      --  LED verde: Indică stare de satisfacție completă, aprins când nivelul de foame este 0% 
 +      --   LED roșu: Indică stare de foame critică, aprins când nivelul de foame depășește 70% 
 +  -  Sistem de interacțiune 
 +      -- 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 ș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ă șș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 principale 
 +      -- setup(): Inițializează componentele hardware, afișează mesaje de bun venit, configurează pinii pentru LED-uri și butoane 
 +      -- loop(): Buclă principală care verifică comenzile, butoanele, actualizează nivelul de foame și gestionează modul de joc 
 +  -  Funcții de verificare și procesare 
 +      -- checkCommands():​ Verifică și procesează comenzile primite prin interfața serială 
 +      -- checkButton():​ Verifică starea butonului cu debounce pentru a evita citirile false 
 +      -- checkHungry():​ Actualizează nivelul de foame și generează mesaje de avertizare 
 +      -- 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 
 +      -- drawCat(): Desenează sprite-ul pisicii și informațiile de stare pe ecran 
 +      -- 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 (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 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 59: 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.1747722300.txt.gz · Last modified: 2025/05/20 09:25 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