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 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 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 16×2 conectat prin interfață I2C, iar scorul maxim este salvat în EEPROM pentru persistență după resetare.

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 digital. Este util atât pentru învățare, cât și ca prototip demonstrativ.

Descriere generală

Schema bloc a sistemului

Descriere

Sistemul interactiv include următoarele componente hardware și logica aferentă implementată pe un Arduino Uno:

- 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 16×2 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.

Acest sistem permite o integrare eficientă a conceptelor embedded într-o aplicație interactivă, vizuală și auditivă.

Hardware Design

Listă de componente utilizate

* Microcontroller (Arduino Uno R3 – ATmega328P) * LCD 16×2 (cu modul I2C) * 4 LED-uri de 5mm (roșu, galben, verde, albastru) * 4 butoane tactile de 6x6mm * Buzzer piezoelectric pasiv * LDR (Light Dependent Resistor) * 4 rezistențe de 220Ω (pentru LED-uri) * 4 rezistențe de 10kΩ (pentru butoane) * 1 rezistență de 10kΩ (pentru divider LDR) * Breadboard standard * Fire jumper (male-male) * Cablu USB pentru alimentare și programare

Software Design

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 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()`, `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

Rezultate Obținute

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.

Concluzii

Proiectul a permis integrarea mai multor concepte fundamentale într-un sistem complet funcțional. Am folosit atât intrări și ieșiri digitale, câ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

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.

Jurnal

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

Bibliografie/Resurse

Resurse Hardware:

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>

Export to PDF

pm/prj2025/avaduva/andreea_irina.iurea.txt · Last modified: 2025/05/25 23:31 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