Table of Contents

Introducere

Pandia Gheorghe

grupa 331 CC

Dame-șah : Proiect PM 2010

Proiectul prezentat în cele ce urmează permite a 2 jucători să joace dame-șah pe o matrice de led-uri bi-colore cu 3 terminale, astfel încât fiecare led are de fapt posibilitatea de a emite 3 culori, toate acestea 3 fiind folosite în cadrul display-ului pentru o mai bună experiență grafică.

Scopul proiectului este de a demonstra folosirea microcontrollerului Atmega16 în crearea unui joc grafic pe o matrice de led-uri controlate prin semnale electrice.

Ideea proiectului a fost jocul original dame-șah și anume un joc pe o tablă de șah în care există numai pioni ce se mișcă doar pe diagonală și pot sări peste piesele jucătorului sau ale inamicului. Scopul este de a ajunge în poziția inițială a celuilalt jucător înainte lui.

Pentru mine acest proiect reprezintă o metodă de aprofundare a cunoștințelor legate de proiectarea cu microprocesoare.

Descriere generală

descriere_generala_gheorghe_pandia.jpg

Jocul reprezinta confruntarea intre doi jucatori (rosu si verde in cazul meu) cu scopul de a ajunge la pozitia initala a celuilalt. Jucatorilor le este permis sa faca mutari doar pe diagonala si pot sari peste piesele proprii si ale adversarului.

Proiectul meu ce realizeaza jocul respectiv consta in 2 module de control (6 butoane pentru fiecare jucator - insa setate pe aceiasi pini, motiv pentru care se poate spune ca jocul merge jucat doar pe „buna credință”, pentru că fiecare jucator poate afecta mutarile celuilalt) ce interactionează direct cu microcontrollerul ATmega16, acesta controland prin semnale multiplexate in timp matricea de leduri.

Schema bloc am realizat-o cu interfața de use-case-uri din StarUML și am transformat-o în poză prin metoda „Print Screen”:

Hardware Design

Listă de piese:

Schema electrică a proiectului - exportată de ISIS Proteus 7 și salvată în format png.

Este micșorată cu ajutorul lui wiki - Pentru vizualizare în detaliu click ;-).

Schema de mai sus ar putea funcționa pentru led-uri tricolore (cele două culori și amândouă o dată). Din nefericire am refăcut schema pentru led-uri bicolore cu 3 terminale (De asemenea micșorată prin wiki):

Din nefericire simularea a mers foarte încet pe PC și a trebuit să testez proiectul direct pe montaj.

În urma montării și testării am observat că greșisem din punct de vedere al schemei și am modificat-o după cum urmează:

Alimentarea plăcii se poate face la 5V prin USB-ul calculatorului sau la voltaj între 7-12V de la o sursă externă care prin stabilizator va genera de asemenea 5V.

Prima versiune a proiectului:

Deși nu se observă din cauza blitz-ului, matricea de led-uri este aprinsă aleator, fără măcar un delay. Rezultatul a fost că Atmega16 nu poate face switch suficient de rapid ca led-urile să apară perfect stinse și nici la intensitate maximă. Deși ce cu intensitatea maximă nu deranjează, led-urile aprinse foarte puțin încurcă experiența jocului.

De asemenea există led-ul de pe placa de bază (cel verde din stânga sus) care pe lângă consumul de intesitate emite și o lumină foarte puternică mascând pe celelalte. Am eliminat posibilitatea de alimentare la 7-12V rămânând doar cu alimentarea prin USB. De asemenea am tăiat curentul prin led-ul ce indica funcționarea plăcii de bază pentru a beneficia de mai multă intensitate și o experiență mai bună de joc.

În urma eliminării elementelor, placa de bază are următorul circuit:

Se poate observa că am folosit o plăcuță de test cu conexiuni făcute câte 3, lucru care m-a avantajat la legături și mi-a permis să folosesc spațiul mai eficient având astfel o placă de bază de dimensiuni mult mai mici.

Construcția proiectului a fost un challenge mai mare decât mă așteptam:

În centrul pozei se observă matricea de led-uri cu 3 terminale.

Proiectul finalizat arată în felul următor:

Unde controalele reprezintă Sus, Jos, Stânga, Dreapta, Enter și Back pentru fiecare jucător, cu următoarele însemări:

Software Design

Pentru realizarea proiectului am folosit mediul AVR Studio 4.3 și ISIS Proteus 7.6.

Programul folosește o matrice de 8 pe 8 cu valori de la 0 la 3 după cum urmează:

Pentru controlul mutărilor se va folosi citirea intrărilor de pe butoanele din portul C. Va exista multiplexare în timp, la un moment dat fiind aprins un singur led, astfel permițând controlul culorii acestuia.

Funcții implementate

Rezultate Obţinute

In afara de cateva degete arse ;) in urma proiectului am dobandit cunostinte noi despre modul de folosire al led-urilor, in special cele bicolore organizate intr-o matrice si de asemenea utilizrea circuitelor integrate, multiplexare in timp etc.

A fost o experienta extraordinara si mi-as fi dorit sa ii acord mai mult timp.

Am reușit cu succes să creez jocul dameșah în totalitate, chiar dacă nu i-am adăugat model de restart sau de „win game”, se poate juca oricând și chiar e mai fun decât cel obișnuit :)

Am postat și un film când jucam cu mine însumi, scuze pentru lipsa de sunet și calitate… am pierdut destule ore încercând să găsesc un convertor free cât de cât ok fără watermark sau înregistrare online de 1$ pe cine știe ce site și tot nu am găsit… așa că l-am lăsat așa. Enjoy!

Playin...

Ce se întâmplă de fapt?

Sunt doi jucători, roșu și verde. În momentul în care selectezi o piesă cu butonul „Enter” îți apar cu galben toate opțiunile de mutare, cu tot cu sărit peste piese, calculate în întregime, lăsând posibilitatea jucătorului de a alege mutarea.

Dacă mutările posibile nu sunt mulțumitoare, se poate oricând apăsa butonul „Back” și selecta altă piesă. Dacă se apasă Enter cu o mutare posibilă selectată, aceasta devine realitate și îi vine rândul celuilalt jucător.

Concluzii

Microcontrollere sunt foarte capabile să efectueze funcții foarte complexe foarte rapid. Astfel, la frecvențe foarte mari (16MHz) se poate obține un afișaj care pare continuu prin apriderea la intervale foarte mici a unei matrici de leduri.

Download

Arhiva ce conține fișierul sursă, makefile și designul din ISIS Proteus:pandia-gheorghe-331cc.zip

Bibliografie/Resurse

Resurse Software

Resurse Hardware