This is an old revision of the document!
Microcontroler - Arduino Nano: Arduino Nano va acționa ca unitatea principală de control a întregului sistem. Acesta va gestiona inputurile de la butoane, va rula jocul și va controla afișajul OLED/TFT, iar prin intermediul unui buzzer va emite sunete.
Display OLED/TFT (SPI/I2C): Display-ul va fi folosit pentru a reda grafica jocurilor. Acesta va comunica cu Arduino prin SPI sau I2C, în funcție de tipul de display ales.
Butonul D-pad (4 direcții) și 2 butoane A/B: Butoanele vor fi folosite pentru a controla mișcarea (sus, jos, stânga, dreapta) și acțiunile în joc (ex: sări, trage).
Buzzer: Buzzer-ul va emite sunete pentru diverse evenimente din joc (ex: când se câștigă un nivel sau când apare o coliziune).
Card SD: Intr-o varianta de optimizare a fost atasat si un card SD in vederea incadrarii tuturor jocurilor in acelasi “cod”, fara reusita insa.
Codul jocurilor (Breakout, Space Invaders, Super Mario): Codul jocurilor va fi stocat în memoria flash a Arduino-ului și va interacționa cu hardware-ul pentru a genera jocuri interactive. Nivelele și grafica vor fi stocate în PROGMEM pentru a economisi memoria RAM.
Utilizatorul va putea selecta folosind butonul A jocul pe care il doresc si apoi va rula ca variantele originale.
1. Descrierea hardware-ului
Arduino UNO Microcontroller: ATmega328P
RAM: 2KB, Flash: 32KB
Tensiune operare: 5V
Interfețe folosite:
I2C: pentru display
SPI: pentru modulul SD card
Display OLED 128×64 (I2C) Model: SSD1306
Rezoluție: 128×64 pixeli
Interfață: I2C
Adresă implicită: 0x3C
Pini folosiți:
SDA → A4
SCL → A5
Modul SD Card (SPI) Interfață: SPI
Suportă FAT16/FAT32
Pini folosiți:
CS (Chip Select) → D10
MOSI → D11
MISO → D12
SCK → D13
2. Distribuția pinilor Arduino
3. Justificare
🔌 1. OLED Display 128×64 (SSD1306) Interfață: I2C (Inter-Integrated Circuit)
Pini folosiți:
SDA → A4 (Serial Data)
SCL → A5 (Serial Clock)
De ce pe acești pini?
Pe Arduino Uno, interfața I2C este hardware-mapată exclusiv pe pinii A4 (SDA) și A5 (SCL). Nu pot fi schimbați fără librării speciale.
I2C permite conectarea mai multor dispozitive pe aceeași magistrală (display, senzori etc.) – eficient în proiecte cu pini limitați.
💾 Modul Card SD (cu interfață SPI) Interfață: SPI (Serial Peripheral Interface)
Pini folosiți (standard SPI pe Arduino Uno):
MOSI → D11 (Master Out Slave In – date trimise de Arduino)
MISO → D12 (Master In Slave Out – date primite de la SD)
SCK → D13 (Serial Clock – semnal de ceas)
CS → D10 (Chip Select – activare SD)
De ce pe acești pini?
Pe Arduino Uno, interfața SPI este hardware-mapată pe pinii D11, D12, D13.
CS (Chip Select) poate fi orice pin digital liber, dar convențional este D10 pentru compatibilitate cu librăriile.
4. Galerie Proiect
Proiectul este implementat ca un sistem de gaming portabil cu următoarele componente principale:
Meniu Principal (`menu/`): - Implementat folosind Arduino și un display OLED SSD1306 - Oferă o interfață grafică pentru selecția jocurilor - Include efecte sonore pentru feedback - Gestionează tranzițiile între diferite stări (boot, meniu, jocuri)
Cele Trei Jocuri: 1. Joc1 (Super Mario):
2. Joc2 (Space Invaders):
3. Joc3 (Breakout):
* 2. Biblioteci Folosite și Motivația Alegerii
1. Adafruit_GFX și Adafruit_SSD1306:
2. Wire.h:
* 3. Elementul de Noutate
Elementul de noutate al proiectului constă în: - Integrarea a trei jocuri clasice într-un singur sistem portabil - Implementarea unui meniu interactiv cu feedback sonor - Sistem de control unificat pentru toate jocurile - Adaptarea jocurilor pentru un display OLED de dimensiuni reduse
* 4. Utilizarea Funcționalităților din Laborator
Funcționalitățile din laborator sunt utilizate în următoarele moduri: 1. Controlul I/O:
2. Comunicare Serială:
3. Gestionarea Muzica:
* 5. Scheletul Proiectului și Interacțiunea
Arhitectura Software: 1. Sistem de Stări:
2. Interacțiunea între Componente:
3. Validarea Funcționalităților:
* Concluzie
Proiectul demonstrează o implementare software robustă care integrează multiple jocuri într-un sistem portabil. Arhitectura modulară permite ușoara adăugare de noi jocuri sau funcționalități. Sistemul de meniu oferă o experiență de utilizare intuitivă, iar implementarea hardware-ului este optimizată pentru performanță pe platforma Arduino.
DE FACUT: Implementat uniform codul pentru a nu mai avea module si sa fie totul deodata
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.