Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2021:alazar:hangman_lcd [2021/05/22 18:31]
audristioiu [Software Design]
pm:prj2021:alazar:hangman_lcd [2021/05/27 19:20] (current)
audristioiu [Bibliografie/Resurse]
Line 1: Line 1:
-[[https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​alazar/​hangman_lcd|Udristioiu Alexandru Hangman]] 
 ====== Hangman LCD ====== ====== Hangman LCD ======
 === Autor : Udristioiu Alexandru === === Autor : Udristioiu Alexandru ===
Line 5: Line 4:
 === Email : udristioiualexandru@gmail.com === === Email : udristioiualexandru@gmail.com ===
 ===== Introducere ===== ===== Introducere =====
-Proiectul meu se bazeaza pe jocul Hangman(spanzuratoarea).Mesajele specifice verificarii fiecarei litere se vor afisa pe un LCD.+Proiectul meu se bazeaza pe jocul Hangman(spanzuratoarea).Mesajele specifice verificarii fiecarei litere se vor afisa pe un LCD , precum si castigarea/​pierderea jocului.
 ===== Descriere generală ===== ===== Descriere generală =====
-Voi folosi un keypad pentru introducerea literelor si voi verifica daca se afla in cuvant,​moment in care voi semnala daca aceasta exista printr-un sunet provenit de la un buzzer.Altfel va scadea numarul de vieti(3) initiale.Daca numarul de vieti este 0 atunci jocul s-a terminat(cu mesaj pe ecran + sunet). Output-ul se va afisa pe un LCD si atunci cand s-au ghicit toate literele(+ sunet). Cuvantul ce se doreste ghicit va fi citit de pe interfata seriala.Din lungimea totala a cuvantului se scade numarul de aparitii al literei ghicite.Atunci cand s-a ajuns la 0 inseamna ca acesta a fost complet gasit.Pe ecran se vor afisa si mesaje in cazul in care litera a fost deja verificata,​s-a ​gasit cate o litera(unde se afizeaza ​si numarul de aparitii + pozitia literei) ​care se regaseste ​sau ea nu exista in cuvantul dat.+Voi folosi un keypad pentru introducerea literelor si voi verifica daca se afla in cuvant,​moment in care voi semnala daca aceasta exista printr-un sunet provenit de la un buzzer.Altfel va scadea numarul de vieti(3) initiale.Daca numarul de vieti este 0 atunci jocul s-a terminat(cu mesaj pe ecran + sunet). Output-ul se va afisa pe un LCD si atunci cand s-au ghicit toate literele(+ sunet). Cuvantul ce se doreste ghicit va fi citit de pe interfata seriala.Din lungimea totala a cuvantului se scade numarul de aparitii al literei ghicite.Atunci cand s-a ajuns la 0 inseamna ca acesta a fost complet gasit.Pe ecran se vor afisa si mesaje in cazul in care litera a fost deja verificata,​s-a ​regasit in cuvantul dat(unde se afiseaza ​si numarul de aparitii + pozitia literei) sau ea nu apare .
  
  
Line 28: Line 27:
 {{:​pm:​prj2021:​alazar:​schema_electrica_hangman.png ? 400|}} {{:​pm:​prj2021:​alazar:​schema_electrica_hangman.png ? 400|}}
 ===== Software Design ===== ===== Software Design =====
