This is an old revision of the document!
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.
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.
Stadiul Actual al Implementarii Circuitul hardware este finalizat si complet functional. Toate componentele din lista de piese au fost interconectate pe un breadboard si conectate la placa de dezvoltare Arduino UNO. Montajul respecta schema electrica si este capabil sa ruleze logica jocului “Pixel Runner”, raspunzand la comenzi si afisand elementele vizuale si auditive conform codului.
Componente Folosite si Rolul Lor:
Descrierea Detaliata a Pinilor Afisaj LCD (I2C):
Pin SDA → Pin A4 (Arduino): Linia de date (Serial Data). Pin SCL → Pin A5 (Arduino): Linia de ceas (Serial Clock). Motivatie: A4 si A5 sunt pinii hardware dedicati pentru comunicatia I2C pe placa Arduino Uno. Utilizarea I2C reduce numarul de pini necesari pentru controlul ecranului de la peste 6 la doar 2. Butoane:
Start/Saritura → Pin Digital 2: Motivatie: Pinul 2 este unul dintre pinii de intrerupere externa pe Arduino Uno. Folosirea unei intreruperi (attachInterrupt) asigura detectarea apasarii butonului instantaneu, fara intarziere, ceea ce este critic pentru o actiune de saritura precisa. Stanga → Pin Digital 3: Dreapta → Pin Digital 4: Motivatie: Acesti pini digitali sunt folositi ca intrari simple. Sunt configurati ca INPUT_PULLUP, eliminand necesitatea rezistentelor externe pentru a mentine o stare logica stabila. LED RGB:
Pin Rosu → Pin Digital 6: Pin Verde → Pin Digital 10: Pin Albastru → Pin Digital 13: Motivatie: Pinii 6 si 10 sunt pini PWM (Pulse Width Modulation), necesari pentru a controla intensitatea fiecarei culori prin functia analogWrite. Pinul 13 este utilizat pentru componenta albastra conform codului furnizat. Buzzer Pasiv:
Iesire → Pin Digital 5: Motivatie: Pinul 5 este un pin PWM, ceea ce il face ideal pentru a genera tonuri de diferite frecvente si durate folosind functia tone(), necesara pentru melodiile si efectele sonore din joc.
Schema electrica:
Circuit design:
Hardware:
Mediu de dezvoltare :
Librării şi surse 3rd-party :
Algoritmi şi structuri implementate :
Functii principale de control al fluxului jocului:
Functii pentru gestionarea interactiunii cu utilizatorul:
Functii pentru mecanica jocului:
Functii de audio si efecte vizuale:
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
Proiectul a integrat cu succes mai multe tehnologii hardware si software pe Arduino, oferind o experienta de joc stabila si interactiva. Toate cerintele de laborator au fost respectate, iar codul este modular si usor de extins. Experienta acumulata este utila pentru proiecte viitoare in domeniul sistemelor embedded.
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.
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.