This is an old revision of the document!
Pixel Runner
Introducere
Pixel Runner este un joc de tip runner inspirat de T-Rex Dino din Chrome, realizat pe Arduino cu LCD, LED RGB, buzzer si mai multe butoane, care testeaza reflexele si atentia utilizatorului prin sarituri peste cactusi ce apar aleatoriu. Ideea proiectului a pornit din dorinta de a transpune o experienta clasica de gaming pe un dispozitiv fizic, dezvoltand atat abilitatile de programare embedded, cat si cele de lucru cu hardware-ul. Jocul este util si distractiv, oferind un mod practic de a invata electronica si programarea, fiind totodata o platforma buna pentru experimente educationale sau extinderi creative de tip meniu, niveluri de dificultate si feedback audio-vizual.
Descriere generala
Implementare joc Pixel Runner pe LCD cu Arduino.
Proiectul foloseste o placa Arduino UNO, un afisaj LCD, LED RGB, buzzer si trei butoane pentru control. Utilizatorul poate selecta nivelul de dificultate si controleaza un dinozaur care trebuie sa sara peste obstacole. LED-ul ofera feedback vizual, iar buzzer-ul reda efecte sonore si melodii de joc. Scorul curent si cel maxim sunt afisate pe ecran, iar meniul interactiv permite navigarea usoara. Jocul este atat distractiv, cat si educativ, ajutand la dezvoltarea abilitatilor de programare si lucru cu hardware-ul Arduino.
Hardware Design
Lista de piese:
3 butoane (Start/Saritura, Stanga, Dreapta)
Placa de dezvoltare Arduino UNO R3
Modul afisaj LCD I2C 16×2
Rezistenta 1.0kΩ
Buzzer pasiv
LED RGB
Schema electrica:
Circuit design:
Hardware:
Software Design
Mediu de dezvoltare :
Librării şi surse 3rd-party :
LiquidCrystal_I2C - Librarie pentru comunicarea cu display-ul LCD prin protocolul I2C, permitand afisarea caracterelor personalizate si a textului pe ecranul 16×2.
EEPROM - Librarie standard Arduino pentru accesarea memoriei non-volatile, folosita la stocarea scorurilor maxime ale utilizatorilor.
Algoritmi şi structuri implementate :
Masina de stari pentru meniuri - Implementeaza navigarea intre diferite ecrane (meniu principal, setari, instructiuni, selectare nivel) folosind aceleasi butoane.
Functii principale de control al fluxului jocului:
setup() - Initializeaza hardware-ul, afisajul si variabilele de joc
loop() - Controleaza starea jocului, verifica timpi si detecteaza input-ul utilizatorului
resetGame() - Reseteaza toate variabilele pentru inceperea unui joc nou
Functii pentru gestionarea interactiunii cu utilizatorul:
showMainMenu(), selectPlayer(), selectLevel(), selectCharacter() - Gestiunea meniurilor
buttonPressed() - Detecteaza apasarea butoanelor cu debouncing
onJumpButtonPress() - Functie de intrerupere pentru butonul de salt
Functii pentru mecanica jocului:
Logica de detectie a coliziunilor implementata in bucla principala
Controlul saltului personajului cu timing bazat pe millis()
Generarea dinamica a obstacolelor cu spatiere si frecventa variabila
Functii de audio si efecte vizuale:
playSound(), playFullMelody(), playGameplayMusic() - Sistemul audio
setRGB() - Controleaza LED-ul RGB pentru feedback vizual
Melodii integrate pentru diferite evenimente din joc
Functii pentru gestionarea memoriei:
Functii pentru economisirea energiei:
Acest cod integreaza in mod eficient multiple tehnologii (GPIO, I2C, Intreruperi, Timere, PWM) pentru a crea o experienta de joc completa pe o platforma cu resurse limitate, demonstrand implementarea practica a conceptelor studiate in laboratoare.
Cod sursa: Pixel Runner GitHub Repository
Rezultate Obtinute
Unordered List ItemProiectul Pixel Runner Game functioneaza complet pe platforma Arduino, cu afisaj LCD I2C, LED RGB, buzzer si butoane.
Unordered List ItemMeniurile sunt intuitive, permit selectarea jucatorului, a nivelului de dificultate si a personajului, precum si accesarea scorurilor si setarilor.
Unordered List ItemJocul ruleaza fluent, cu animatii pentru personaj si obstacole, si cu mecanism de coliziuni functional.
Unordered List ItemSistemul de scoruri maxime functioneaza corect, scorurile fiind salvate si incarcate din EEPROM pentru fiecare profil de jucator.
Unordered List ItemModul sleep reduce consumul energetic, iar sistemul revine rapid la functionare la apasarea oricarui buton.
Unordered List ItemToate efectele sonore si vizuale (melodii, culori LED) se activeaza conform evenimentelor din joc, imbunatatind experienta utilizatorului.
Unordered List ItemSetarile permit activarea/dezactivarea sunetului si resetarea scorurilor fara probleme.
Unordered List ItemCodul este modular si usor de extins sau adaptat pentru alte functionalitati sau platforme.
Unordered List ItemTestele efectuate au demonstrat stabilitatea jocului chiar si dupa utilizare indelungata, fara blocari sau erori.
Unordered List ItemProiectul inglobeaza cu succes cerintele de laborator (GPIO, I2C, intreruperi, timere, PWM), demonstrand integrarea practica a acestora intr-o aplicatie reala.
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
Proiectul utilizeaza concepte studiate in laborator, precum GPIO (interfatarea cu butoane si LED), I2C (comunicarea cu LCD-ul), intreruperi hardware (pentru butonul de salt), PWM (pentru controlul ledului RGB si buzzer), precum si timere software (gestionarea timpului de joc si a animatiilor) – integrand astfel cerintele pentru laboratoare PM.
https://docs.arduino.cc/learn/built-in-libraries/eeprom/
Export to PDF