Autorul poate fi contactat la adresa: Login pentru adresa
Scopul proiectului este realizarea unui joc de memorie, jucat de un singur jucator.
Proiectul consta in redarea diferitor secvente de aprindere de led-uri. Player-ul trebuie dupa aceea sa reconstituie secventa prin apasarea butoanelor, specifice fiecarui led. Daca reuseste sa reproduca ordinea in mod corect, va trece la urmatoarul nivel, care consta intr-o secventa mai lunga cu o aprindere de led.
Jocul are 8 nivele, aceste fiind selectate initial prin apasarea unui buton corespunzator nivelului:
1 2
…..3 4
5 6
…..7 8
Se vor afisa secvente de LED-uri aleatoare incepand cu 1, 2, 3 …, pana la nivelul ales.
ATENTIE! Ai o singura viata.
Jocul este creat pentru relaxa utilizatorul, dar si pentru a testa atentia si memoria sa.
Lista piese:
Mediul de dezvoltare folosit:
→ Eagle 9.0.0 pentru schema electrica
→ Sublime Text 2 pentru editare
→ BootloaderHID CLI pentru incarcarea fisierului binar
→ avr-gcc pentru compilare
Functii si detalii implementare:
a) Functii de afisare “mesaje”:
void afisareInitiala()
- la inceputul fiecarui jocvoid jocCastigat()
- atunci cand s-a terminat jocul cu castigvoid jocPierdut()
- atunci cand s-a terminat jocul cu infrangerevoid rundaCastigata()
- atunci cand s-a trecut la runda urmatoareb) Functii pentru stabilirea environment-ului:
void selectareNivel()
- jucatorul apasa unul din cele 8 butoane pentru a selecta nivelulvoid activarePorturi()
- selectam PB pentru input (butoane) si PA pentru output (LED-uri)void generareSecventa(int secventa[], int runda)
- se genereaza o secventa de aprinderi ale LED-urilor pentru runda curentac) Functii de back-end:
void aprindeLed(int led)
- face blink pe LED-ul ledint verificareButoane(int secventa[], int runda)
- citeste de pe butoane si verifica daca este secventa corect introdusavoid play(int secventa[])
- functia principala a joculuiint main(void)
- main-ul programului
Proiectul a reusit, functioneaza foarte bine conform standardelor mele de apreciere, fiind primul proiect fizic si cu cod la care am lucrat.
Prima problema a fost asezatul pieselor pe placuta de test, cand am cumparat-o am crezut ca este mai mare, dar nu a fost asa, si a trebuit sa le inghesui putin.
Apoi lipitul care initial parea bine, toate aveau contact, aparent nu era asa. Am remediat repede acele probleme.
Codul l-am realizat pornind de la scheletele de cod de la laboratoare
bootloadHID, jocMemorie.c .elf .hex, Makefile, incarcarePePlaca.sh, README
pm2018_331ca_rizescueusebiu.zip
cateva poze
pm2018_331ca_rizescueusebiu_photo.zip
2015-??-?? - cateva componente ramase de la PL (LED-uri, butoane, rezistente, fire)
2018-04-07 - alegerea proiectului
2018-04-12 - achizitionarea componentelor pentru placa de baza
2018-04-17 - receptia placii de baza
2018-04-19 - gandirea proiectului, componentele necesare, schema bloc
2018-05-03 - lipirea componentelor pe placa de baza
2018-05-04 - schema electrica a proiectului (EAGLE)
2018-05-07 - achizitionarea celorlalte componente pentru placa auxiliara
2018-05-10 - lipirea componentelor pe placa auxiliara
2018-05-17 - bootloader si primul program pus pe placa
2018-05-19 - scriere cod + script pentru pus pe placa + reparat lipituri gresite + teste
2018-05-20 - finalizare documentatie (wiki, README, comentarii cod)
Resurse software
Datasheet ATMEGA: http://cs.curs.pub.ro/wiki/pm/_media/doc8272.pdf
Schema PCB si placa proiect: http://cs.curs.pub.ro/wiki/pm/cablaj/proiect2018
Bootloader: http://cs.curs.pub.ro/wiki/pm/tutorial/bootloader
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
EAGLE: http://www.cadsoftusa.com/
SublimeText2: https://www.sublimetext.com/2
Resurse hardware
Optimus digital: https://www.optimusdigital.ro
Conex electronic: https://www.conexelectronic.ro/
Contact electric (Pitesti): https://contactelectric.ro/ ← foarte ieftini