This is an old revision of the document!
Reaction Trainer este un joc embedded de testare și antrenare a reflexelor, implementat pe placa ATmega328P-XMINI. Sistemul generează runde în care utilizatorul trebuie să reacționeze cât mai rapid la semnale vizuale afișate pe un LED RGB și la semnale sonore generate de un buzzer pasiv.
Utilizatorul apasă butonul corespunzător semnalului afișat, iar microcontrollerul măsoară timpul de reacție, detectează apăsările greșite sau premature și calculează scorul. Rezultatele rundelor și scorul final sunt transmise către PC prin interfața UART.
Proiectul folosește GPIO pentru butoane și LED RGB, timere pentru măsurarea timpului de reacție, întreruperi pentru detectarea apăsărilor, UART pentru afișarea rezultatelor și un automat finit de stări pentru logica jocului. Dificultatea jocului este reglată cu ajutorul unui potențiometru citit prin ADC.
Sistemul funcționează pe baza plăcii ATmega328P-XMINI, care coordonează logica jocului, citește butoanele, măsoară timpul de reacție și controlează feedback-ul vizual și sonor.
La pornire, sistemul se află în starea de repaus. Utilizatorul poate porni jocul prin apăsarea unui buton sau printr-o comandă trimisă prin UART. După pornire, microcontrollerul generează o rundă de joc: așteaptă un interval de timp, afișează un semnal pe LED-ul RGB și pornește măsurarea timpului. Utilizatorul trebuie să apese butonul corespunzător cât mai repede.
Conectate la placa ATmega328P-XMINI sunt următoarele componente:
Dificultatea jocului este controlată prin potențiometru. Microcontrollerul citește valoarea analogică folosind ADC-ul, iar în funcție de valoarea citită modifică timpul maxim permis pentru reacție sau viteza rundelor. O valoare mică poate corespunde unui mod ușor, iar o valoare mare poate corespunde unui mod mai dificil.
Logica jocului este implementată ca automat finit de stări. Stările principale sunt:
Dacă utilizatorul apasă înainte de apariția semnalului, răspunsul este considerat prematur și runda este marcată greșită. Dacă utilizatorul nu apasă în timpul maxim permis, sistemul marchează runda ca ratată. La finalul tuturor rundelor, scorul total și timpii de reacție sunt transmiși către PC prin UART.
| Componentă | Cantitate | Rol în proiect |
|---|---|---|
| ATmega328P-XMINI | 1 | placa principală de control |
| LED RGB | 1 | feedback vizual pentru semnalele jocului |
| Buzzer pasiv | 1 | feedback sonor pentru start, răspuns corect/greșit și final de rundă |
| Butoane push-button | 3-4 | input pentru start și răspunsurile utilizatorului |
| Potențiometru | 1 | reglarea dificultății jocului prin ADC |
| Rezistențe pentru LED | 3 | limitarea curentului pentru canalele LED-ului RGB |
| Rezistențe pentru butoane | 3-4 | pull-up sau pull-down, dacă nu se folosesc rezistențele interne |
| Breadboard | 1 | realizarea montajului |
| Fire jumper | mai multe | conexiuni între componente |
TODO
28.04.2026 - Alegere temă proiect.
04.05.2026 - Creare pagină documentație.