Proiectul consta intr-un sistem interactiv inspirat de jocurile de pe HumanBenchmark, bazat pe o matrice 3×3 de butoane iluminate. Utilizatorul poate selecta unul dintre cele doua jocuri folosind un display LCD I2C si doua butoane de meniu.
Primul joc presupune memorarea unei secvente de LED-uri aprinse intr-o anumita ordine, pe care utilizatorul trebuie sa o reproduca folosind butoanele corespunzatoare. Lungimea secventei creste progresiv pe masura ce dificultatea creste.
Al doilea joc testeaza memoria vizuala. Mai multe LED-uri se aprind simultan pentru o perioada limitata de timp, iar utilizatorul trebuie sa retina pozitiile acestora si sa le reproduca. Timpul de afisare scade progresiv folosind o functie exponentiala de dificultate.
Sistemul include scor, vieti, highscore si feedback sonor prin buzzer.
Modulele proiectului si modul in care interactioneaza:
La pornire, utilizatorul vede pe LCD cele doua jocuri disponibile si poate selecta unul dintre ele folosind butoanele laterale. Dupa selectare, sistemul afiseaza highscore-ul pentru jocul ales si permite pornirea jocului.
In timpul jocului, LCD-ul afiseaza scorul si numarul de vieti ramase. Utilizatorul are initial 3 vieti, iar la fiecare raspuns gresit pierde o viata si buzzerul emite un semnal sonor. Dificultatea jocurilor creste progresiv prin marirea lungimii secventelor si reducerea timpului de afisare.
| Nr. | Componenta | Cantitate | Rol in proiect | Interfata folosita |
|---|---|---|---|---|
| 1 | ATmega328P Xplained Mini | 1 buc | Unitatea centrala de procesare | - |
| 2 | Display LCD 1602 cu modul I2C | 1 buc | Afisarea meniului, scorului si vietilor | I2C (SDA, SCL) |
| 3 | Butoane iluminate cu LED (verde) | 9 buc | Matricea 3×3 pentru introducerea raspunsurilor | GPIO |
| 4 | Butoane simple PCB 12x12mm | 2 buc | Navigarea in meniu si selectarea jocului | GPIO |
| 5 | Buzzer pasiv 5V | 1 buc | Feedback audio pentru raspunsuri si evenimente | PWM |
| 6 | Rezistoare 220 ohm | 9 buc | Limitarea curentului pentru LED-urile butoanelor | - |
| 7 | Breadboard 830 puncte MB-102 | 1 buc | Distributia alimentarii si conexiunilor | - |
| 8 | Fire jumper tata-tata si mama-tata | 1 set | Realizarea conexiunilor intre componente | - |
Matricea de butoane: Cele 9 butoane sunt organizate intr-o matrice 3×3 folosind 6 pini in loc de 9. Trei pini (PD2, PD3, PD4) controleaza randurile, iar alti trei (PD5, PD6, PD7) controleaza coloanele. La scanare, microcontrollerul pune pe rand fiecare linie la LOW si citeste cele 3 coloane. Daca o coloana citeste LOW, butonul de la intersectia dintre linia activa si acea coloana este apasat. Pinii de coloana folosesc rezistenta pull-up interna a ATmega328P (INPUT_PULLUP).
LED-urile butoanelor: Fiecare LED este controlat individual printr-un pin digital dedicat. Curentul este limitat printr-o rezistenta de 220 ohm montata pe breadboard intre pinul ATmega si pinul LED al butonului.
Alimentare: VCC (5V) si GND de pe placa sunt conectate la liniile de alimentare ale breadboard-ului, de unde sunt distribuite catre toate componentele.
Alocarea pinilor s-a bazat pe arhitectura interna a ATmega328P, rezervand pinii dedicati pentru perifericele hardware specifice.
| Pin ATmega328P | Rol |
|---|---|
| PC4 (SDA) | Display LCD I2C - linia de date |
| PC5 (SCL) | Display LCD I2C - linia de ceas |
| PC3 | Buzzer pasiv |
| PD0 | Buton meniu 1 |
| PD1 | Buton meniu 2 |
| PD2 | Matrice butoane - Rand 1 |
| PD3 | Matrice butoane - Rand 2 |
| PD4 | Matrice butoane - Rand 3 |
| PD5 | Matrice butoane - Coloana 1 |
| PD6 | Matrice butoane - Coloana 2 |
| PD7 | Matrice butoane - Coloana 3 |
| PB0 | LED buton (1,1) |
| PB1 | LED buton (1,2) |
| PB2 | LED buton (1,3) |
| PB3 | LED buton (2,1) |
| PB4 | LED buton (2,2) |
| PB5 | LED buton (2,3) |
| PC0 | LED buton (3,1) |
| PC1 | LED buton (3,2) |
| PC2 | LED buton (3,3) |
(screenshot Tinkercad)