Introducere

Jocul Pong a fost inventat in anul 1972 de catre fondatorii firmei Atari, si a devenit in scurt timp primul joc electronic care a avut o popularitate foarte mare atat in versiunea arcade cat si in versiunea pentru console. Jocul este jucat de doua persoane, fiecare controland cate una din paletele care se deplaseaza pe marginile stanga si dreapta ale ecranului. Scopul unui jucator este sa nu permita bilei care ricoseaza din marginile superioare si din palete sa depaseasca propria paleta,incercand in acelasi timp sa trimita bila dincolo de paleta adversarului.

Descriere generala

  • Proiectul are ca scop implementarea jocului Pong.
  • Afisarea se face pe un ecran LCD PCD8544 de Nokia 3310, cu o rezolutie de 84*48 pixeli.
  • Se vor emite sunete cu ajutorul difuzorului aceluiasi telefon.
  • Modul de joc este Player1 vs. Player2.
  • Comunicatia se realizeaza prin port serial, cei doi jucatori folosind Hyperterminal.

Schema bloc a modulelor hardware:

Hardware Design

Lista de piese

  • Ecran Nokia 3310 - PCD8544 (48×84 pixels matrix LCD)
  • Difuzor de Nokia 3310
  • 2 x condensatori 10uF
  • rezistente - 5 x 3k3, 5 x 1k7

Scheme electrice

Explicatii schema

  • Pentru ca tensiunea de alimentare pentru LCD este de 3.3V am folosit doua diode 1N4148 legate in serie intre alimentarea la 5V si cea la 3V3.
  • Pentru tensiunile de input pentru LCD am folosit divizor de tensiune.
  • Am folosit o placuta imprimata pentru a conecta LCD-ul, acesta avand pinii foarte apropiati.
  • Pe aceasta placuta imprimata exista si un mini-circuit pentru conectarea difuzorului de Nokia 3310.
  • LCD-ul are urmatorul pinout:
    • 1 - VDD – Input Voltage
    • 2 - SCK – Serial Clock
    • 3 - SDI – Serial Data Input
    • 4 - D/C – Data/Command Input
    • 5 - SCE – Chip Select
    • 6 - GND - Ground
    • 7 - VOUT – VLCD
    • 8 - RES – Reset
  • In realitate ei sunt in urmatoare ordine :RST,VOUT,GND,SCE,D/C,SDIN,CLK,VDD(3,3V) (pe schema mea, de sus in jos)

Software Design

Am implementat un soft perfect functional. O secventa de rulare in Proteus poate fi observata mai jos:

Testare:

  • Pentru simulare si testare am folosit Proteus 7

Mentiuni soft

  • Am folosit driverul pentru displayul de Nokia de pe 37
  • In fisierul PCD8544.c am adaugat functii necesare jocului:
    • void initialize(void); → initializare joc
    • void LCD_drawbat1(int length, int yup); → desenare paleta stanga
    • void LCD_drawbat2(int length, int yup); → desenare paleta dreapta
    • void LCD_drawball(); → desenare minge
    • void LCD_clearball(); → stergere minge
    • void movebat (char input); → miscarea unei palete in functie de tasta apasata (Player1 - 'w'(sus),'s'(jos),Player2 - 'o'(sus),'k'(jos))
    • void LCD_clearbat1(int length, int yup); → stergere paleta stanga
    • void LCD_clearbat2(int length, int yup); → stergere paleta dreapta
    • void moveball(void); → functia ce implementeaza miscarea mingii
    • void physics(void); → functie pentru interactiunea mingii cu marginile terenului si cu paletele

Mediu de dezvoltare

  • Editor: Programmer's Notepad[WinAVR]
  • Limbaj: C
  • Build: make
  • SO: Windows 7
  • Programare placuta: avrusbboot

Librarii 3-rd party:

  • Driver pentru LCD:
    • implementeaza protocolul SPI 'by hand'

Poze

Cod

Bibliografie / Resurse

Contact

Presura Oana 333 CC , presura.oana@gmail.com
pm/prj2010/avoinescu/ping-pong.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