Marius AVRAM - PONG

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Scurtă prezentare:

  • Proiectul constă în realizarea jocului traditional Pong folosind un ecran de telefon Nokia 3310.
  • Jocul poate fi jucat de doi jucatori la un moment dat.
  • Fiecare jucător are câte două butoane care pot muta platforma proprie sus sau jos.
  • Există o minge care care ricosează atunci când lovește una din platforme sau pereții de sus și jos.
  • Un jucător marchează atunci când oponentul nu reușește să își apere poarta.
  • Scopul proiectului este acela de a te putea distra alaturi de un prieten.

Descriere generală

Schema bloc a sistemului:

Pe plăcuța de test am lipit 6 butoane din care am folosit efectiv doar 5. Inițial apare un ecran de start pentru a împiedica începerea automată a jocului când circuitul este alimentat de la USB. Pentru acesta se folosește un buton separat.

O dată apăsat acel buton apar pe ecran: scorul - în partea de sus, cele două plaftorme și mingea. Mingea va incepe să se miste într-o direcție aleatoare pornind din centrul ecranului. Apoi fiecare jucator folosește propria sa pereche de butoane pentru a mișca platforma sus sau jos, încercând să evite intrarea mingii în propria poartă.

Când un jucător nu reușește să își apere poarta oponentul va primi un punct, iar mingea va porni din nou din centru către jucătorul ce a marcat.

Hardware Design

Listă de componente folosite pentru proiect:

  • Ecran Nokia 3310 - PCD8544
  • 6 butoane
  • 5 rezistențe 1.8k
  • 5 rezistențe 1.8k
  • 2 condesatori 10uF
  • 1 condesator 1uF
  • stabilizator de tensiune 5.0V → 3.3V (LM1084 3.3)

În total nu cred că am dat mai mult de 40 de lei pe componente, deci nu este un proiect care să necesite o investiție foarte mare.

Conexiune pini display:

  • SCLK - PC7
  • SDIN - PC6
  • D/C - PC5
  • SCE - PC4
  • RES - PC3

Display-ul poate folosi orice pini, aceștia putând fi configurați din API-ul acestuia.

Schema circuitului:

Deoarece întreg circuitul este alimentat la 5V, iar ecranul are nevoie de 3.3V a trebuit sa creez cele 5 divizoare de tensiune și să adaug stabilizatorul de tensiune pentru alimentare. Din punct hardware partea cea mai grea a proiectului a fost lipirea firelor pe pinii ecranului deoarece aceștia sunt foarte apropiați și în plus ecranul se poate arde destul de ușor dacă se folosește un letcon prea puternic.

Software Design

  • Mediul de deszvoltare folosit: Programmer's Notepad
  • Compilator: avr-gcc
  • Driverul Quantum Torque

Am folosit LCD driverul Quantum Torque. Ulterior am încercat să folosesc unul care avea implementări pentru mai multe funcții ce permiteau desenarea separată a pixelilor și a unor primitive de genul liniilor sau dreptunghiurilor. Însă cu acesta displayul nu funcționa, de aceea a trebuit să lucrez cu cel anterior.

Pentru a desena o platformă a trebuit să declar un caracter custom. De asemenea am declarat și un caracter custom pentru linie. A trebuit să modific funcția de afisare pentru că aceasta permitea afișarea pe maxim 8 linii de text si nu permitea folosirea unui offset in pixeli pe verticală.

Pe lângă funcțiile existente în API am mai adaugat:

  • void lcd_goto_xy_exact(unsigned char x, unsigned char y);
  • void lcd_chr_unspaced(char chr);
  • void clear_left_column(void);
  • void clear_right_column(void);
  • void draw_platform(void);

Mingea își schimbă direcția la impactul cu platforma în funcție de distanța față de centrul acesteia. Aceasta se poate duce pe 5 direcții diferite după lovire. După ce un jucător marchează 5 puncte jocul se termină și se va afișa pe ecran faptul că unul din cei doi jucători a căștigat. Pentru a reporni jocul trebuie apăsat butonul de reset de pe placuța imprimată.

Întrega sursă se gasește în secțiunea de download.

Rezultate Obţinute

Ansamblul întregului circuit (plăcuță imprimată + plăcuța de test):

Jocul în acțiune:

Concluzii

  • Partea cea mai grea a proiectului a constat în lipirea ecranului.
  • Am obținut ceva funcțional. Chiar merge !
  • Am învățat cum să realizez un proiect de la cap la coadă.

Download

Bibliografie/Resurse

pm/prj2013/schiricescu/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