-Am lucrat in mediul de dezvoltare Arduino IDE.Ca si biblioteci am folosit urmatoarele :+Am lucrat in mediul de dezvoltare ​[[https://​www.arduino.cc/​en/​software | Arduino IDE]].Ca si biblioteci am folosit urmatoarele :
   * LiquidCrystal.h - partea de LCD si interfatarea cu aceasta   * LiquidCrystal.h - partea de LCD si interfatarea cu aceasta
   * Keypad.h - lucrul cu tastatura matriceala 4x4 ( link download : [[https://​www.arduinolibraries.info/​libraries/​keypad| Keypad]] )   * Keypad.h - lucrul cu tastatura matriceala 4x4 ( link download : [[https://​www.arduinolibraries.info/​libraries/​keypad| Keypad]] )
Line 59: Line 58:
  
 3.** Win()** \\ 3.** Win()** \\
-Functie in care se ajunge daca tot cuvantul a fost ghicit.Se notifica acest fapt prin mesaj pe ecranul LCD si un sunet corespunzator.+Functie in care se ajunge daca tot cuvantul a fost ghicit.Se notifica acest fapt prin mesaj pe ecranul LCD si un sunet corespunzator.Se reseteaza variabilele folosite mai apoi.
  
 4. **endGame()** \\ 4. **endGame()** \\
-Functie in care se ajunge daca numarul de vieti a ajuns la 0(jocul a fost pierdut).Se notifica acest fapt prin mesaj pe ecranul LCD si un sunet corespunzator.+Functie in care se ajunge daca numarul de vieti a ajuns la 0(jocul a fost pierdut).Se notifica acest fapt prin mesaj pe ecranul LCD si un sunet corespunzator.Se reseteaza variabilele folosite mai apoi.
  
 5. **setup()** \\ 5. **setup()** \\
Line 70: Line 69:
 Aici a fost implementata logica jocului. Aici a fost implementata logica jocului.
  
-Prima oara se citeste cuvantul de pe interfata pe baza caruia sunt setate variabilele len,​flag,​count si v.+Prima oara se citeste cuvantul de pe interfata pe baza caruia sunt setate variabilele len,​flag,​count si v.Pentru afisarea unei variabile de tip String pe LCD am facut conversia la un vector de char prin [[https://​www.arduino.cc/​reference/​en/​language/​variables/​data-types/​string/​functions/​tochararray/​|toCharArray()]] si dupa am afisat. 
 Apoi se preia cheia apasata si se incepe verificarea literelor.getIdx este o variabila folosita pentru a salva cheia apasata. Apoi se preia cheia apasata si se incepe verificarea literelor.getIdx este o variabila folosita pentru a salva cheia apasata.
  
 +Pentru cheia 7 verific litera obtinuta si pentru celelalte de la 0 la 9 pun in vector numarul de apasari care se
 +reseteaza daca a fost apasat de mai mult de 3 ori)..Primele 4 litere(a,​b,​c,​d) au fost initializate cu cele de pe tastatura.
  
-Pentru ​tastele de la 0 la 9 (fara 7 care il folosesc drept Ok pentru verificarea fiecarei litere) am asociat literele cu numarul ​de apasari ​(readme pentru taste este pus in arhiva).Primele 4 litere(a,b,c,d) au fost initializate cu cele de pe tastatura.+Pentru ​verificare prima oara selectez litera pe care o caut pe baza numarului ​de apasari ​si tastei,apoi verific daca ea a mai fost apasata deja si dupa apelez functia CheckKeypad.
  
-Pentru sunete am folosit functia [[https://​www.arduino.cc/​reference/​en/​language/​functions/​advanced-io/​tone/​ | tone()]] ce genereaza un semnal de PWM cu 50% duty cycle (pin-ul pe care este setat trebuie sa aiba PWM).+Pentru sunete am folosit functia [[https://​www.arduino.cc/​reference/​en/​language/​functions/​advanced-io/​tone/​ | tone()]] ce genereaza un semnal de PWM cu 50% duty cycle (pin-ul pe care este setat trebuie sa aiba suport pentru ​PWM).
  
-Pentru afisarea unei variabile de tip String pe LCD am facut conversia la un vector de char prin [[https://​www.arduino.cc/​reference/​en/​language/​variables/​data-types/​string/​functions/​tochararray/​|toCharArray()]] si dupa am afisat. 
  
  
Line 107: Line 108:
 Demo-ul proiectului se gaseste pe drive aici : [[https://​drive.google.com/​drive/​folders/​1wDem01Oq5A7P9Lzj5jDHa0qNywRQYeyI|Hangman_demo]] Demo-ul proiectului se gaseste pe drive aici : [[https://​drive.google.com/​drive/​folders/​1wDem01Oq5A7P9Lzj5jDHa0qNywRQYeyI|Hangman_demo]]
 ===== Concluzii ===== ===== Concluzii =====
-A fost un proiect interesant.Consider ca este o experienta din care am foarte multe de invatat,chiar daca implementarea jocului a fost destul de simpla.+A fost un proiect interesant.Consider ca este o experienta din care am foarte multe de invatat.
 ===== Download ===== ===== Download =====
-In arhiva se afla fisierul Arduino si un readme pentru asocierile ​taste-numar apasari-litera.+In arhiva se afla fisierul Arduino si un readme pentru asocierile ​litera-tasta:
 {{:​pm:​prj2021:​alazar:​331cb_udristioiualexandru_hangman.zip|}} {{:​pm:​prj2021:​alazar:​331cb_udristioiualexandru_hangman.zip|}}
 ===== Jurnal ===== ===== Jurnal =====
Line 119: Line 120:
 * 14 mai - Realizare montaj \\ * 14 mai - Realizare montaj \\
 * 16 mai - Imbunatatire cod si verificare pe montaj \\ * 16 mai - Imbunatatire cod si verificare pe montaj \\
 +* 25 mai - Finalizare pagina wiki
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​PDF</​a></​html>​
Line 129: Line 131:
 * https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab6-2021 - LCD \\ * https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab6-2021 - LCD \\
 * Schema bloc a fost facuta in  [[https://​app.diagrams.net]] \\ * Schema bloc a fost facuta in  [[https://​app.diagrams.net]] \\
-* Schema electrica a fost facuta in [[https://​www.tinkercad.com/​dashboard]] ​+* Schema electrica a fost facuta in [[https://​www.tinkercad.com/​dashboard]] 
pm/prj2021/alazar/hangman_lcd.1621697464.txt.gz · Last modified: 2021/05/22 18:31 by audristioiu
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