This shows you the differences between two versions of the page.
|
pm:prj2026:cezar.zlatea:razvan.bercia [2026/05/09 21:59] razvan.bercia |
pm:prj2026:cezar.zlatea:razvan.bercia [2026/05/09 22:31] (current) razvan.bercia |
||
|---|---|---|---|
| Line 5: | Line 5: | ||
| Proiectul consta in realizarea unei console embedded simple care ruleaza jocul Space Invaders pe un microcontroler ATmega328P Xplained Mini. | 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 128x64, 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. | + | Jocul va fi afisat pe un ecran TFT SPI de 2.4 inch, cu rezolutie 240x320 pixeli si driver ST7789V. Deoarece display-ul foloseste semnale logice de 3.3V, voi folosi un level shifter pentru adaptarea semnalelor dintre microcontroler si ecran. |
| + | |||
| + | 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. | 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. | ||
| Line 13: | Line 15: | ||
| Sistemul este construit in jurul placii ATmega328P Xplained Mini, care controleaza toate componentele proiectului. | 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. | + | 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 TFT 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. | 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. | ||
| + | |||
| + | Level shifter-ul va fi folosit intre microcontroler si display pentru a adapta semnalele SPI/control de la 5V la 3.3V. | ||
| ==== Schema bloc ==== | ==== Schema bloc ==== | ||
| Line 23: | Line 27: | ||
| | ATmega328P Xplained Mini | | | ATmega328P Xplained Mini | | ||
| +---------------------------+ | +---------------------------+ | ||
| - | | | | | + | | | | | |
| - | | | | | + | | | | | |
| - | v v v | + | v v v v |
| - | +------+ +-------+ +--------+ | + | +------+ +---------+ +--------+ +------------------+ |
| - | | OLED | |Button | | Buzzer | | + | | GPIO | | Butoane | | Buzzer | | Potentiometru | |
| - | +------+ +-------+ +--------+ | + | +------+ +---------+ +--------+ +------------------+ |
| - | | | + | | | |
| - | v | + | v v |
| - | +-------------+ | + | +-----------+ +--------------------+ |
| - | | Afisare joc | | + | | 3 LED-uri | | ADC - dificultate | |
| - | +-------------+ | + | +-----------+ +--------------------+ |
| - | +------------------+ +------------------+ | ||
| - | | Potentiometru | ---> | ADC - dificultate| | ||
| - | +------------------+ +------------------+ | ||
| - | +------------------+ | + | +---------------------------+ |
| - | | 3 LED-uri | | + | | ATmega328P Xplained Mini | |
| - | | status / vieti | | + | +---------------------------+ |
| - | +------------------+ | + | | |
| + | | SPI/control 5V | ||
| + | v | ||
| + | +---------------------------+ | ||
| + | | Level shifter 5V -> 3.3V | | ||
| + | +---------------------------+ | ||
| + | | | ||
| + | | SPI/control 3.3V | ||
| + | v | ||
| + | +---------------------------+ | ||
| + | | TFT SPI 2.4 inch ST7789V | | ||
| + | | 240x320 pixeli | | ||
| + | +---------------------------+ | ||
| + | | | ||
| + | v | ||
| + | +---------------------------+ | ||
| + | | Afisare joc Space Invaders| | ||
| + | +---------------------------+ | ||
| </code> | </code> | ||
| Line 50: | Line 68: | ||
| * ATmega328P Xplained Mini | * ATmega328P Xplained Mini | ||
| - | * OLED SSD1306 128x64 I2C 0.96 inch | + | * Display TFT SPI 2.4 inch, 240x320 pixeli, driver ST7789V |
| + | * Level shifter logic 5V -> 3.3V | ||
| * 5 butoane tactile | * 5 butoane tactile | ||
| * buzzer piezo pasiv | * buzzer piezo pasiv | ||
| Line 63: | Line 82: | ||
| ^ Componenta ^ Pin microcontroler ^ Rol ^ | ^ Componenta ^ Pin microcontroler ^ Rol ^ | ||
| - | | OLED SDA | PC4 / SDA | comunicatie I2C | | + | | TFT SCK | PB5 / SCK | comunicatie SPI, prin level shifter | |
| - | | OLED SCL | PC5 / SCL | comunicatie I2C | | + | | TFT MOSI / SDA | PB3 / MOSI | comunicatie SPI, prin level shifter | |
| + | | TFT CS | PC1 | selectie display, prin level shifter | | ||
| + | | TFT DC / A0 | PC2 | comanda/date display, prin level shifter | | ||
| + | | TFT RST / RES | PC3 | reset display, prin level shifter | | ||
| | Potentiometru | PC0 / ADC0 | citire dificultate | | | Potentiometru | PC0 / ADC0 | citire dificultate | | ||
| | Buzzer pasiv | PB1 | feedback sonor | | | Buzzer pasiv | PB1 | feedback sonor | | ||
| Line 76: | Line 98: | ||
| | LED 3 | PD7 | status/game over | | | 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. | + | Display-ul TFT va comunica prin SPI, folosind pinii SCK si MOSI ai microcontrolerului, impreuna cu pini suplimentari pentru CS, DC si RST. Deoarece display-ul foloseste logica de 3.3V, semnalele dintre ATmega328P si display vor trece printr-un level shifter. |
| + | |||
| + | 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. | TODO: Schema electrica finala va fi adaugata dupa realizarea montajului. | ||
| Line 86: | Line 110: | ||
| Functionalitati planificate: | Functionalitati planificate: | ||
| - | * initializarea ecranului OLED | + | * initializarea ecranului TFT |
| * afisarea meniului si a zonei de joc | * afisarea meniului si a zonei de joc | ||
| * citirea butoanelor | * citirea butoanelor | ||
| Line 100: | Line 124: | ||
| Jocul va avea o bucla principala in care se citesc intrarile, se actualizeaza starea jocului si se redeseneaza ecranul. | Jocul va avea o bucla principala in care se citesc intrarile, se actualizeaza starea jocului si se redeseneaza ecranul. | ||
| + | |||
| + | Pentru a evita consumul mare de memorie, jocul nu va folosi un buffer complet pentru ecran. Elementele grafice vor fi desenate direct pe display, iar la fiecare actualizare se vor sterge si redesena doar zonele care se modifica. | ||
| ===== Rezultate Obtinute ===== | ===== Rezultate Obtinute ===== | ||