Differences

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

Link to this comparison view

pm:prj2025:avaduva:stefania.draghici [2025/05/26 19:20]
stefania.draghici [Rezultate Obţinute]
pm:prj2025:avaduva:stefania.draghici [2025/05/28 18:48] (current)
stefania.draghici [Rezultate Obţinute]
Line 122: Line 122:
 == Funcționalități Implementate == == Funcționalități Implementate ==
  
-**Sistem de afișare animat** pe OLED SSD1306 +  * **Sistem de afișare animat** pe OLED SSD1306 
-**Interfață grafică completă** cu animații pentru toate stările +  ​* ​**Interfață grafică completă** cu animații pentru toate stările 
-**Sistem de management stări** (baby/adult cu tranziție automată) +  ​* ​**Sistem de management stări** (baby/adult cu tranziție automată) 
-**Interacțiune prin butoane** (Play, Feed, Reset cu debounce) +  ​* ​**Interacțiune prin butoane** (Play, Feed, Reset cu debounce) 
-**Senzor de lumină ambientală** cu detecție automată zi/noapte +  ​* ​**Senzor de lumină ambientală** cu detecție automată zi/noapte 
-**Feedback audio** prin buzzer pentru toate acțiunile +  ​* ​**Feedback audio** prin buzzer pentru toate acțiunile 
-**Sistem de bare de progres** pentru hunger și happiness +  ​* ​**Sistem de bare de progres** pentru hunger și happiness 
-**Timer de evoluție** (baby → adult după 3 minute, pentru testare, dar cu posibilitatea de a extinde durata) +  ​* ​**Timer de evoluție** (baby → adult după 3 minute, pentru testare, dar cu posibilitatea de a extinde durata) 
-**Sistem de warning audio** pentru stări critice +  ​* ​**Sistem de warning audio** pentru stări critice 
-**Funcționalitate de reset** cu confirmare prin apăsare lungă, pentru a nu apăsa din greșeală+  ​* ​**Funcționalitate de reset** cu confirmare prin apăsare lungă, pentru a nu apăsa din greșeală 
 +  * **Mini Game** pentru funcționalitatea de Play, pentru a reduce monotonia
  
 == Arhitectura Software == == Arhitectura Software ==
Line 168: Line 169:
 Funcții principale utilizate: Funcții principale utilizate:
  
-**display.begin()**:​ inițializează ecranul +  * **display.begin()**:​ inițializează ecranul 
- +  ​* ​**display.clearDisplay()**:​ șterge conținutul ecranului 
-**display.clearDisplay()**:​ șterge conținutul ecranului +  ​* ​**display.print()**:​ pentru afișare de text 
- +  ​* ​**drawBitmap()**:​ pentru afișarea pictogramelor
-**display.print()**:​ pentru afișare de text +
- +
-**drawBitmap()**:​ pentru afișarea pictogramelor+
  
 ==== Elementul de noutate al proiectului ==== ==== Elementul de noutate al proiectului ====
Line 186: Line 184:
 **I2C** **I2C**
  
-Aplicare: comunicația cu display-ul OLED SSD1306 +  * Aplicare: comunicația cu display-ul OLED SSD1306 
- +  ​* ​Avantaje: doar 2 fire pentru date și clock, protocol robust 
-Avantaje: doar 2 fire pentru date și clock, protocol robust +  ​* ​Implementare:​ Wire.begin() pentru inițializare,​ transfer automat prin bibliotecă
- +
-Implementare:​ Wire.begin() pentru inițializare,​ transfer automat prin bibliotecă+
  
 **GPIO** **GPIO**
  
-Butoane: citire digitală cu digitalRead() și debounce software+  * Butoane: citire digitală cu digitalRead() și debounce software 
 +  * Configurare:​ pinMode() pentru INPUT
  
-- Buzzer: generare PWM pentru tonuri diferite cu tone() 
  
-- Configurare:​ pinMode() pentru INPUT și OUTPUT+**ADC**
  
 +  * Senzor lumină: conversie analog-digitală a intensității luminoase
 +  * Rezoluție: 10-bit (0-1023) pentru precizie suficientă
 +  * Procesare: conversie la procent pentru logică simplificată
  
-**ADC** +**PWM**
- +
-- Senzor lumină: conversie analog-digitală a intensității luminoase+
  
-- Rezoluție10-bit ​(0-1023) pentru ​precizie suficientă+  * Buzzergenerare tonuri diferite cu tone() pentru ​feedback sonor și oprire cu noTone()
  
-- Procesare: conversie la procent pentru logică simplificată 
  
 ==== Scheletul Proiectului și Interacțiunea Funcționalităților ==== ==== Scheletul Proiectului și Interacțiunea Funcționalităților ====
Line 221: Line 217:
 == Starea Principală (gestionată prin flag-uri boolean): == == Starea Principală (gestionată prin flag-uri boolean): ==
  
