Table of Contents

Marius AVRAM - PONG

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Scurtă prezentare:

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:

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

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

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:

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

Download

pong_surse.zip

Bibliografie/Resurse