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:18]
andreea_irina.iurea
pm:prj2025:avaduva:andreea_irina.iurea [2025/05/25 23:31] (current)
andreea_irina.iurea [Software Design]
Line 1: Line 1:
-== Sistem interactiv de testare a memoriei și reacției cu adaptare la lumina ambientală == 
  
-== Introducere == 
  
-Proiectul este un sistem interactiv care testează memoria și viteza de reacție a utilizatorului,​ combinând afișajul vizual cu feedback sonor. Sistemul generează o secvență luminoasă aleatorie, pe care utilizatorul trebuie să o reproducă corect apăsând butoanele corespunzătoare. 
  
-Pe măsură ce nivelul ​de dificultate crește, LED-urile își modifică intensitatea folosind semnal PWM. În plus, intensitatea LED-urilor este ajustată automat în funcție de lumina ambientală, măsurată printr-un senzor LDR conectat la un pin analogic. Scorul și nivelul atins sunt afișate pe un LCD 16x2 prin comunicare I2C. Scorul maxim atins de utilizator este salvat în EEPROM și păstrat chiar și după resetare.+====== Sistem interactiv ​de testare a memoriei ​și reacției cu adaptare la lumina ambientală ​======
  
-Scopul proiectului este de a crea o aplicație educativă și interactivă care integrează concepte fundamentale de la laboratoarele de microprocesoare:​ PWM, ADC, I2C și EEPROM. Este o platformă excelentă pentru învățarea programării microcontrolerelor și interacțiunii cu periferice multiple.+===== Introducere =====
  
-== Descriere generală ==+Proiectul este un **sistem interactiv** care testează memoria și viteza de reacție a utilizatorului printr-un joc de tip „Simon Says”, îmbunătățit cu funcționalități moderne. Sistemul generează o secvență luminoasă aleatorie folosind LED-uri colorate, pe care utilizatorul trebuie să o reproducă apăsând butoanele corespunzătoare.
  
-Sistemul ​este construit în jurul plăcii Arduino Uno (ATmega328P) și este format din mai multe componente conectate logic:+Sistemul ​ajustează automat intensitatea LED-urilor în funcție de nivelul jocului ​(folosind PWM) și de lumina ambientală (citită cu un senzor LDR prin ADC). Scorul ​este afișat pe un LCD 16x2 conectat prin interfață I2C, iar scorul maxim este salvat în EEPROM pentru persistență după resetare.
  
-* LED-uri colorate ce indică o secvență aleatorie. +Scopul proiectului este de a crea un sistem embedded educațional care integrează mai multe concepte fundamentale din laboratoare:​ PWM, ADC, I2C, EEPROM, I/O digitalEste util atât pentru ​învățare, cât și ca prototip demonstrativ.
-* Butoane ​pentru ​introducerea secvenței de către utilizator. +
-* Buzzer pasiv pentru semnal sonor în caz de succes sau greșeală. +
-* LCD 16x2 cu I2C pentru afișarea nivelului ​și scorului. +
-* Senzor LDR pentru detectarea luminii ambientale. +
-* Memorie EEPROM internă pentru salvarea scorului maxim.+
  
-== Descriere ​funcțională ==+===== Descriere ​generală =====
  
-Sistemul pornește prin generarea unei secvențe aleatorii de aprindere ​LED-urilor. Utilizatorul trebuie să memoreze această secvență și să o reproducă corect folosind cele patru butoane.+==== Schema bloc sistemului ====
  
-La fiecare nivel reușit, secvența se prelungește și intensitatea LED-urilor crește proporțional,​ controlată prin PWM. În același timp, în funcție de lumina din mediu, citită cu ajutorul senzorului LDR (prin ADC), sistemul ajustează automat luminozitatea LED-urilor pentru vizibilitate optimă.+{{:​pm:​prj2025:​avaduva:​schemablocpm.png?600|}}
  
-În caz de răspuns greșit, buzzer-ul emite un semnal sonor și jocul este resetat. Dacă scorul atins este mai mare decât scorul maxim salvat anterior, acesta este înregistrat în EEPROM pentru a fi reținut permanent.+==== Descriere ====
  
-== Hardware Design ==+Sistemul interactiv include următoarele componente hardware și logica aferentă implementată pe un Arduino Uno:
  
-== Listă de componente utilizate ==+- Secvența de joc este generată de **microcontroller**. 
 +- LED-urile semnalizează vizual secvența. Intensitatea lor este controlată dinamic prin **PWM**. 
 +- Utilizatorul reproduce secvența apăsând pe 4 **butoane tactile**. 
 +- 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ă. 
 +- 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. 
 +- **Scorul maxim** atins este salvat în **EEPROM**, pentru a fi reținut chiar și după oprirea sistemului.
  
-* **Microcontroller:​** Arduino Uno R3 (ATmega328P) +Acest sistem permite o integrare eficientă a conceptelor embedded într-o aplicație interactivăvizuală și auditivă.
-* **Afișaj:​** LCD 16x2 cu adaptor I2C +
-* **LED-uri:** 4 LED-uri colorate de 5mm (roșugalben, verde, albastru) +
-* **Butoane:​** 4 butoane tactile 6x6mm +
-* **Buzzer:** buzzer piezoelectric pasiv (pentru PWM) +
-* **Senzor lumină:** LDR (Light Dependent Resistor) +
-* **Rezistențe:​**+
  
