This is an old revision of the document!
Proiectul consta in realizarea unei console embedded simple care ruleaza jocul Space Invaders pe un microcontroler ATmega328P Xplained Mini.
Jocul va fi afisat pe un ecran OLED SSD1306 128×64, iar utilizatorul va controla nava folosind butoane fizice. Proiectul va include si feedback sonor printr-un buzzer pasiv, un potentiometru pentru reglarea dificultatii si trei LED-uri pentru indicarea starii jocului.
Scopul proiectului este de a realiza un sistem interactiv care combina afisarea grafica, citirea inputului de la utilizator, generarea de sunete si controlul mai multor periferice de catre microcontroler.
Sistemul este construit in jurul placii ATmega328P Xplained Mini, care controleaza toate componentele proiectului.
Utilizatorul va putea muta nava in stanga si in dreapta, va putea trage in inamici si va putea porni/opri sau reseta jocul folosind butoanele tactile. Ecranul OLED va afisa zona de joc, scorul, vietile ramase si starea jocului.
Potentiometrul va fi folosit pentru reglarea dificultatii, de exemplu prin modificarea vitezei cu care se misca inamicii. Buzzerul va oferi feedback sonor pentru actiuni precum tragerea, lovirea unui inamic sau terminarea jocului. Cele trei LED-uri vor fi folosite pentru afisarea vietilor ramase sau pentru stari speciale ale jocului.
+---------------------------+ | ATmega328P Xplained Mini | +---------------------------+ | | | | | | v v v +------+ +-------+ +--------+ | OLED | |Button | | Buzzer | +------+ +-------+ +--------+ | v +-------------+ | Afisare joc | +-------------+ +------------------+ +------------------+ | Potentiometru | ---> | ADC - dificultate| +------------------+ +------------------+ +------------------+ | 3 LED-uri | | status / vieti | +------------------+
| Componenta | Pin microcontroler | Rol |
|---|---|---|
| OLED SDA | PC4 / SDA | comunicatie I2C |
| OLED SCL | PC5 / SCL | comunicatie I2C |
| Potentiometru | PC0 / ADC0 | citire dificultate |
| Buzzer pasiv | PB1 | feedback sonor |
| Buton stanga | PD2 | deplasare nava |
| Buton dreapta | PD3 | deplasare nava |
| Buton tragere | PD4 | tragere proiectil |
| Buton pauza/meniu | PD5 | control joc |
| Buton reset/select | PD6 | resetare/selectare |
| LED 1 | PB0 | viata/status |
| LED 2 | PB2 | viata/status |
| LED 3 | PD7 | status/game over |
Display-ul OLED va comunica prin I2C, folosind pinii SDA si SCL. Butoanele vor fi citite ca intrari digitale. Potentiometrul va fi conectat la o intrare analogica, iar valoarea citita va fi folosita pentru modificarea dificultatii. Buzzerul va fi controlat printr-un pin digital/PWM pentru generarea de sunete simple. LED-urile vor fi conectate prin rezistente de limitare a curentului.
TODO: Schema electrica finala va fi adaugata dupa realizarea montajului.
Codul va implementa logica jocului Space Invaders si controlul componentelor hardware.
Functionalitati planificate:
Jocul va avea o bucla principala in care se citesc intrarile, se actualizeaza starea jocului si se redeseneaza ecranul.
TODO
TODO
TODO
TODO