RetroPixel Game Hub aduce la viață o mică consolă de jocuri retro pe baza platformei Arduino UNO, combinând jocuri clasice de logică și reflexe într-o singură interfață vizuală minimalistă: o matrice LED 8×8. Ideea pornește din dorința de a valorifica puterea Arduino în scopuri creative și recreative, oferind utilizatorului o experiență interactivă și nostalgică, cu o interfață simplă și ușor de folosit.
Utilizatorul poate naviga printr-un meniu intuitiv și poate selecta dintre mai multe jocuri:
• Snake – versiunea clasică, în care șarpele trebuie să mănânce și să evite coliziunile. • Avoid Falling Lines – un joc de reflexe, unde trebuie să te ferești de linii verticale care cad. • Memory Game – un joc de memorie vizuală, unde utilizatorul trebuie să reproducă o secvență de lumini.
Proiectul meu este dezvoltat pe o placă de dezvoltare Arduino UNO și are ca scop crearea unei mini-consolă retro, care integrează mai multe jocuri într-o singură interfață hardware.
Interfața vizuală principală este o matrice LED 8×8, care oferă o reprezentare minimalistă, dar eficientă, a fiecărui joc în parte. Jocurile sunt selectabile dintr-un meniu afișat separat pe un ecran LCD (tip 16×2), care este controlat de către utilizator prin intermediul a patru butoane dedicate: sus, jos, select și înapoi. Această abordare permite o interacțiune intuitivă și o separare clară între funcțiile de navigare și cele de joc propriu-zis.
Jocurile incluse în această mini-consolă sunt:
• Snake – versiunea clasică, în care jucătorul controlează un șarpe și încearcă să mănânce hrană pentru a crește, evitând coliziunile cu propriul corp. Matricea LED afișează în timp real mișcările șarpelui, iar joystickul permite controlul acestuia în patru direcții. Dacă șarpele iese de pe o margine, el reapare pe partea opusă a ecranului, ceea ce adaugă un plus de dinamică jocului. • Avoid Falling Lines – un joc de reflexe rapide, în care jucătorul controlează un punct care trebuie să se ferească de linii verticale care „cad” din partea de sus a matricei. Scopul este de a evita cât mai multe linii consecutive, crescând scorul odată cu fiecare evitare reușită. Jocul devine treptat mai dificil, pe măsură ce viteza liniilor crește. • Memory Game – un joc de memorie vizuală, în care utilizatorul trebuie să reproducă corect o secvență luminoasă afișată pe matrice. La fiecare rundă, secvența devine mai lungă și mai complexă. Dacă utilizatorul greșește ordinea, jocul se termină și scorul este afișat.
Pe lângă interacțiunea vizuală, proiectul include posibilitatea de a salva scoruri sau de a accesa configurații dintr-un modul SD card.
Un alt aspect important este feedback-ul audio. Un buzzer conectat la placă oferă sunete caracteristice pentru fiecare acțiune importantă: selecția din meniu, atingerea unui obstacol, reușita sau eșecul în jocuri. Acest element contribuie la crearea unei atmosfere de tip arcade.
Prin combinarea unui meniu clar și a mai multor jocuri dinamice, proiectul reușește să aducă împreună atât partea de dezvoltare software (cod Arduino structurat pe stări), cât și hardware (conectivitate între componente multiple), devenind astfel un exemplu complet de proiect integrat, ideal pentru învățare și divertisment.
Din păcate, LCD-ul pe care l-am primit nu funcționează, așa că am comandat altul…
• 5V (folosit pentru alimentarea componentelor care necesită tensiune constantă) • GND (comun tuturor componentelor, asigurând referința de tensiune)
• SDA (Serial Data) -> A4 • - linia de date pentru protocolul I2C (permite transferul datelor între Arduino și LCD) • SCL (Serial Clock) -> A5: • - linia de ceas pentru transmiterea sincronizată a datelor între dispozitivele I2C
• conexiune la pini digitali (D4-D7): • - folosiți pentru a detecta apăsările de butoane • folosire de rezistențe 10kΩ: • - folosite ca pull-down pentru a menține starea LOW în absența apăsării
• CS (Chip Select) -> D8: • - activează comunicarea SPI pentru matricea LED • CLK (Clock) -> D9: • - linia de ceas pentru transmiterea sincronizată a datelor • DIN (Data In) -> D10: • - linie de date pentru trimiterea comenzilor către matrice
• VRx -> A0 și VRy -> A1: • - citirea valorilor analogice de la potențiometrele din joystick • - returnează valori între 0 și 1023, corespunzând deplasării pe axe • SW -> D2: • - detectează apăsarea butonului joystick-ului (HIGH/LOW)
• CS (Chip Select) - D3: • - activează comunicarea SPI pentru SD Card • MOSI (Master Out Slave In) -> D11: • - se transmit date de la Arduino la modulul SD • MISO (Master In Slave Out) -> D12: • - se transmit date de la modulul SD la Arduino • SCK (Serial Clock) -> D13: • - linia de ceas pentru transmiterea sincronizată a datelor
• conexiune la pin analogic (A3): • - controlul sunetului prin generarea de tonuri cu funcția tone() din Arduino
Mediu de Dezvolate: Arduino IDE
Proiectul RetroPixel Game Hub se remarcă prin realizarea unei unități modulare de tip consolă retro, care oferă o experiență completă de joc într-un format compact și extensibil.
Principalele puncte de interes ale proiectului meu sunt:
• integrarea coerentă a mai multor componente hardware într-un sistem unitar: ecran LCD pentru meniu și scor, matrice LED pentru gameplay, butoane și joystick pentru control, buzzer pentru sunete • separarea clară a funcționalităților între interfața informativă - meniul (LCD) și mediul de joc (matrice LED), pentru o experiență fluentă și intuitivă • suită de 3 jocuri, dintre care jucătorul alege pe care dorește să îl joace • arhitectură software modulară, ce permite adăugarea rapidă de jocuri și funcționalități suplimentare fără a modifica structura de bază • combinație de stil retro și funcționalități moderne
În cadrul proiectului meu, am folosit următoarele biblioteci:
• #include <LiquidCrystal_I2C.h> - oferă o interfață ușor de folosit pentru controlul unui ecran LCD cu interfață I2C (folosită pentru a realiza interfața informativă - meniul) • #include <LedControl.h> - oferă o interfață ușor de folosit pentru controlul matricei LED 8x8 bazată pe MAX7219, permițând chiar controlul individual al fiecărui LED din matrice (folosită pentru a realiza mediul de joc) • #include <SPI.h> - oferă utilitate pentru comunicare prin protocolul SPI (folosită în comunicarea cu SD card) • #include <SD.h> - oferă utilitate în manipularea fișierelor de pe SD card (folosită pentru salvarea de date pe SD card)
* Laboratorul 0
• am folosit Serial.begin(9600) pentru a inițializa comunicarea serială • am utilizat Serial.print() pentru a verifica inițializarea componentelor externe (LCD, matrice LED, SD card), și pentru a testa valorile de la butoane și joystick
* Laboratorul 1
• am configurat pinii butoanelor (inclusiv cel al joystick-ului) și buzzer-ului cu pinMode() (INPUT / OUTPUT) • am citit stările pinilor butoanelor (inclusiv cel al joystick-ului) cu digitalRead() pentru navigarea prin meniu și controlul în jocuri
* Laboratorul 3
• am folosit tone(pin, frecvență) pentru a genera sunete în meniu și în timpul jocurilor
* Laboratorul 4
• am citit pozițiile joystick-ului cu analogRead() pe axe X și Y, apoi am comparat valorile cu praguri pentru a detecta direcția mișcării în timpul jocurilor
* Laboratorul 5
• am folosit un SD card pentru salvarea highscore-ului pentru fiecare joc
* Laboratorul 6
• am utilizat biblioteca LiquidCrystal_I2C.h pentru controlul ecranului LCD 16x2 cu modul I2C • am realizat afișările pentru meniu și scor cu lcd.setCursor() și lcd.print()
Proiectul RetroPixel Game Hub este structurat modular, pentru a integra toate funcționalitățile specifice unei mini-console retro:
• interfața informativă (meniul), afișată pe LCD 16x2 I2C - permite alegerea între 3 jocuri (Snake Game, Avoid Falling Lines Game, Memory Game) • controlul în cadrul interfeței informative, realizat prin 4 butoane - permite deplasarea printre jocurile disponibile, selectarea unui joc, și întoarcerea la meniu (în cazul în care am pornit un joc) • mediul de joc, afișat pe o matrice LED MAX7219 8x8 • controlul în cadrul mediului de joc, realizat prin joystick - permite mișcările acceptate în funcție de joc • feedback sonor, realizat cu ajutorul buzzer-ului • mediu de stocare, SD card - permite salvarea highscore-urilor pentru fiecare joc disponibil
Testarea validității interacțiunilor dintre componente s-a realizat pe parcursul dezvoltării software-ului, prin diverse simulări simple de test.
Dezvoltarea proiectului RetroPixel Game Hub a fost o experiență foarte distractivă și educativă. Mi-a plăcut să combin joaca cu învățarea și să văd cum prind viață ideile mele, pas cu pas. Am învățat multe lucruri noi și m-am bucurat de fiecare etapă — de la conectarea componentelor până la scrierea codului și testarea jocurilor.
A fost o provocare plăcută care mi-a arătat cât de mult se poate realiza cu răbdare, creativitate și puțină pasiune pentru tehnologie.
Software-ul este disponibil aici: https://github.com/RazvanSerb/RetroPixel-Game-Hub
06.05.2025 - am creat pagina si am adăugat descrierea generală a proiectului
09.05.2025 - am realizat design-ul circuitului
09.05.2025 - am comandat toate piesele necesare proiectului
12.05.2025 - am asamblat hardware-ul și am testat funcționalitatea pieselor
12.05.2025 - am comandat piesele care necesitau înlocuire
16.05.2025 - am început dezvoltarea software-ului
20.05.2025 - am obținut un software valid
24.05.2025 - am stilizat hardware-ul și am integrat software-ul, obținând un produs finit