Table of Contents

Mikele SHTEMBARI - Memory Game

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Scopul proiectului este realizarea unui joc de memorie, jucat de un singur jucator.

Vor fi amplasate 8 leduri si 8 butoane (1 pentru fiecare led). In fiecare round un anumit pattern este afisat (determinat de aprinderea secventiala a ledurilor). Dupa afisare, jucatorul apasa pe butoanele respective fiecarui led. Exista si un buton petru a reseta jocul. De asemenea exista si un led RGB, care arata culori diferite in functia starii de program (e.g. Afisare unui pattern, asteptare apasare butoane de la jucator, joc pierdut, joc castigat) Exista si un sunet diferit pentru fiecare led cand aceste se aprind.

Aceasta idee a pornit de la un joc numit Simon. Mie imi place acest tip de joc (short-term memory).

Acest proiect poate fi util pentru cei care vor sa vada limitele memoriei sau short-term si, de ce nu, a imbunatati acest parte a memoriei.

Descriere generală

Schema bloc

Descriere

Jocul incepe imediat dupa aprinderea placutei. Se genereaza un pattern aleator destul de lung, care este salvat in memorie. In fiecare runda se aprind i+1 leduri. Dupa ce jucatorul apasa butoanele se verifica raspunsul. Intre timp, fiecare actiune (aprindere led, apasare buton, pierdere joc, castigare runda, etc) e insotita si cu un sunet de la un buzzer.

Hardware Design

Schema electrica

Software Design

Mediul de dezvoltare folosit

Functii si detalii implementare

In dezvoltarea codului am plecat de la scheletul de cod folosit in primele 3 laboratoare.

Probleme

void blink_led(int led, int i) {
	if(i == 6) {
		PORTD |= (1 << led);
		tone(notes[led]);
		_delay_ms(400);
 
		PORTD &= ~(1 << led);
		no_tone();
		_delay_ms(150);
		return;
	}
	PORTA |= (1 << led);
	tone(notes[led]);
	_delay_ms(400);
 
	PORTA &= ~(1 << led);
	no_tone();
	_delay_ms(150);
 
}

Rezultate Obţinute

In rest, proectul functioneaza cum trebuie. Mai jos sunt niste poze si un video ce arata un test.


Concluzii

A fost un proiect interesant, in special partea hardware (lipirea componentelor), fiind pentru mine prima ora ce fac asa ceva. Chiar daca au aparut niste probleme hardware (portul PA6 nefunctional, led-ul rgb nefunctional,bootloadHIV GUI nefunctional) am reusit sa termin proiectul inainte de termenul limita si el sa functioneze cum trebuie.
Cred ca cu cunostintele luate acum si de la proiect, in viitor o sa fac si proiecte mai complicate cu microcontrolere.

Download

Schema in EAGLE: mg_msh_schema_elec.sch
Arhiva cu codul sursa: memory_game_shtembari_mikele_332cb.zip
Fisierus executabil: executabil.zip
Video test: https://youtu.be/wAdBj1Y2qDs

Jurnal

(2015)

Bibliografie/Resurse

Resurse software
Datasheet ATMEGA: http://cs.curs.pub.ro/wiki/pm/_media/doc8272.pdf
Bootloader: http://cs.curs.pub.ro/wiki/pm/_media/bootloader_2015.zip
Schema PCB si placa proiect: http://cs.curs.pub.ro/wiki/pm/_media/cablaj/2015/pm2015.zip
Jocul Simon Says: https://www.mathsisfun.com/games/simon-says-game.html
Schelet de cod: http://cs.curs.pub.ro/wiki/pm/lab/lab1 , http://cs.curs.pub.ro/wiki/pm/lab/lab2 , http://cs.curs.pub.ro/wiki/pm/lab/lab3
WinAVR si Programmer's Notepad: http://winavr.sourceforge.net/
EAGLE: http://www.cadsoftusa.com/

Resurse hardware
Lista componente de baza: http://cs.curs.pub.ro/wiki/pm/cablaj/proiect2015
Magazin componente de baza (comanda online): http://ro.farnell.com/
Magazin componente secundare: http://adelectrocom.ro/