Differences

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

Link to this comparison view

pm:prj2025:avaduva:andreea_irina.iurea [2025/05/11 23:33]
andreea_irina.iurea
pm:prj2025:avaduva:andreea_irina.iurea [2025/05/25 23:31] (current)
andreea_irina.iurea [Software Design]
Line 16: Line 16:
 ==== Schema bloc a sistemului ==== ==== Schema bloc a sistemului ====
  
 +{{:​pm:​prj2025:​avaduva:​schemablocpm.png?​600|}}
  
 ==== Descriere ==== ==== Descriere ====
Line 21: Line 22:
 Sistemul interactiv include următoarele componente hardware și logica aferentă implementată pe un Arduino Uno: Sistemul interactiv include următoarele componente hardware și logica aferentă implementată pe un Arduino Uno:
  
-Secvența de joc este generată de **microcontroller**. +Secvența de joc este generată de **microcontroller**. 
-LED-urile semnalizează vizual secvența. Intensitatea lor este controlată dinamic prin **PWM**. +LED-urile semnalizează vizual secvența. Intensitatea lor este controlată dinamic prin **PWM**. 
-Utilizatorul reproduce secvența apăsând pe 4 **butoane tactile**. +Utilizatorul reproduce secvența apăsând pe 4 **butoane tactile**. 
-Sistemul oferă feedback auditiv prin **buzzer**, tot cu ajutorul PWM. +Sistemul oferă feedback auditiv prin **buzzer**, tot cu ajutorul PWM. 
-Nivelul de lumină ambientală este măsurat printr-un **LDR** conectat la un pin analogic, citit prin **ADC**. Intensitatea LED-urilor este ajustată automat în funcție de valoarea obținută. +Nivelul de lumină ambientală este măsurat printr-un **LDR** conectat la un pin analogic, citit prin **ADC**. Intensitatea LED-urilor este ajustată automat în funcție de valoarea obținută. 
-Informații precum scorul curent și nivelul sunt afișate pe un **LCD 16x2** prin **interfață I2C**. +Informații precum scorul curent și nivelul sunt afișate pe un **LCD 16x2** prin **interfață I2C**. 
-Dacă utilizatorul greșește secvența, jocul este resetat. +Dacă utilizatorul greșește secvența, jocul este resetat. 
-**Scorul maxim** atins este salvat în **EEPROM**, pentru a fi reținut chiar și după oprirea sistemului.+**Scorul maxim** atins este salvat în **EEPROM**, pentru a fi reținut chiar și după oprirea sistemului.
  
 Acest sistem permite o integrare eficientă a conceptelor embedded într-o aplicație interactivă,​ vizuală și auditivă. Acest sistem permite o integrare eficientă a conceptelor embedded într-o aplicație interactivă,​ vizuală și auditivă.
Line 54: Line 55:
 Descrierea codului aplicației:​ Descrierea codului aplicației:​
   * Dezvoltat în Arduino IDE.   * Dezvoltat în Arduino IDE.
-  * Folosește librării standard: `Wire.h` pentru I2C, `LiquidCrystal_I2C.h` pentru LCD, `EEPROM.h` pentru memoria internă. +  * Folosește librării standard: `Wire.h` pentru I2C, `LiquidCrystal_I2C.h` pentru LCD, `EEPROM.h` pentru memoria internă ​(funcționalitate în curs de implementare)
-  * Structura codului include: generarea secvenței aleatoare, comparația cu răspunsul utilizatorului,​ control LED/buzzer cu PWM, citirea luminii ambientale cu `analogRead()`, salvarea ​scorului maxim în EEPROM. +  * Structura codului include: generarea secvenței aleatoare, comparația cu răspunsul utilizatorului,​ control LED/buzzer cu PWM, citirea luminii ambientale cu `analogRead()`. Salvarea ​scorului maxim în EEPROM ​urmează să fie implementată
-  * Se folosesc funcții dedicate pentru fiecare responsabilitate:​ `afiseazaScor()`,​ `genereazaSecventa()`,​ `citesteButon()`,​ `salveazaScor()`, etc.+  * Se folosesc funcții dedicate pentru fiecare responsabilitate:​ `afiseazaScor()`,​ `genereazaSecventa()`,​ `citesteButon()`,​ `citesteLumina()`, etc. 
 +  * Motivația librăriilor:​ `Wire.h` și `LiquidCrystal_I2C.h` permit comunicare eficientă cu LCD-ul, economisind pini. `EEPROM.h` va fi folosită pentru memorarea scorului între sesiuni. 
 +  * Element de noutate: ajustarea automată a intensității LED-urilor în funcție de lumina ambientală,​ pentru o mai bună vizibilitate. 
 +  * Justificarea funcționalităților:​ PWM, analogRead(),​ I2C și EEPROM sunt funcții studiate în laborator și aplicate eficient în proiect. 
 +  * Validarea s-a făcut incremental,​ testând fiecare componentă individual și apoi integrat. Sistemul a fost verificat în laborator cu scenarii reale de utilizare. 
 +  * Calibrarea senzorului de lumină s-a făcut prin testare empirică în medii diferite, mapând valorile analogice la intensități LED corespunzătoare. 
 +  * Optimizări:​ bucla `loop()` a fost simplificată,​ iar scrierea în EEPROM va fi condiționată pentru a evita uzura (după implementare). 
 +  * Video demonstrativ care prezintă toate funcționalitățile este disponibil aici: https://​drive.google.com/​file/​d/​1tcDgyCIGnMrl8GKS59UWfrjK4pz0HKyH/​view?​usp=share_link
 </​note>​ </​note>​
  
pm/prj2025/avaduva/andreea_irina.iurea.1746995591.txt.gz · Last modified: 2025/05/11 23:33 by andreea_irina.iurea
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