Differences

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

Link to this comparison view

pm:prj2023:gpatru:teodor.tiron [2023/05/06 21:08]
teodor.tiron [Hardware Design]
pm:prj2023:gpatru:teodor.tiron [2023/05/29 15:55] (current)
teodor.tiron [Rezultate Obţinute]
Line 1: Line 1:
 ====== Sequence Guess Game ====== ====== Sequence Guess Game ======
 ===== Introducere ===== ===== Introducere =====
-Proiectul implementează un joc de tipul [[https://​en.wikipedia.org/​wiki/​Mastermind_(board_game)|Mastermind]]. Scopul jucătorului este să ghicească o secvență aleatoare de simboluri generate de Arduino prin încercări repetate, acesta primind indicii de fiecare dată. Am pornit de la ideea jocului [[https://​www.nytimes.com/​games/​wordle/​index.html|Wordle]],​ a cărui concept e similar, însă în loc de secvențe aleatoare se folosesc cuvinte din limba engleză. Jocul este interesant și poate fi folosit pentru a antrena abilitățiile logice ale jucătorului.+Proiectul implementează un joc de tipul [[https://​en.wikipedia.org/​wiki/​Mastermind_(board_game)|Mastermind]]. Scopul jucătorului este să ghicească o secvență aleatoare de simboluri ​unice generate de Arduino prin încercări repetate, acesta primind indicii de fiecare dată. Am pornit de la ideea jocului [[https://​www.nytimes.com/​games/​wordle/​index.html|Wordle]],​ a cărui concept e similar, însă în loc de secvențe aleatoare se folosesc cuvinte din limba engleză. Jocul este interesant și poate fi folosit pentru a antrena abilitățiile logice ale jucătorului.
 ===== Descriere generală ===== ===== Descriere generală =====
 {{ :​pm:​prj2023:​gpatru:​tiron_schema_block.png?​nolink&​300 |}} {{ :​pm:​prj2023:​gpatru:​tiron_schema_block.png?​nolink&​300 |}}
   * Joystick-ul este folosit pentru a permite jucătorului să introducă secvența dorită (prin mișcarea stânga-dreapta se selectează poziția, iar prin mișcarea sus-jos se selectează simboluri de la 1 la 9).   * Joystick-ul este folosit pentru a permite jucătorului să introducă secvența dorită (prin mișcarea stânga-dreapta se selectează poziția, iar prin mișcarea sus-jos se selectează simboluri de la 1 la 9).
-  * Pe ecranul LCD 16 x 2 se va afișa ultima încercare pe prima linie și secvența curentă pe a doua linie. Jucătorul va putea naviga în istoric, vizualizând și celelalte încercări,​ nu doar ultima+  * Pe ecranul LCD 16 x 2 se va afișa ultima încercare pe prima treime, ​secvența curentă pe a doua treime și timpul rămas pe a treia. Jucătorul va putea naviga în istoric, vizualizând și celelalte încercări,​ nu doar ultima.
   * LED-urile se vor aprinde corespunzător (câte un led verde pentru fiecare simbol pus corect în poziția corectă și câte un led galben pentru fiecare simbol corect dar pus în poziție incorectă). LED-urile se vor ajusta în funcție de încercarea vizualizată.   * LED-urile se vor aprinde corespunzător (câte un led verde pentru fiecare simbol pus corect în poziția corectă și câte un led galben pentru fiecare simbol corect dar pus în poziție incorectă). LED-urile se vor ajusta în funcție de încercarea vizualizată.
-  * Buzzer-ul va semnala sonor fiecare acțiune a jucătorului. În plus, dacă modul contra-timp este activat, când timpul alocat este aproape de a expira, buzzer-ul va emite semnale sonore de avertisment.+  * Când timpul alocat este aproape de a expira, buzzer-ul va emite semnale sonore de avertisment.
  
 ===== Hardware Design ===== ===== Hardware Design =====
Line 16: Line 16:
   * Buzzer pasiv   * Buzzer pasiv
   * LED-uri verzi și galbene   * LED-uri verzi și galbene
-<note tip> +  ​Rezistențefire, breadboard 
-Aici puneţi tot ce ţine de hardware design: +
-  ​listă de piese +
-  * scheme electrice (se pot lua şi de pe Internet şi din datasheet-urie.g. http://​www.captain.at/​electronic-atmega16-mmc-schematic.png) +
-  * diagrame de semnal  +
-  * rezultatele simulării +
-</​note>​+
  
 ===== Software Design ===== ===== Software Design =====
 +Proiectul folosește următoarele funcționalităti ale plăcii Arduino:
 +  * Biblioteca [[https://​www.arduinolibraries.info/​libraries/​liquid-crystal-i2-c|LiquidCrystal_I2C.h]] pentru programarea ecranului LCD prin I2C
 +  * Pinii analogici A0 și A1 și ADC-ul plăcii pentru a citi starea joystick-ului
 +  * Funcția tone() pentru a genera sunete pe buzzer
 +  * Timer-ul 1 pentru a temporiza trecerea secundelor
  
- +Pentru a genera o secvență ​de 4 cifre aleatoare care nu se repetăam observat că metoda evidentă (generează câte o cifră și verifică dacă egală cu vreo cifră generată anteriornu e eficientă, iar placa stătea blocată încercând ​să genereze secvența. Pentru a genera mai rapid o secvență, am folosit algoritmul [[https://​en.wikipedia.org/​wiki/​Fisher%E2%80%93Yates_shuffle|Fisher-Yates]] aplicat pe un vector care conține toate cifrele de la 0 la 9.
-<note tip> +
-Descrierea codului aplicaţiei (firmware):​ +
-  * mediu de dezvoltare (if any) (e.g. AVR StudioCodeVisionAVR) +
-  * librării şi surse 3rd-party ​(e.g. Procyon AVRlib) +
-  * algoritmi şi structuri pe care plănuiţi ​să le implementaţi +
-  * (etapa 3) surse şi funcţii implementate +
-</note>+
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
 +<​html>​
 +<iframe width="​560"​ height="​315"​ src="​https://​www.youtube.com/​embed/​xZxWKLp9nIY"​ title="​YouTube video player"​ frameborder="​0"​ allow="​accelerometer;​ autoplay; clipboard-write;​ encrypted-media;​ gyroscope; picture-in-picture;​ web-share"​ allowfullscreen></​iframe>​
 +</​html>​
  
-<note tip> 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. 
-</​note>​ 
  
-===== Concluzii ===== 
  
 ===== Download ===== ===== Download =====
 +{{:​pm:​prj2023:​gpatru:​proiectpm_tiron.zip|}}
  
-<note warning> 
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). 
- 
-Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:​pm:​prj20??:​c?​** sau **:​pm:​prj20??:​c?:​nume_student** (dacă este cazul). **Exemplu:​** Dumitru Alin, 331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**. 
-</​note>​ 
- 
-===== Jurnal ===== 
  
-<note tip> 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. 
-</​note>​ 
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
pm/prj2023/gpatru/teodor.tiron.1683396497.txt.gz · Last modified: 2023/05/06 21:08 by teodor.tiron
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