Introducere

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.

Descriere generală

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.

Hardware Design

Lista de componente pentru aceasta etapa este urmatoarea:

  • 8 rezistente a cate 220 ohmi
  • o matrice de leduri din categoria TOM-2088BH-B de 8×8
  • circuitul integrat ULN2804A
  • accelerometrul MMA7260QT - acesta din pacate nu a mai ajuns la timp pentru a fi integrat in proiect
  • 3 butoane care au inlocuit accelerometrul
  • clasicele fire de magistrala si de cablu UTP

Componentele au fost cumparate de la magazinul Conex
Matricea de leduri:

Rezistentele si circuitul integrat:

Accelerometrul are urmatoarele caracteristici:

  • senzitivate de 1.5g/2g/4g/6g
  • consum de 500 uA
  • consum in modul “sleep” 3uA
  • opereaza intre 2.2 V - 3.6 V

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):

Software Design

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.

Rezultate Obţinute

Rezultatele obtinute la etapa 1:

  • Schema fata:

  • Schema verso:

Rezultatele obtinute la etapa 2:

  • Schema fata:

  • Schema verso:

Concluzii

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 :) .

Jurnal

  • imprimare placuta de baza la facultate (Placutiada 2010)
  • lipire placuta de baza
  • testat placuta de baza (totul a fost OK)
  • alegere tema de proiect pentru etapa 2
  • documentare pe internet despre tema de proiect
  • comandare accelerometru
  • cumparat componente de la Conex
  • accelerometru nu a mai sosit, asa ca a fost inlocuit cu butoane
  • lipit placuta pentru etapa 2

Bibliografie/Resurse

pm/prj2010/dtudose/accelopong.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0