This shows you the differences between two versions of the page.
pm:prj2022:sgherman:joc_spanzuratoarea [2022/05/29 21:02] cdragomir [Mod de utilizare] |
pm:prj2022:sgherman:joc_spanzuratoarea [2022/05/30 01:23] (current) cdragomir [Mod de utilizare] |
||
---|---|---|---|
Line 23: | Line 23: | ||
* 1 Matrice de leduri | * 1 Matrice de leduri | ||
* Fire tata-tata, mama-mama | * Fire tata-tata, mama-mama | ||
+ | |||
+ | ==== Reprezentarea fizica ==== | ||
+ | {{:pm:prj2022:sgherman:pm_proiect_off.jpg?600|}} | ||
+ | |||
+ | {{:pm:prj2022:sgherman:pm_proiect_on.jpg?600|}} | ||
==== Schema bloc ==== | ==== Schema bloc ==== | ||
Line 31: | Line 36: | ||
==== Mod de utilizare ==== | ==== Mod de utilizare ==== | ||
+ | **Link prezentare**: [[https://youtu.be/mWP--dmayok]] | ||
+ | |||
Pentru a introduce o anumita litera astfel incat aceasta sa fie afisata pe ecran se utilizeaza o tastatura 4x4, iar principiul de functionare | Pentru a introduce o anumita litera astfel incat aceasta sa fie afisata pe ecran se utilizeaza o tastatura 4x4, iar principiul de functionare | ||
se bazeaza pe cel al unui telefon Nokia vechi. Prin apasarea repetata a unei taste, se pot selecta, spre exemplu, literele A, B, C. Ideea se poate | se bazeaza pe cel al unui telefon Nokia vechi. Prin apasarea repetata a unei taste, se pot selecta, spre exemplu, literele A, B, C. Ideea se poate | ||
Line 37: | Line 44: | ||
{{:pm:prj2022:sgherman:pm_tastatura.jpg?300|}} | {{:pm:prj2022:sgherman:pm_tastatura.jpg?300|}} | ||
+ | <note>Taieturile cu rosu fac trimitere la faptul ca acele butoane nu sunt utilizate in cadrul acestui proiect</note> | ||
+ | |||
+ | ===== Software Design ===== | ||
+ | |||
+ | <note tip> | ||
+ | **Mediu de dezvoltare**: Arduino IDE\\ | ||
+ | **Biblioteci folosite**: LiquidCrystal_I2C.h, LedControl.h | ||
+ | </note> | ||
+ | |||
+ | ==== Descrierea codului ==== | ||
+ | |||
+ | Codul rulat pe placuta Arduino se poate gasi la acest link: [[https://github.com/cristidragomir/Joc-Spanzuratoarea/blob/main/sketch_may22a.ino]] | ||
+ | |||
+ | In partea de setup() am initializat afisarea la Serial Monitor in scop de debug. Am ales **random** indexul din lista de cuvinte interne care va fi de ghicit. Se initializeaza pinii pentru citirea inputului de la keyboard, se afiseaza mesajele de bun-venit; se seteaza literele corespunzatoare fiecarui buton de la tastatura, butonul curent si anterior apasat, statusul jocului, LCD-ul si se initializeaza poll-ul de cuvinte. | ||
+ | |||
+ | Pentru afisarea unui mesaj la ecranul LCD mi-am creat o functie specializata displayMessage() | ||
+ | care imi afiseaza mesajul fractionat, deoarece LCD-ul poate afisa maxim 32 de caractere. | ||
+ | |||
+ | In partea de loop() ne utilizam de logica din spatele unei matrice de butoane. Fiecare rand este pus pe LOW pt a marca faptul ca acel rand este analizat spre a se vedea daca un anumit buton este apasat. La randul i setat pe LOW(in timp ce celelalte sunt setate pe HIGH) se citeste daca o coloana s-a trecut pe LOW in urma apasarii. Daca da, in functie de linie si coloana se calculeaza ce buton a fost apasat. Pentru a iesi din starea 0 a jocului (abia a fost pornit Arduino) sau 2 (un joc s-a terminat) trebuie apasat ENTER. Astfel, se trece in starea 1 sau 3, iar jocul practic incepe. Cand se apasa un buton diferit de ENTER se trece in selectLetter() unde counterul tuturor tastelor se trece la 0 insemnand ca la apasarea unei alte taste se incepe de la 'A'. Daca se apasa aceeasi tasta ca cea anterioara se incrementeaza counterul unei taste, adica 'A' devine 'B', iar 'B' devine 'C', etc.. Cand se apasa tasta ENTER, avand o litera care se vrea a fi verificata se trece la functia letterSubmittedCases(). Aici, daca litera face parte din cuvant, se incrementeaza numarul de caractere ghicite din cuvant(var. globala), se va afisa un mesaj in acest sens si se va reda un efect sonor. De-asemenea, daca numarul de caractere ghicite e acelasi cu lungimea cuvantului jocul este castigat. Cam aceeasi logica, cumva negata, se aplica si atunci cand litera data spre verificare nu face parte din cuvant. La un nou joc, parametrii programului sunt resetati. | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
- | <note>08.05.2022 Creare pagina wiki</note> | + | <note>08.05.2022: Creare pagina wiki\\ |
- | ===== Bibliografie/Resurse ===== | + | 27.05.2022: Editare pagina wiki pentru milestone 2</note> |
- | [[https://ocw.cs.pub.ro/courses/_media/pm/atmel-7810-automotive-microcontrollers-atmega328p_datasheet.pdf|Atmega328p datasheet]] | + | ===== Concluzii ===== |
+ | Acest proiect a avut un impact foarte mare asupra dezvoltarii mele pe plan tehnic. Aceasta imbinare intre hard si soft mi-a dat ocazia sa-mi pun la incercare expertiza si intuitia pentru a realiza un produs finit. Am fost pus in postura de a lua multe decizii, incepand de la alegerea componentelor pana la functionalitatile ce aveau sa apara incet-incet in codul sursa. Recomand ca toti viitorii studenti sa-si dea silinta, sa-si puna mintea la contributie cu acest proiect intrucat vor avea numai de castigat. | ||
+ | |||
+ | ===== Bibliografie/Resurse ===== | ||
+ | [[https://ocw.cs.pub.ro/courses/_media/pm/atmel-7810-automotive-microcontrollers-atmega328p_datasheet.pdf|Atmega328p datasheet]]\\ | ||
+ | [[https://circuitdigest.com/microcontroller-projects/arduino-8x8-led-matrix]]\\ | ||
+ | [[https://www.optimusdigital.ro/ro/senzori-senzori-de-atingere/2441-tastatura-matriceala-4x4-cu-butoane.html?search_query=tastatura&results=55]]\\ | ||
+ | [[https://create.arduino.cc/projecthub/Arnov_Sharma_makes/lcd-i2c-tutorial-664e5a]]\\ | ||
+ | [[https://www.arduino.cc/reference/en/language/functions/random-numbers/random/]]\\ | ||
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||