Irineu BĂRBIERU - Memory Game
Autorul poate fi contactat la adresa: Login pentru adresa
Introducere
Proiectul consta in redarea diferitor secvente de aprindere de led-uri. Player-ul trebuie dupa aceea sa reconstituie secventa prin apasarea unor butoane, specifice fiecarui led. Daca reuseste sa reproduca ordinea in mod corect, va trece mai departe. De asemenea, jucatorul va avea un anumit numar de vieti.
Descriere generală
Hardware Design
Lista de piese:
Placa de baza
10 led-uri albastre
10 butoane pentru aprindere led-uri
1 buton pentru resetarea jocului
10 rezistente pentru led-uri (1K)
fire de legatura pentru componente
placa de test
cabluri mama-mama pentru conectarea pinilor dintre placa de test si plaza de baza
bareta de pini(21 vor fi folositi)
Schema electrica:
Pentru realizarea schemei electrice am folosit utilitarul Eagle (6.5.0)
Software Design
Descrierea codului aplicaţiei (firmware):
compilator: Avr-gcc(in forma precompilata WinAVR)
mediu de dezvoltare: Programmer's Notepad
librării: avr-libc, stdlib
Bootloader pentru programarea microcontroller-ului
surse şi funcţii implementate:
proiect.c → sursa in care am implementat toate functiile:
main()
run_game() → functia de start a jocului
led_on(index) → primeste un index pe baza caruia se va aprinde led-ul corespunzator din array
getIndexOfButtonPressed() → determina ce buton a fost apasat si intoarce indexul corespunzator din array
initializare() → setez pinii in mod corespunzator, impreuna cu rezistentele de pull-up pentru butoane
start_or_final_seq() → secventa de afisare a led-urilor pentru inceputul/sfarsitul jocului
castig_runda() → secventa de afisare a led-urilor pentru cand se termina o runda
pierdut_runda() → secventa de afisare a led-urilor pentru cand s-a gresit reproducerea rundei si se reia etapa de la inceput
sfarsit_etapa() → secventa de afisare a led-urilor pentru cand jucatorul a reprodus in mod corect toate rundele din etapa curenta, trecandu-se astfel la urmatoarea etapa
Rezultate Obţinute
A fost un proiect frumos pe care am reusit sa il termin, tinand cont de ce mi-am propus sa realizez.
Rezultatul este un joc interesant ce testeaza memoria.
Acesta se desfasoara in felul urmator:
La inceputul jocului dimensiunea secventei de reprodus, am setat-o ca fiind 2, insa aceasta se poate modifica usor prin intermediul macro-ului INITIAL_SEQ_SIZE
Exista un numar maxim de etape ce se poata seta prin macro-ul MAX_SEQ_SIZE
Numarul de runde din cadrul unei etape se poate seta si el prin intermediul macro-ului ROUND_PER_STAGE


https://www.youtube.com/watch?v=sy6Plv9KA70
Concluzii
In urma proiectului am deprins o mica experienta in privinta lipirii componentelor.
Foarte important este ca, inainte sa ma apuc sa lipesc, trebuia sa imi realizez un plan mai bun, intrucat desi la exterior piesele lipite arata bine, prin pozitionarea lor nu chiar foarte inteligenta, mi-am facut singur viata mai grea la etapa de cablare a acestora.
Totusi, trebuie sa spun ca mi-a placut proiectul, fiind si unul practic, eu neimplicandu-ma pana acum in activitati de acest gen.
Download
Jurnal
Achizitionare componente placa de baza
Lipirea acestora
Achizitionare componente placa de test
Lipirea acestora
Cablarea acestora
Dezvoltarea software-ului
Prezentare proiect
Bibliografie/Resurse
Schema placa de baza
Laborator 0