2012_332AB_P8

Project Name [edit]

  [edit]

I. Project Description

Acest proiect presupune implementarea unui joc de X si 0 cu ajutorul unei placute de test(care realizeaza logica jocului) si a unei matrice de leduri care marcheaza pozitiile celor 9 casute pe care jucatorii le pot completa conform regulilor acestui joc.

Din punct de vedere functional, placa de test comunica serial cu EZ/V3 prin intermediul unui diver de comuicatie seriala(MAX232) primind de la aceasta coordonata casutei ce urmeaza a fii completata. De mentionat, este faptul ca jucatorii
completeaza casutele in mod alternativ acest lucru fiind realizat automat de catre softul implementat pe microcontroller.

Pentru a se putea completa cu X si 0 matricea jocului este utilizata tastatura de pe placa EV/Z3, mai exact cifrele de la 1 la 9. Codurile aferente tastelor care sunt apasate vor fi transmise serial catre placa de test unde vor fi prelucrate de catre programul realizat.

In functie de caracterele primite de la tastatura, programul va aprinde ledul corespunzator. Ledul va ramane aprins sau in mod continuu sau intermitent in functie de litera pe care o utilizaeaza jucatorul curent (pentru primul jucator care completeaza matricea se atribuie litera X iar pentru al doilea jucator litera 0).

In momentul in care un jucator a castigat (a completat o linie, o coloana sau o diagonala) toate cele noua leduri vor afisa litera corespunzatoare jucatorului. De asemena in momentul castigarii pe placa EZ/Z3 va fii afisat un mesaj in care se mentioneaza playerul care a terminat.

II. Project Requirements

Hardware:
Placa de test dezvoltata in jurul microcontrolerului PIC 16F2628A
Placa de test cu 9 leduri (matrice 3x3) pentru afisarea grilei X si 0

Software:
Joc de tip: Player vs Player
Fiecare jucator completeaza alternativ casutele conform regulilor pana in moentul in care unul dintre ei castiga sau nu mai sun casute libere.
Daca un jucator a castigat, atunci cele 9 leduri ii vor afisa litera corespunzatoare iar pe LCD-ul EV/z3 va fi afisat un mesaj corespunzator.

III. User Flow

X si 0 este o placuta de tip test, implementata in cadrul unui proiect. Placuta are rol de amuzament, dar poate avea si rol didactic, intrucat prin reprogramarea microcontrollerului, si a placii EV/Z3 se pot face diferite simulari,  jocuri de lumini si nu in ultimul rand comunicatie seriala. 

IV. Required components

Hardware (Componente Utilizate):

  • 2x 100K/0.25W
  • 1x 100R/0.25W
  • 5x 1MF/50V 4*7mm
  • 2x 47NF/630V NEPOL
  • 1x PUSH BUTTON KRS1273
  • 1x PIC16F628AI/P
  • 1x MAX232 CPE
  • 1x LM7805
  • 2x soclu 18 pini
  • 1x mufa DB9
  • 1x placa test 50x100 pastile
  • 1x  placa test 100x100 pastile
  • 9x Led Rosu 3mm
  • 9x 470/025W

V. Hardware Design

Schema folosita pentru implementarea din punct de vedere hardware a placii de test, este bazata pe modelul oferit ca exemplu in cadrul laboratorului (Afisaj 7 Segmente).

Pentru realizarea jocului modelul initial a fost modificat astfel: s-a eliminat afisajul 7 segmente acesta fiind inlocuit de 9 leduri conectate la 9 dintre pinii microcontrollerului.

VI. Software Design

Program PIC

Celor nou leduri li se asocaiaza 9 pini de control si un vector de 9 componenete (indexul acestui vector este echivalent cu ledurile de la 1 la 9);
Coponentele vectorului iau valori intre zero si doi semnificatia fiind urmatoarea (0 - ledul nu a fost aprins, 1- ledul a fost aprins de primul jucator, 2 ledul a fost aprins de catre al doilea jucator)

Proceduri utilizate pentru realizarea programului:

  • _delay_us - functie de intarziere microsecunde 
  • _delay_ms - functie de intarziere milisecunde
  • genereazap1 - aprinde ledurile asociate jucatorului 1(X).
  • genereazap2 - aprinde ledurile asociate jucatorului 2(0) in mod intermitent.
  • test - verifica dac un jucator a castigat

In main-ul programului in bucla infinita sunt realizate urmatoarele operatii:
-se asteapta primirea unui caracter prin intermediul comunicatiei seriale. In timpul acestei asteptari se animeaza ledurile asociate jucatorului 2 (se aprind si se sting) in timp ce ledurile jucatorului 1 raman aprinse mereu.
-dupa ce se primeste un caracter se verifica daca acesta este cifra. In cazul in care este cifra , se verifica daca pozitia din vector specificata de caracterul receptionat este 0 sau altceva. Dca este 0 atunci ledul va fii activat in conformitate cu tipul de animatie asociata jucatorului curent. In caz contrar jucatorul trebuie sa apese alta tasta.
-ordinea de completare este alternativa incepand cu jucatorul 1.
-la sfarsit se verifica daca verunul dintre jucatori a csatigat jocul. In caz afirmativ se transmite un mesaj de confirmare catre placa.

Program EV/Z3

 Intr-o bucla infintita se asteapta apasarea unui caracter(cifra). Aceasta este prelucrata, preluata intr-un buffer, si apoi codul ASCII al acesteia este trimis prin comunicatia seriala. In cazul in care se primeste un cod de confirmarea a castigarii jocului de catre unul din cei doi jucatori pe LCD va fi afisat un mesaj corespunzator.  

VII. Results

proiect

VIII. Download

After you have presented your project at the laboratory (week 13-14) you will add all your sources here. Any hardware simulation used, code archive and so on.

IX. Status

  • 10.04 - Am cumparat componentele necesare realizarii placutei.
  • 25.04:27.04  - Am lipit componentele pe placuta si am testat circuitul ca sa nu existe scurt circuite.
  • 29.04 - Am inceput programarea PIC-ului pentru joculet si am testat simularea in Proteus care a functionat.
  • 9.05 - Am testat placuta la laborator, insa comunicatia seriala nu a mers. Am verificat placuta si am observat ca pe doua condensatoare de la pinii lui MAX323 nu avem voltajul necesar. Proiectul merge (am realizat un program de test care aprindea ledurile intr-o anumita ordine) insa nu functioneaza comunicatia seriala. 
  • 10.5 Am incercat sa refacem comunicatia seriala insa fara succes.

X. Personal Contribution

 Dascalu Bogdan
  • Implementare program EV/Z3
  • Implementare program PIC
 Mihai Tiberius 
  • Achizitionare componente
  • Implementare hardware a placii de test
 Activitate comuna
  • Debug la placa de test
  • Simulare si testare (Proteus + placuta)