Cristiana PREDOIU - Connect 4

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Connect 4 este un joc care presupune existenţa a doi adversari, fiecare alegându-şi o culoare. Aceştia vor trebui să dea drumul pe rând la un disc colorat pe una din cele 7 coloane ale tablei de joc, iar discul va ocupa ultima poziţie liberă din cele 5 disponibile pe fiecare coloană.

Scopul jocului este să conectezi 4 discuri proprii (de aceeaşi culoare) pe verticală, pe orizontală sau pe diagonală înaintea oponentului.

Descriere generală

Pentru realizarea proiectului, am pornit de la ideea prezentată mai sus. Pentru a reprezenta tabla de joc, am ales să folosesc o matrice bicoloră de LED-uri. Cele două culori disponibile ale LED-urilor vor aparţine fiecare câte unui jucător : vom considera că Player1 are culoarea verde, iar Player2 are culoarea roşie. Pentru a avea porturi suficiente la care să conectez matricea, am ales ca dimensiunea acesteia să fie de 5×7.

Matricea de LED-uri este fixată pe o plăcuţă de test, împreună cu 7 butoane, care reprezentă modul de interacţiune cu jocul. Altfel spus, fiecare buton este asociat unei coloane, iar la apăsarea acestuia de către jucătorul curent, un disc în culoarea acestuia se va poziţiona pe coloana aleasă, în primul spaţiu disponibil.

Conexiunea plăcii de test cu placa principală care conţine microcontroller-ul este realizată prin conectarea celor 3 porturi I/O : PORTA, PORTC, PORTD.

Schema bloc:

Hardware Design

Listă piese:

  • plăcuţa realizată la etapa I
  • plăcuţă test
  • barete pini
  • matrice LED-uri, KINGBRIGHT TBC20-11EGWA
  • 7 butoane
  • 10 rezistențe 1KΩ (pentru protecţia LED-urilor)
  • 6 conectori de tip “mamă” (pentru conexiunea între plăci)
  • fire de legătură

Am achiziţionat piesele de la magazinele Comet, Conex şi Syscom.

Schema electrică:

Modul de conectare al matricei de LED-uri:

Pe baza datasheet-ului, am identificat modul de comandă al matricei şi utilitatea fiecărui pin, după cum urmează:

Pin Matrice Reprezintă Conectat la
2 coloana 1 PC6
10 coloana 2 PC5
1 coloana 3 PC4
7 coloana 4 PC3
11 coloana 5 PC2
20 coloana 6 PC1
12 coloana 7 PC0
18 rând 1, verde PA4
3 rând 2, verde PA3
5 rând 3, verde PA2
13 rând 4, verde PA1
8 rând 5, verde PA0
19 rând 1, roşu PD4
4 rând 2, roşu PD3
6 rând 3, roşu PD2
14 rând 4, roşu PD1
9 rând 5, roşu PD0

Software Design

  • mediu de dezvoltare: Programmer's Notepad
  • compilator: avr-gcc

Rezultate Obţinute

Aşa arata proiectul, după ce am terminat de lipit :

Aşa arată proiectul meu după ce l-am programat şi finalizat:

Am şi filmat modul de utilizare al proiectului:

Concluzii

1. Letconul pe care îl aveam era prea vechi şi nu m-a ajutat să duc la bun sfârşit proiectul. Când a început să-mi ardă plăcuţa de test, am luat decizia de a cumpăra unul nou.

2. Dacă te panichezi la începutul proiectului şi vrei să le faci pe toate deodata, nu reuşeşti de fapt să faci nimic.

3. Am petrecut destul de mult timp lipind fire si fiindu-mi frică să nu lipesc pinii foarte apropiaţi între ei.

4. Sunt foarte încântată că am obţinut ceva funcţional. :-)

Download

Arhiva care conţine schema în Eagle pentru plăcuţa de test şi programul încărcat pe microprocesor: cristiana_predoiu.zip

Jurnal

Etapa 1:

  • Am fost pe Maica Domnului să-mi cumpăr componente pentru plăcuţa de bază
  • Participare la Plăcutziada 2013
  • Lipit componente la laboratorul de proiect şi acasă
  • Debugging, în urma căruia s-a constatat că unisem Vcc-ul cu Gnd :-)
  • În final, plăcuţa era “viiie”

Etapa 2:

  • Am comandat matricea de LED-uri de la Comet. Când m-am dus să o ridic, mi-am luat şi rezistenţe, butoane şi barete de pini. Încă nu ştiam ce fire voi folosi şi m-am resemnat cu gândul că voi mai veni pe Maica Domnului
  • M-am uitat pe site-ul celor de la Conex şi m-am decis să iau o panglică de fire colorate, plus 6 conectori de tip “mamă”, pentru a putea conecta plăcuţele între ele
    • În fiecare conector, trebuiau să intre 10 fire, ceea ce înseamnă că a trebuit să fac asta pentru 60 de fire, operaţiune destul de migăloasă
  • M-am apucat să lipesc, dar a trebuit să mă gândesc cum conectez firele la pinii matricei. M-a ajutat datasheet-ul acesteia, pentru a înţelege cum sunt dispuse LED-urile şi cum pot comanda aprinderea acestora
  • După ce am terminat de lipit, am scris un program minimal care să-mi aprindă un LED în funcţie de butonul apăsat (fără logica jocului în sine) şi a funcţionat, de unde am dedus că am facut conexiunile bine. Mai târziu în acea zi, am vrut să continui, dar plăcuţa mea nu mai este recunoscută ca device :-(

Etapa 3:

  • Am rescris bootloader-ul de câteva ori la laborator, am finalizat partea software, am încărcat-o pe plăcuţă şi acum plăcuţa este funcţională
  • Am o mică problemă, în sensul că una dintre coloane nu este funcţională, deoarece butonul asociat cu controlul acesteia nu răspunde la comenzi. La începerea jocului, este aprins un LED de pe acea coloană, dar mai departe nu va putea fi utilizată coloana. În rest, totul funcţionează cum trebuie

Bibliografie/Resurse

pm/prj2013/dtudose/connect4.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