Alexandru TOMA (87689) - Memory test

Autorul poate fi contactat la adresa: alexandru.toma1412@stud.acs.upb.ro

Introducere

Proiectul consta in testarea memoriei, atentiei si intuitiei utilizatorului. Se vor efectua mai multe teste, fiecare dintre acestea fiind evaluate acordandu-se un scor din intervalul 0-5. Proiectul este util pentru efectuarea testarii psihologice.

Descriere generala

Primul test va presupune aprinderea unei secvente de leduri, intr-un ritm alert, pe care utilizatorul trebuie sa o retina si sa o reproduca cu ajutorul butoanelor, folosind memoria vizuala.

Urmatorul test, asemanator cu primul, va presupune si emiterea unei note muzicale cu o anumita frecventa, ambele in functie de pozitia ledului aprins in matrice pentru a observa cum influnteaza sunetele memoria.

Urmatoarele doua teste vor testa atentia si viteza de reactie: la aprinderea unui led (cu si fara emiterea notei corespunzatoare) utilizatorul va apasa cat mai repede posibil butonul corespunzator, avand un timp limitat.

Ultimul test va presupune emiterea unor note muzicale, fara aprinderea ledurilor corespunzatoare, iar utilizatorul va trebui sa intuiasca pozitia acestora in matrice pe baza tipului si frecventei acesteia si a experientelor anterioare si sa apese butonul corespunzator.

La sfarsitul fiecarui test se va afisa un scor din intervalul 0-5.

Schema bloc

Schema bloc

Hardware Design

Lista de piese

  • PCB PM2019
  • Microcontroller ATMega324
  • Componente de baza
  • Matrice de leduri (5×5)
  • Matrice de butoane (5×5)
  • Buzzer pasiv
  • Rezistente
  • Condensator
  • Fire

Schema electrica

Schema electrica

Datorita numarului mare de componente (25 de leduri si 25 de butoane) nu am putut folosi un pin pentru fiecare componenta, asa ca le-am grupat pe linii si pe coloane. Astfel ledurile de pe aceeasi linie au plusul comun, iar cele de pe aceeasi coloana au minusul comun. Analog si pentru butoane.

Software Design

Am folosit Sublime pentru a scrie codul, acesta fiind dezvolat pe Linux. Programul este impartit in 3 mari parti:

1. Initializarea componentelor utilizate
2. Testarea functionalitatii componentelor
3. Efectuarea testului

Prima parte presupune efectuarea configurarilor necesare functionarii.

A doua parte presupune testatrea pe rand a componentelor: emiterea unor note muzicale de diferite frecvente pentru buzzer, aprinderea fiecarui led, aprinderea ledului corespunzator in momentul apasarii unui buton.

A treia parte presupune efectuarea testelor si afisararea rezultatelor. Primele doua si al patrulea nivel sunt implementate folosind aceeasi functie, diferenta dintre ele fiind doar efectuarea/neefectuarea aprinderii ledului si respectiv emiterii notei, parametrul transmis permitand gestionarea. Al treilea si al patrulea nivel sunt implementate folosind aceeasi functie, efectuarea/neefectuarea emiterii notei fiind gestionata prin parametru.

Datorita faptului ca fiecare pin controla o linie/coloana de leduri, acestea erau initial polarizate invers (pinii conectati la linii adica la bornele pozitive ale ledurilor erau pusi pe 0 iar pinii conectati la coloane adica la bornele negative ale ledurilor erau pusi pe 1). Pentru aprinderea unui led este necesara polarizarea corecta. Astfel se va schimba atat valoarea pinului pentru linie cat si pentru coloana. Aceasta schimbare va afecta si celelalte leduri de pe aceeasi linie si respectiv de pe aceeasi coloana, insa acestea vor avea neschimbata valoarea celeilate borne, deci vor ramane stinse, ledul de la intersectia coloanei cu linia fiind singur cu valorile ambelor borne schimbate, deci aprins. Pentru butoanea am folosit o strategie asemanatoare: iterez ciclic prin linii si pun valoarea 0 pe pinul corespunzator. Daca un buton de pe acea linie este apasat atunci el va inchide circuitul si pune valoarea 0 pe coloana sa. Avand rezistenta de pull-up activata si 1 pe toate celelalte linii este clar ca acea coloana are valoarea 0 deoarece butonul de la intersectia acelei coloane cu linia curenta (pe care am pus 0) este apasat.

Rezultate obtinute

Am reusit sa implementez atat partea de hardware cat si partea de software. Ambele sunt perfect functionale. alexandru_toma-rezultat1.jpg alexandru_toma-rezultat2.jpg

Concluzii

A fost un proiect inedit si interesant. Am muncit mult pentru realizarea lui. Partea de hardware a fost mai dificila, iar realizarea acesteia a fost anevoioasa avand in vedere lipsa mea de experienta. Dezvoltarea partii de software a curs foarte lin.

Download

Arhiva poate fi descarcata de aici.

Bibliografie/Resurse

pm/prj2019/ctranca/memory-test.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0