Proiectul constă în realizarea unui joc simplificat de tip Chicken Invaders folosind placa de dezvoltare ATmega328P-XMINI și un display LCD1602. Jucătorul controlează o navă aflată pe linia inferioară a ecranului și trebuie să elimine inamicii care apar periodic pe ecran.
Scopul proiectului este implementarea unui sistem embedded interactiv care combină mai multe concepte studiate la laboratorul de Microprocesoare, precum utilizarea timerelor hardware, a întreruperilor, a conversiei analog-digitale (ADC) și a semnalelor PWM.
Consider că acest proiect este util deoarece îmi oferă posibilitatea de a aplica practic noțiunile studiate în laborator într-un proiect interactiv și vizual, apropiat de domeniul jocurilor video, folosind resurse hardware limitate specifice sistemelor embedded.
Arhitectura proiectului este structurată în jurul plăcii de dezvoltare ATmega328P-XMINI. Sistemul este împărțit în mai multe module principale:
Permite controlul navei prin intermediul unui joystick. Poziția navei este citită folosind modulul ADC al microcontrolerului, iar apăsarea joystick-ului este tratată folosind GPIO și întreruperi externe. Un buton tactil suplimentar este utilizat pentru funcțiile de start, restart și pauză.
Microcontrolerul gestionează logica jocului, mișcarea inamicilor, detecția coliziunilor, actualizarea scorului și sincronizarea evenimentelor folosind timere hardware și întreruperi periodice.
Afișarea jocului se realizează pe un display LCD1602 cu interfață I2C, iar efectele sonore sunt generate cu ajutorul unui buzzer pasiv controlat prin PWM. Un LED RGB va fi utilizat pentru semnalizarea anumitor stări ale jocului (hit, game over, pauză etc).
Lista de piese:
| Componentă | Pin componentă | Pin microcontroller |
|---|---|---|
| LCD1602 I2C | SDA | PC4 |
| LCD1602 I2C | SCL | PC5 |
| LCD1602 I2C | VCC | VCC |
| LCD1602 I2C | GND | GND |
| Joystick | VRx | PC0 |
| Joystick | VRy | PC1 |
| Joystick | SW | PD2 |
| Joystick | VCC | VCC |
| Joystick | GND | GND |
| Buzzer pasiv | + | PB1 |
| Buzzer pasiv | - | GND |
| LED RGB | R | PD6 |
| LED RGB | G | PD5 |
| LED RGB | B | PB2 |
| LED RGB | pin comun | GND |
| Buton tactil | semnal | PD3 |
| Buton tactil | al doilea pin | GND |
Proiectul va fi implementat folosind limbajul C și va utiliza perifericele hardware ale microcontrolerului:
TODO
TODO