This is an old revision of the document!


Micro Invaders

Introducere

Prezentarea pe scurt a proiectului:

  • Proiectul constă într-un joc interactiv inspirat de „Chicken Invaders”, cu afișaj pe un ecran LCD, ce poate fi controlat cu ajutorul unui joystick și al unor butoane.
  • Scopul proiectului este de a simula comportamentul unei console de jocuri de tip handheld. Acest concept presupune integrarea tuturor componentelor hardware (microcontrolerul, ecranul, joystick-ul și butoanele) într-un format compact și ergonomic.
  • Ideea proiectului a pornit de la consolele pe care le-am folosit de-a lungul anilor, cum ar fi Nintendo DS sau Steam Deck, și de la un joc clasic al copilăriei mele: “Chicken Invaders”. Practic, mi-am propus să construiesc propria versiune a unei astfel de console, realizată de la zero și la o scară mult mai mică.
  • Proiectul este, de asemenea, un exercițiu bun de optimizare și adaptare a codului unui joc video pentru un microcontroller, care are mai multe limitări (memorie redusă, clock speed scăzut, etc.).

Descriere generală

Jocul este implementat pe microcontroller-ul ATmega328P și include următoarele funcționalități:

  • Afișaj video: Comunicarea cu ecranul LCD se realizează prin protocolul SPI.
  • Controlul mișcării: Coordonatele navei sunt controlate prin joystick. Tensiunile potențiometrelor aferente axelor X și Y sunt convertite în valori numerice prin modulul ADC integrat pe microcontroller.
  • Acțiuni: Butoanele sunt conectate la pinii digitali (GPIO). Pentru a filtra zgomotul mecanic (contact bounce) fără a folosi funcții blocante precum delay(), se utilizează un algoritm de debouncing bazat pe Timere.

Hardware Design

Bill of Materials

Nr. crt. Nume componentă Specificații Cantitate
1 Arduino Nano Placă de dezvoltare bazată pe microcontroller-ul ATmega328P 1
2 Modul ecran LCD Modul LCD de 1.44'' cu SPI și Controller ST7735 (128×128 px) 1
3 Joystick analogic Modul joystick cu 2 potențiometre (axa X, axa Y) 1
4 Buton (Push button) Microîntrerupător tactil 1
5 Breadboard Placă de test 830 de puncte 1
6 Fire de conexiune Fire cu izolație PVC (22AWG) 1 set
7 Cablu USB Pentru alimentare și programare 1

Descriere componente

  • Placa Arduino Nano: Aceasta conține microcontroller-ul ATmega328p care gestionează logica jocului, afișajul pe display și citește inputurile date de joystick și butoane.
  • Ecran LCD: Pe acest ecran va fi afișat jocul “Micro Invaders” prin protocolul SPI.
  • Joystick: Acesta conține 2 potențiometre care determină poziția navei pe ecran prin maparea valorilor sale la coordonatele X și Y.
  • Push button: Folosit pentru a trage cu proiectile către inamici.

Pinout

Componentă Pin Componentă Pin Arduino Nano Port / Registru ATmega328p Descriere
Display LCD VCC 5V Alimentare logică ecran.
GND GND Masă circuit.
SCL Pin 13 PORTB (PB5) Hardware SPI Clock: Sincronizează transferul rapid de date.
SDA Pin 11 PORTB (PB3) Hardware SPI MOSI: Linie master-to-slave pentru trimis pixeli.
RES Pin 9 PORTB (PB1) Reset hardware la inițializarea ecranului.
DC Pin 8 PORTB (PB0) Data/Command: Schimbă starea între comenzi (0) și pixeli (1).
CS Pin 10 PORTB (PB2) Chip Select: Activează/dezactivează magistrala SPI pentru ecran.
BLK 3.3V Alimentare LED Backlight (lumină fundal).
Joystick 5V 5V Alimentare potențiometre interne.
GND GND Referință masă (0V).
VRx Pin A0 ADC0 (Canal 0) Convertor Analog-Digital: Citește poziția X (valori 0-1023).
VRy Pin A1 ADC1 (Canal 1) Convertor Analog-Digital: Citește poziția Y (valori 0-1023).
Push Button Pin 1 Pin 3 PORTD (PD3) Citire rapidă stare buton. Are Pull-up intern activat.
Pin 2 GND Închide circuitul la masă când butonul este apăsat.

Schematic

Demo

Software Design

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR)
  • librării şi surse 3rd-party (e.g. Procyon AVRlib)
  • algoritmi şi structuri pe care plănuiţi să le implementaţi
  • (etapa 3) surse şi funcţii implementate

Mediu de dezvoltare

Aplicația a fost dezvoltată pe VS Code cu extensia PlatformIO.

Librării şi surse 3rd-party

Pentru controlul ecranului TFT și randarea primitivelor grafice, au fost utilizate următoarele librării externe:

  • Adafruit_GFX Library: Oferă funcțiile de bază pentru desenarea figurilor geometrice (linii, dreptunghiuri).
  • Adafruit_ST7735 Library: Asigură comunicarea SPI dintre ATmega328P și modulul LCD ST7735.

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2026/ciprian.popescu0411/alexandru.stoian05.1779157360.txt.gz · Last modified: 2026/05/19 05:22 by alexandru.stoian05
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0