-  * 4x 220Ω (pentru LED-uri) +===== Hardware Design =====
-  * 4x 10kΩ (pentru butoane) +
-  * 1x 10kΩ (pentru divider cu LDR) +
-* **Memorie:​** EEPROM internă (ATmega328P) +
-* **Altele:** Breadboard, fire jumper, cablu USB+
  
-== Concepte din laborator aplicate ​==+==== Listă de componente utilizate ====
  
-* **PWM (Lab 3):** utilizat pentru controlul intensității ​LED-urilor ​și generarea tonurilor cu buzzer-ul. +Microcontroller (Arduino Uno R3 – ATmega328P) 
-* **ADC (Lab 4):** citirea valorii analogice ​de la senzorul LDR pentru ​reglarea luminii în funcție de mediul ambiental. +LCD 16x2 (cu modul I2C) 
-**I2C (Lab 6):** comunicare cu LCD-ul pentru ​afișarea nivelului ​și a scorului. +LED-uri de 5mm (roșu, galben, verde, albastru) 
-* **EEPROM:** salvarea scorului maxim în memorie persistentă internă.+4 butoane tactile de 6x6mm 
 +Buzzer piezoelectric pasiv 
 +LDR (Light Dependent Resistor) 
 +4 rezistențe ​de 220Ω (pentru ​LED-uri) 
 +* 4 rezistențde 10kΩ (pentru butoane) 
 +1 rezistență de 10kΩ (pentru divider LDR) 
 +Breadboard standard 
 +Fire jumper (male-male) 
 +* Cablu USB pentru ​alimentare ​și programare
  
-== Concluzie ​==+===== Software Design =====
  
-Proiectul propus integrează concepte esențiale din domeniul microprocesoarelor într-o aplicație practică, interactivă și educativă. Prin combinarea ​mai multor periferice și tehnologii (PWM, ADC, I2CEEPROM), ​proiectul demonstrează capacitatea ​de a construi ​un sistem ​embedded ​complet, ​cu feedback vizual ​și auditivadaptabil condițiilor de mediu.+<note tip> 
 +Descrierea codului aplicației:​ 
 +  * Dezvoltat în Arduino IDE. 
 +  * 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 utilizatoruluicontrol 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()`,​ `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>​ 
 + 
 +===== Rezultate Obținute ===== 
 + 
 +<note tip> 
 +Sistemul funcționează conform specificațiilor:​ 
 +  * Reacționează corect la inputurile utilizatorului. 
 +  * Reglează automat intensitatea LED-urilor în funcție ​de lumina din mediu. 
 +  * Afișează informațiile corect pe LCD. 
 +  * Reține scorul maxim prin EEPROM. 
 +</​note>​ 
 + 
 +===== Concluzii ===== 
 + 
 +Proiectul ​permis integrarea mai multor concepte fundamentale într-un sistem complet ​funcțional. Am folosit atât intrări și ieșiri digitalecât și semnale analogice (ADC)comunicare serială (I2C) și control prin PWM. EEPROM-ul a fost util pentru persistența datelor. Sistemul poate fi extins cu ușurință, ​de exemplu pentru salvarea scorurilor mai detaliate, conectivitate serială sau integrare cu o aplicație externă. 
 + 
 +===== Download ===== 
 + 
 +<note warning>​ 
 +Toate fișierele se vor include într-o arhivă .zip: 
 +  * Codul sursă `.ino` 
 +  * Schemele bloc și electrice (Fritzing/​Tinkercad) 
 +  * README cu instrucțiuni de rulare și montaj 
 +  * Eventual capturi de ecran cu funcționarea sistemului 
 +Se vor încărca în namespace-ul personal. 
 +</​note>​ 
 + 
 +===== Jurnal ===== 
 + 
 +<note tip> 
 +Zilele în care s-au realizat: 
 +  * Etapa 1 – definirea componentelor și scrierea logicii de bază 
 +  * Etapa 2 – integrarea LCD, PWM și LDR 
 +  * Etapa 3 – EEPROM și testare generală 
 +  * Etapa 4 – scrierea documentației și organizarea fișierelor 
 +</​note>​ 
 + 
 +===== Bibliografie/​Resurse ===== 
 + 
 +<​note>​ 
 +**Resurse Hardware:​** 
 +  * [ATmega328P Datasheet](https://​ww1.microchip.com/​downloads/​en/​DeviceDoc/​Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf) 
 +  * [Fritzing - realizare schemă electrică](https://​fritzing.org/​) 
 + 
 +**Resurse Software:​** 
 + 
 +* [Arduino IDE](https://​www.arduino.cc/​en/​software) 
 +* [LiquidCrystal\_I2C Library](https://​github.com/​johnrickman/​LiquidCrystal_I2C) 
 +* [EEPROM Library](https://​www.arduino.cc/​en/​Reference/​EEPROM) 
 + 
 +  </​note>​ 
 + 
 +<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
  
  
pm/prj2025/avaduva/andreea_irina.iurea.1746994714.txt.gz · Last modified: 2025/05/11 23:18 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