Flavia OPREA (25348) - Nume proiect

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Proiectul meu la PM a constat în implementarea clasicului joc Connect Four pentru doi jucători pe o matrice de LED-uri bicolore. Fiecare jucător are la dispoziție 7 butoane pentru a se “plimba” pe matricea de LED-uri și a plasa bilele de Connect Four. Am pornit de la ideea acestui joc deoarece era unul dintre jocurile mele preferate în copilărie, dar pe care nu îl aveam în format digitial.

Descriere generală

Pentru realizarea jocului am utilizat o matrice de LED-uri bicolore de dimensiune 5×7. Matricea este fixată pe o placă placă de test, împreună cu butoanele și celelalte componente necesare pentru funcționarea întregului joc. Conexiunea între matrice și celelalte componente de pe placa cât și conexiunea între placa de test și placa principală ce conține microcontroller-ul se face cu ajutorul unor fire de legătură.

Comenzile de input sunt date cu ajutorul a 7 butoane. Aceste comenzi de butoane ajung la ATmega324pa, sunt procesate, după care output-ul comenzii este afisat pe matricea de LED-uri.

În continuare, este prezentată schema bloc principală a jocului de la care am plecat.

Hardware Design

Întregul proiect a fost realizat pe o placă de test, fără niciun breadbord. Lista de piese este următoarea :

  • placă de test
  • 7 butoane
  • 10 rezistențe 10kΩ
  • 7 rezistențe 100Ω
  • fire de legătură
  • o matrice de LED-uri bicolore 5×7 Kingbright TBC20-11EGWA

Schematicul hardware realizat în Eagle este următorul :

Software Design

Pentru realizarea programului de Connect Four am folosit următorul algoritm :

  1. iterez prin toate liniile, respectiv coloanele matricei; pentru acest lucru folosesc functia light<COLOR>(linie, coloană)
  2. după ce se pune o piesă pe coloana respectivă verific dacă a câștigat cineva jocul;
  3. dacă cineva a câștigat, atunci cele 4 piese care sunt câștigătoare vor realiza un efect de luminare intermitentă
  4. apoi se poate apăsa butonul 7 pentru începerea unui joc nou
  5. dacă nu a câștigat nimeni la pasul curent, se schimba jucătorul, respectiv culoarea ce va fi pusă pe coloana aleasă de jucatorul advers

Funcțiile folosite / implementate sunt :

  • void enableColumn(int column);
  • void enableLineGreen(int line);
  • void enableLineRed(int line);
  • void lightGreen(int i, int j);
  • void lightRed(int i, int j);
  • void lightOff();
  • int drop(int column);
  • void checkButtons();
  • int checkWin();
  • void drawBoard();

Rezultate Obţinute

flaviaoprea_rez4.jpg flaviaoprea_rez1.jpg flaviaoprea_rez2.jpg flaviaoprea_rez3.jpg

Concluzii

Proiectul mi s-a părut unul interesant, fiind unul din jocurile mele preferate. Din problemele întâmpinate :

  • datorită faptului că nu m-am documentat corespunzător, am pus rezistențe butoanelor de pe placa de test, deși nu trebuia (dar acest lucru nu a afectat cu nimic)
  • la un moment dat plăcuța nu se mai flash-uia
  • am avut un scurt și a trebuit să îl găsesc

Download

Jurnal

Bibliografie/Resurse

Datasheet Kingbright TBC20-11EGWA 9622.pdf

pm/prj2016/ddragomir/2108.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