-**checkSleepCondition()**:​ monitorizează senzorul de lumină+  * **checkSleepCondition()**:​ monitorizează senzorul de lumină
  
-**animateIdle()**:​ animația de bază când animalul este treaz+  * **animateIdle()**:​ animația de bază când animalul este treaz
  
-**animateSleep()**:​ animația de somn când este întuneric+  * **animateSleep()**:​ animația de somn când este întuneric
  
 == Sistem de Evenimente: == == Sistem de Evenimente: ==
  
-**triggerHappyAnimation()** + **runHappyAnimation()**:​ răspuns la butonul PLAY+  * **triggerHappyAnimation()** + **runHappyAnimation()** + **runMiniGame()**: răspuns la butonul PLAY
  
-**triggerEatAnimation()** + **runEatAnimation()**:​ răspuns la butonul FEED+  * **triggerEatAnimation()** + **runEatAnimation()**:​ răspuns la butonul FEED
  
-**updateHungerAndHappiness()**:​ degradare automată a parametrilor la 30s+  * **updateHungerAndHappiness()**:​ degradare automată a parametrilor la 30s
  
 === Fluxul Principal de Execuție === === Fluxul Principal de Execuție ===
Line 239: Line 235:
 **setup()** → **showIntro()** →  **setup()** → **showIntro()** → 
  
-── ​Zi: **animateIdle()** + verificare butoane + update status+  * Zi: **animateIdle()** + verificare butoane + update status
  
-── ​Noapte: **animateSleep()** + melodie când "​adoarme"​+  * Noapte: **animateSleep()** + melodie când "​adoarme"​
  
 ==== Modul de Validare a Funcționalităților ==== ==== Modul de Validare a Funcționalităților ====
Line 247: Line 243:
 == Testare unitară pe componente: ==  == Testare unitară pe componente: == 
  
-Fiecare animație testată individual cu delay-uri controlate+  * Fiecare animație testată individual cu delay-uri controlate
  
-Butoanele testate cu Serial Monitor pentru debug+  * Butoanele testate cu Serial Monitor pentru debug
  
-Senzorul calibrat în condiții diferite de lumină+  * Senzorul calibrat în condiții diferite de lumină
  
 == Testare integrată: == == Testare integrată: ==
  
-Sesiuni complete de 5+ minute pentru verificarea evoluției+  * Sesiuni complete de 5+ minute pentru verificarea evoluției
  
-Test de rezistență cu apăsări rapide pentru debounce+  * Test de rezistență cu apăsări rapide pentru debounce
  
-Validare tranziții zi/noapte cu acoperire/​descoperire senzor+  * Validare tranziții zi/noapte cu acoperire/​descoperire senzor
  
  
Line 268: Line 264:
 == Proces de calibrare experimentală:​ == == Proces de calibrare experimentală:​ ==
  
-Măsurători în condiții normale de cameră: ~300-500 (valori ADC)+  * Măsurători în condiții normale de cameră: ~300-500 (valori ADC)
  
-Măsurători în întuneric: ~10-50+  * Măsurători în întuneric: ~10-50
  
-Prag stabilit: ​3% din scala completă (≈30 valori ADC)+  * Prag stabilit: ​2% din scala completă (≈20 valori ADC)
  
 == Justificarea pragului: == == Justificarea pragului: ==
  
-Suficient de sensibil pentru detectarea întunericului natural+  * Suficient de sensibil pentru detectarea întunericului natural
  
--Rezistent la variații mici de lumină (umbre, mișcări)+  * Rezistent la variații mici de lumină (umbre, mișcări)
  
--Testat în diferite condiții: cameră luminoasă, lumină directă de la o lanternă, întuneric complet+  * Testat în diferite condiții: cameră luminoasă, lumină directă de la o lanternă, întuneric complet
  
 ==== Optimizări Realizate ==== ==== Optimizări Realizate ====
Line 306: Line 302:
  
 [[https://​youtu.be/​w-dy4ar_Ra4?​si=V-8LC7MzfvqlPeFS]] [[https://​youtu.be/​w-dy4ar_Ra4?​si=V-8LC7MzfvqlPeFS]]
 +
 +Demo cu mini game: 
 +[[https://​youtube.com/​shorts/​y88nRnVo5h0?​si=fG_Q-Cwj3rChF7mN]]
 ===== Concluzii ===== ===== Concluzii =====
  
Line 339: Line 338:
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-https://​github.com/​KeyboardCamper/​Tamaguino-AB.git+  * https://​github.com/​KeyboardCamper/​Tamaguino-AB.git
  
-https://​javl.github.io/​image2cpp/​+  * https://​javl.github.io/​image2cpp/​
  
-https://​www.spriters-resource.com/​game_boy_gbc/​tamagotchi/​+  * https://​www.spriters-resource.com/​game_boy_gbc/​tamagotchi/​
pm/prj2025/avaduva/stefania.draghici.1748276442.txt.gz · Last modified: 2025/05/26 19:20 by stefania.draghici
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