This shows you the differences between two versions of the page.
pm:prj2025:avaduva:andreea_irina.iurea [2025/05/11 23:36] andreea_irina.iurea [Schema bloc a sistemului] |
pm:prj2025:avaduva:andreea_irina.iurea [2025/05/25 23:31] (current) andreea_irina.iurea [Software Design] |
||
---|---|---|---|
Line 22: | 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 55: | 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> | ||