This shows you the differences between two versions of the page.
pm:prj2025:avaduva:stefania.draghici [2025/05/26 19:54] stefania.draghici [Calibrarea Elementelor de Senzoristică] |
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ție: 10-bit (0-1023) pentru precizie suficientă | + | * Buzzer: generare 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 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 ===== | ||