This shows you the differences between two versions of the page.
|
pm:prj2025:vstoica:stefania.manea [2025/05/21 20:12] stefania.manea |
pm:prj2025:vstoica:stefania.manea [2025/05/22 12:14] (current) stefania.manea |
||
|---|---|---|---|
| Line 64: | Line 64: | ||
| ===Software Design=== | ===Software Design=== | ||
| - | **Flow-ul programului | + | ==Flow-ul programului== |
| - | ** | + | |
| Programul funcționează pe o mașină de stări (`State currentState = BEGIN/RECORD`), în care logica principală este împărțită în două stări esențiale: **BEGIN** și **RECORD**. | Programul funcționează pe o mașină de stări (`State currentState = BEGIN/RECORD`), în care logica principală este împărțită în două stări esențiale: **BEGIN** și **RECORD**. | ||
| Line 90: | Line 90: | ||
| Datele obținute sunt transmise funcției result_screen(bpm, duration, beatCount), care se ocupă de afișarea rezultatelor și animația cu inima care pulsează. | Datele obținute sunt transmise funcției result_screen(bpm, duration, beatCount), care se ocupă de afișarea rezultatelor și animația cu inima care pulsează. | ||
| + | ==Structura și rolul fiecărui fișier== | ||
| - | **Structura și rolul fiecărui fișier:** | + | |
| + | Proiectul este structurat în mai multe fișiere sursă, fiecare având un rol specific în funcționarea generală a sistemului. În continuare voi descrie în detaliu fiecare fișier: | ||
| ==main.cpp - Fluxul programului și logica de bază== | ==main.cpp - Fluxul programului și logica de bază== | ||
| Line 105: | Line 107: | ||
| * **RECORD**: Citește semnalul de la microfon, detectează bătăi, desenează semnalul pe ecran și calculează BPM la oprirea înregistrării (prin butonul 2). | * **RECORD**: Citește semnalul de la microfon, detectează bătăi, desenează semnalul pe ecran și calculează BPM la oprirea înregistrării (prin butonul 2). | ||
| Integrează controlul LED-urilor și speaker-ului în funcție de starea aplicației. | Integrează controlul LED-urilor și speaker-ului în funcție de starea aplicației. | ||
| - | Găzduiește logica de afișare dinamică (semnalul de puls) și contabilizează numărul de bătăi. | + | Gestionează afișarea semnalului de puls și menține numărul de bătăi. |
| == init.hpp – Inițializarea componentelor hardware == | == init.hpp – Inițializarea componentelor hardware == | ||
| Line 190: | Line 192: | ||
| Acestea sunt desenate alternativ pe ecran în //result_screen()// pentru a simula o inimă care pulsează. | Acestea sunt desenate alternativ pe ecran în //result_screen()// pentru a simula o inimă care pulsează. | ||
| + | |||
| + | ===Rezultate obținute=== | ||
| + | |||
| + | [[https://www.youtube.com/watch?v=QOGykQ_T8kw|Demo proiect]] | ||
| + | |||
| + | |||
| + | Rezultatele obținute în urma testării arată că proiectul simulează detectarea bătăilor inimii și le contorizează în timp real. Informațiile afișate pe ecranul OLED, mai exact BPM-ul, durata înregistrării și numărul de bătăi, sunt clare și ușor de înțeles, iar animația inimii contribuie la o experiență interactivă și intuitivă pentru utilizator. | ||
| + | Aceste elemente fac ca proiectul să fie nu doar funcțional, ci și accesibil și prietenos pentru utilizatori. | ||
| + | |||
| + | {{ :pm:prj2025:vstoica:poza1.jpg?300|}} | ||
| + | {{ :pm:prj2025:vstoica:poza2.jpg?300|}} | ||
| + | {{ :pm:prj2025:vstoica:poza3.jpg?300|}} | ||
| + | {{ :pm:prj2025:vstoica:poza4.jpg?300|}} | ||
| + | {{ :pm:prj2025:vstoica:poza5.jpg?450 || center}} | ||
| + | |||
| + | |||
| + | |||
| + | ===Concluzie=== | ||
| + | |||
| + | Proiectul **Stetoscop Digital** pune în evidență un mod practic și eficient de a construi un sistem embedded care răspunde la interacțiuni reale. Utilizarea resurselor hardware precum ADC, GPIO, timer și interfața I2C pentru display-ul OLED a permis construirea unei aplicații care combină interacțiunea fizică (butoane, LED-uri, speaker) cu o interfață grafică intuitivă. Această combinație de componente oferă un rezultat vizual și funcțional. | ||
| + | |||
| + | Codul este clar structurat, iar funcționalitatea este împărțită logic, ceea ce face ca proiectul să fie ușor de înțeles și de testat. | ||