Autorul poate fi contactat la adresa: Login pentru adresa
Proiectul isi propune crearea unui joc de sah folosind un microprocesor ATMEGA324PA. Vor exista doua module:
a) Primul modul este folosit pentru input/pozitionarea pieselor si va fi alcatuit din 64 de butoane. Am luat in considerare fie folosirea unei membrane elastice (similar butoanelor de telecomanda) fie folosirea unui LCD. In cazul membranei vor exista piese reale amplasate pe tabla, care prin presiune vor completa un circuit Implementarea cu LCD presupune existenta a 64 de butoane care sa simuleze tabla. Pe LCD vor fi afisate piesele. La apasarea unui buton se va muta piesa de pe pozitia selectata(daca exista) in pozitia indicata de urmatorul buton apasat(daca mutarea este valida). Jocul va putea fi jucat de catre 2 jucatori, optional va exista si un AI simplist.
b) Al doilea modul va fi folosit pentru comanda, va memora pozitiile pieselor si va verifica corectitudinea mutarilor.
Proiectul simuleaza un joc de sah, folosind un display LCD pentru a reprezenta tabla de joc. Exista doua placute, pentru input si pentru comanda.
1. Placuta de comanda: permite desfasurarea jocului intre doi jucatori (umani). Placuta primeste semnalele de input si verifica daca mutarea primita este valida. In caz afirmativ pozitia pieselor pe LCD este alterata, altfel este afisat un mesaj de eroare. 2. Placuta de input: este alcatuita din 8 butoane (care au conectate 8 leduri ce au rol de feedback).
Am modificat designul initial care presupunea 64 butoane deoarece era greu de implementat si utilizat, ajungand de asemenea la costuri prea mari. In schimb am ales un sistem bazat pe coordonatele tabelei de sah. Dimensiunea tablei este de 8×8. Am numerotat cele 8 butoane cu indici de la 1 la 8. Astfel o piesa poate fi selectata prin apasarea succesiva a unei perechi de butoane. Mutarea piesei va necesita inca 2 apasari pentru a desemna pozitia la care se doreste ca aceasta sa ajunga.
Lista de piese: Pe langa pachetul de baza am folosit urmatoarele piese:
Alimentarea se face prin port USB de la PC/laptop la 5V. Modelul de LCD achizitionat functioneaza intre 3 si 5.5V, prin urmare nu necesita reglarea tensiunii.
Pentru implementarea codului aplicatiei am folosit AVR Studio.
Implementare:
Am declarat o matrice de caractere de 8*8. Inital aceasta este initalizata in aceasta forma:
T C N Q R N C T
P P P P P P P P
E E E E E E E E
E E E E E E E E
E E E E E E E E
E E E E E E E E
E E E E E E E E
E E E E E E E E
P P P P P P P P
T C N R Q N C T
Aceste valori reprezinta: T → tura; C→cal; N→nebun; R→rege; Q→queen; P→pion; E→empty cell.
Atunci cand se detecteaza o mutarea (4 apasari succesive) se va face un update in matricea de caractere ce reprezinta tabla, daca mutarile sunt valide. Mutarile invalide sunt ignorate.
Modul de joc este multiplayer (intre 2 jucatori). Jocul se termina cand unul din jucatori pierde regele.
Din pacate nu am reusit integrarea driverului pentru LCD. Am gasit mai multe biblioteci, insa toate erau pentru placute Arduino.
In urma proiectului, desi nu am reusit finalizarea jocului, am terminat partea de hard-ware si de implementat partea de logica (sotfware). Asa arata proiectul in momentul de fata:
Proiectul a fost foarte interesant de realizat, din pacate semestrul este ridicol din punct de vedere al incarcarii (toate materiile). Mi-as fi dorit sa mai fi avut o saptamana, pentru a putea finisa detaliile.
Am reusit sa topesc ledconul personal (varful)
Placutele de cablaj chinezesti se ard usor.
Datasheet LCD: http://www.mikrocontroller.net/attachment/260218/3.2_LCD_Module_SPEC.pdf
Datasheet ATMEGA: http://cs.curs.pub.ro/wiki/pm/_media/doc8272.pdf