Miu Daniel
Grupa 331CC
Titlul: The Pong Accelerator - Not just any Pong, but The Pong Accelerator
Proiectul se bazeaza pe combinarea dintre o matrice de leduri de 8×8 si un accelerometru, care impreuna cu microcontrolerul ATmega16 vor da nastere la un joc fun de Pong. Ideea mi-a venit dupa ce am gasit pe Youtube urmatorul filmulet. Pentru a misca “paleta” jocului se va inclina spre stanga sau spre dreapta placuta pentru a da un impuls “mingii”. Castiga cel care reuseste sa inscrie un “gol” adversarului. Jocul mi se pare a fi util din punct de vedere educational, demonstreaza felul in care putem porni de la cel mai jos nivel si reusim in final sa realizam o aplicatie interesanta. Totodata jocul Pong este foarte distractiv.
Schema bloc folosita pentru proiect este:
Algoritmul gandit de mine pentru proiect a fost urmatorul: voi primi ca input date de la accelerometru, aceste date vor fi ulterior prelucrate, ca apoi rezultatul acestor date sa fie transmise mai departe ca output-ul microcontrolerului pentru matricea de leduri (deci ca input pentru matricea de leduri). Din considerente de timp am ales sa nu realizez un model A.I. pentru joc, astfel partida de Pong se va disputa intre doi “human players”. Regulile jocului au fost explicate in partea de Introducere.
Update: Deoarece dupa ce initial comandasem accelerometru, ca apoi sa mi se spuna prin telefon ca acesta nu mai este pe stoc si ca as putea reveni in doua saptamani (cand eu mai aveam aproximativ o saptamana pana la deadline), m-am decis sa inlocuiesc accelerometrul cu butoane. Astfel schema bloc se modifica in partea acceleroemtrului: inputul pe care microcontrolerul il primea de la acesta, va fi inlocuit cu semnalele date de butoane. Regulile jocului raman in schimb aceleasi, doar miscarea paletei se modifica, acum se apasa pe butonul din stanga pentru a muta paleta in aceasta directie, respectiv pe cel din dreapta pentru a-l muta catre dreapta.
Lista de componente pentru aceasta etapa este urmatoarea:
Componentele au fost cumparate de la magazinul Conex
Matricea de leduri:
Rezistentele si circuitul integrat:
Accelerometrul are urmatoarele caracteristici:
PCB-ul (recomandat de datasheet-ul accelerometrului) pentru conexiunea dintre accelerometru si microcontroler este:
Schema (realizata in Eagle CAD) pentru partea de conexiune dintre matrice de leduri, integrat si rezistenta este urmatoarea:
Dupa cum se poate observa din schema am conectat la portul C al microcontrolerului matricea de leduri, iar la portul B circuitul integrat. Pentru a evita arderea ledurilor, am conectat pentru fiecare rand de leduri cate o rezistenta de 220 ohmi.
Schema din Eagle pentru accelerometru si microcontroler este (accelerometrul MMA7260QT nu l-am gasit in bibliotecile default din Eagle asa ca am facut eu o biblioteca cu acest simbol dupa specificatiile din datasheet):
Schema dintre butoane si microcontroler (realizata dupa ce am aflat ca nu mai pot achizitiona in timp util accelerometrul):
Pentru implementarea jocului voi folosi limbajul de programare C si editorul Programmer's Notepad. M-am gandit sa ma folosesc de o matrice de 8×8 pe care la inceput o voi initializa cu valori de 0. Astfel valoarea 0 este echivalent cu starea de led stins, iar valoarea 1 cu starea led aprins. Din cauza faptului ca nu mai dispun de accelerometru voi folosi doua butoane, cel de-al treilea fiind lipt pe placuta doar pentru testare. Asadar apasarea butonului din stanga va schimba starea configuratiei de pe placuta prin mutarea paletei cu o casuta (un led) in stanga, iar apasarea butonului din dreapta va realiza contrariul. Din cauza lipsei de spatiu nu voi memora scorul pentru ca nu as avea unde sa-l afisez.
Rezultatele obtinute la etapa 1:
Rezultatele obtinute la etapa 2:
Din pacate nu am mai reusit sa implementez codul pentru joc. Cu toate astea sper ca la anul un alt student imi va duce micul proiect la bun sfarsit, si totodata sper ca o sa-i soseasca accelerometrul in timpu util :) .